It's not about having, but about maintaining
Three Xiaomi phones, three different kinds of problem. On the Redmi Note 14 4G (tanzanite,
MT6789) Xiaomi never released the kernel source, so the pieces had to be recovered from firmware.
On the Redmi Note 8 (ginkgo, SM6125) the source is public, and the work is finding what the
existing ports silently get wrong. And on the same phone, running Apple's kernel instead of
Linux, the work is a hardware map that has never been written down.
The two ginkgo projects are deliberately one above the other: same board, same device tree, and the second one exists because reading that tree carefully turned up facts the first one needed.
|
Ubuntu Touch 20.04 / Halium 12. Kernel from GKI 5.10 with AppArmor, 385 vendor modules recovered
from the |
Ubuntu Touch 20.04 / Halium 10. Kernel 4.14 CAF NICOBAR built natively on aarch64. Found six upstream overlay defects, including a fingerprint HAL that never started. |
|
Kernel bring-up by reverse engineering: GKI 5.10 configs, DTB, and the module layout the stock firmware actually uses. |
Android root kernel and system manager. Kotlin, capability-based. |
|
Minimalist media downloader module for rooted Android devices. Releases at HyperDL-Release. |
Apple's XNU kernel on the same Redmi Note 8. A hardware probe and an honest map of why this board is harder than the ports that work: eMMC where every port expects UFS, and ARMv8.0 cores that cannot use the 16 KB pages iOS is built for. |
From the tanzanite port, because the reasoning matters more than the result:
- Module audit —
audio, torch and camera were all broken by the same cause: 178 vendor modules that live on
vendor_dlkminsidesuper.img, not invendor_bootwhere the port was looking. Records two wrong assumptions and what disproved them. - Bootloader and AVB —
why "you must flash fenrir/lkpatcher first" does not apply here: AVB in
vbmetais the mechanism that matters, and lkpatcher cannot patch this device (ARM32 patch set, AArch64 LK). - Changelog — written as cause and effect, not as a diff summary.
- Port landscape — four Ubuntu Touch trees already exist for the Redmi Note 8 and all four are broken in different ways. Why this is a fifth rather than a fork, and what each one gets wrong.
- ginkgo build notes — the ARM32 compat vDSO is assembled by the wrong toolchain because a Makefile passes a directory where clang expects a prefix. One line, four hours.
- Hardware map — every address the Redmi Note 8 needs to boot a non-Linux kernel, with the device tree node each one came from. Written as data with the reasoning attached, so a wrong value can be traced back to an artifact instead of an opinion.
- Observed vs guessed — the handoff separates what was read out of a device tree from what was inferred from position. Three of the six hardware facts in that port started as guesses, and saying so is what keeps the other three trustworthy.


