CV

/e/OS port for the Galaxy A56

PersonalSept 2026 – ongoingSolo

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 super partition 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.