Phase 10 — postmarketOS Port

Phase 10 — postmarketOS Port

Status: 🔴 Not started. Can run in parallel with Phases 03–09.


Two Sub-phases

Sub-phaseKernelGoalBlocker
10aStock Onyx 4.4 (vendor binary)Working Linux e-reader quickly — all drivers work as-isNone
10bMainline sdm660 (community)Fully open-source kernel, long-term goalEPDC e-ink driver not mainlined

Key Research Findings (2026-03-28)

Stock ABL Already Boots pmOS

The Qualcomm UEFI ABL is a dumb boot.img loader when bootloader is unlocked (secure=no, fuses unprovision). It loads kernel+ramdisk+DTB from the boot partition and jumps to the kernel entry point. It does NOT validate kernel content. A pmOS boot.img containing a Linux kernel + Alpine initramfs is structurally identical to an Android boot.img. Our custom ABL is not required for pmOS.

Mainline SDM660 Status

FieldValue
Community reposdm660-mainline/linux (active through 2026-03-22)
postmarketOS kernel packagelinux-postmarketos-qcom-sdm660, v6.11.1
pmaports locationdevice/testing/linux-postmarketos-qcom-sdm660
MaintainerAlexey Minnekhanov (alexeymin@postmarketos.org)
Matrix channel#sdm660-mainline:matrix.org

Existing Boox Devices in pmOS

Two SDM636 Boox devices are listed on the pmOS wiki: onyx-leaf and onyx-poke3. Both wiki pages are empty. Neither has a device package in pmaports. The Note Air 1 would be the first Boox device with an actual port.

Reference Devices

Best structural references: asus-x00td (Asus Zenfone Max Pro M1, SDM636) — has both downstream (4.4) and mainline kernel subpackages. Kobo Clara HD shows the e-reader pmOS pattern: deviceinfo_no_framebuffer="true", waveform extraction hook, EPDC init in initramfs.


Flashing pmOS (Fastboot Workaround)

Fastboot data transfer is broken on this device — pmbootstrap flasher won’t work directly. Use instead:

  • TWRP dd: adb push boot.img /tmp/ && adb shell dd if=/tmp/boot.img of=/dev/block/bootdevice/by-name/boot (~5 MB/s, simplest for iteration)
  • EDL: edl w boot boot.img (31 MB/s, requires 9008 access)
  • TWRP sideload: ADB sideload zip containing boot.img + rootfs

E-ink Waveform Handling

The onyx_epdc_fb driver requires /waveform/eink_waveform.wbf at boot. In Android this comes from system-as-root. For pmOS: provide this file via an initramfs hook (similar to Kobo’s kobo-epdc-extractor). The file is 276 KB and is already in the TWRP ramdisk for reference.

More posts