Phase 10 — postmarketOS Port
Status: 🔴 Not started. Can run in parallel with Phases 03–09.
Two Sub-phases
| Sub-phase | Kernel | Goal | Blocker |
|---|---|---|---|
| 10a | Stock Onyx 4.4 (vendor binary) | Working Linux e-reader quickly — all drivers work as-is | None |
| 10b | Mainline sdm660 (community) | Fully open-source kernel, long-term goal | EPDC 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
| Field | Value |
|---|---|
| Community repo | sdm660-mainline/linux (active through 2026-03-22) |
| postmarketOS kernel package | linux-postmarketos-qcom-sdm660, v6.11.1 |
| pmaports location | device/testing/linux-postmarketos-qcom-sdm660 |
| Maintainer | Alexey 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.