/e/OS port for the Galaxy A56
An unofficial port of /e/OS, a de-Googled Android 15, to the Samsung Galaxy A56 5G, built from scratch. Calls, SMS and 4G data work.
Context & objective
I wanted a phone without Samsung and Google bloat, with root and full control, that I could also use as a network probe. No custom ROM existed for the Galaxy A56 (SM-A566B, codename “essi”), so I set out to build one.
What I built
- A device tree generated from a stock One UI 7 dump and adapted from a Galaxy A55 scaffold, plus a complete vendor tree from the extracted blobs.
- My own vendor SELinux policy, based on the LineageOS Samsung policies.
- A build pipeline on my server, driven over SSH and tmux: sources on HDD, build output and ccache on NVMe.
preflight.py, which checks the device tree against the stock images before each build.- VoLTE calling through the open-source PhhIms stack plus an adapter for the A56, instead of Samsung’s proprietary IMS.
| Date | Milestone |
|---|---|
| Sep 2026 | Recovery and sideload working; first boot failed and relocked the bootloader |
| 27 Sep 2026 | First own build boots: touch, sound, lock screen, ADB, Wi-Fi scan, Bluetooth pairing |
| 28 Sep 2026 | Modem registers on the network; 4G data, Wi-Fi and USB tethering working |
| 1 Oct 2026 | Calls, SMS and mobile data working (VoLTE via PhhIms) |
| Oct 2026 | Started the Android 16 port |
Still to do: fingerprint, camera, Bluetooth audio, RCS, Wi-Fi calling, then request official /e/OS support.
Challenges
- Unlocking. One UI 8 hid the OEM unlock toggle, so I rolled back to One UI 7 on the same bootloader revision.
- A relocked bootloader. A failed first boot relocked it, and Samsung’s anti-rollback and Knox Guard blocked recovery until I restored stock firmware.
- Flashing tools. Heimdall and Thor failed on large partitions, so I switched to Odin.
- The kernel. My own kernel built from Samsung’s sources didn’t boot, so the port uses the stock kernel as a prebuilt for now.
- Matching stock. Vendor blob dependencies broke the build, and the
superpartition layout had to match stock byte for byte. A full build also needs about 300 GB of disk.
What I learned
TODO(content): in your own words. Raw material: how Android builds work end to end (device and vendor trees, dynamic partitions, SELinux), Samsung’s boot-chain security, IMS/VoLTE internals, and never flashing a bootloader or accepting an OTA on a test device.