Overview
Phone Revival Lab is my ongoing effort to turn discarded, screenless phone and tablet motherboards into headless compute nodes and dedicated Linux appliances. I work through device recovery, bootloader reverse-engineering, Linux kernel bring-up, networking, and remote access to give hardware with broken displays or dead radios a useful second role.
Each device presents a different engineering problem depending on its SoC, bootloader lock state, PMIC battery checks, and upstream kernel coverage. Every board in the lab has a dedicated hardware bring-up record on the Devices & Hardware Ports page:
Active & Experimental Boards in the Lab (9 Documented Targets)
- Xiaomi Mi 8 (dipper) (
Snapdragon 845 SDM845, aarch64) — Mainline Linux 7.1.0-rc1 + postmarketOS port on 6 GB RAM / 128 GB UFS with Samsung EA8074 AMOLED DRM panel, Adreno 630 Freedreno GPU, ST FTS5 touch, TAS2557 + WCD9340 audio, 60–80% USB charge limiting, and a deep-dive on debugging the 16-second interconnectsync_state()hang without UART. - Exper Easypad 8 (Model T8E) (
Allwinner A31s, ARMv7) — Mainline Linux 7.2 + Alpine 3.20 booting non-destructively from MicroSD with DRM LVDS/HDMI, Cedrus video decode, PowerVR SGX544 MP2 GPU bring-up, and a wireless Android Auto head unit. - Piranha Business II Tab 9.0" (
Allwinner A10, ARMv7) — Mainline Linux 6.6 LTS + Alpine 3.21 headless node running on ~23 MB idle RAM with Lima MALI-400 GPU and Cedar VE support. - Samsung Galaxy S8 (SM-G950F) (
Exynos 8895, aarch64) — Stationary 1080p60 DeX HDMI appliance with a 100 kΩ wireless-charging NTC thermistor bypass resistor and custom Magisk AudioPolicy HDMI routing. - General Mobile GM8 (
Snapdragon 435 MSM8940, aarch64) — Headless Alpine Linux node booting from raw eMMC via USB RNDIS (172.16.43.1/24), persistent Wi-Fi, OpenSSH, and an OpenRCsgdiskGPT bit-54 service preventing 7-boot A/B slot retry decay. - Xiaomi Redmi 7A (pine) (
Snapdragon 439 SDM439, aarch64) — Mainline-near Linux 7.1.3 postmarketOS node vialk2nd, stripped from ~234 MB to ~140 MB idle RAM with OpenRC WCNSSremoteprocboot-race fixes and hardware watchdog supervision. - Samsung Galaxy J7 Prime (SM-G610F) (
Exynos 7870, aarch64) — Two bare motherboards running on 4.2 V bench power with screenless pre-authorized ADB via Factory Combination Firmware (FA60_G610FDDU1ARC1) and a 4-vector Knox-preserving root forensic study. - Vestel Venus 5.5X (
Snapdragon 400 MSM8926, ARMv7) — Headless Alpine Linux node running in boot-partition RAM (initramfs) with automated USB RNDIS andwcn36xxWi-Fi firmware extraction. - LG G4 Stylus (LG-H540) (
MediaTek MT6592M, ARMv7) — Unbricked fromSecurity Error #9by reverse-engineering MediaTek's DA Stage 20x61write protocol and disassembling the Thumb-2 Little Kernel (lk.bin) bootloader.
Physical Setup & Cluster Integration
The project also extends into the physical setup: parametric, 3D-printable OpenSCAD holders provide a way to organize bare motherboards and leave space for ventilation. The recovered nodes support my broader experiments with Fleet Orchestrator, armrx, and distributed 9B/27B LLM inference with Mergen v1.0.
Technologies: Linux, Alpine Linux, postmarketOS, Android, ARM, OpenSCAD
Project Tags: