Session 23 — 2026-03-27f
| Field | Value |
|---|---|
| Date | 2026-03-27 |
| Phase | 03b — TWRP |
| Duration | ~4 h |
Display Root Cause: Missing Waveform Firmware
Comparing dmesg from Android boot vs TWRP boot revealed the smoking gun:
Android: fw->size=282231 mode0 is complete
TWRP: Vendor Can't find firmware mode0 timeout
The EPDC needs the e-ink waveform firmware file at /waveform/eink_waveform.wbf (276 KB). In Android, system-as-root provides this via /system/waveform/. In TWRP, the ramdisk is root and the path does not exist. All prior ioctl attempts (v1.7–v2.5) were correct in userspace — but the EPDC hardware could not process them without its waveform lookup table.
Fix: Add file to device/onyx/noteair1/recovery/root/waveform/eink_waveform.wbf. TWRP v2.6 → first ever working e-ink display in custom recovery on this device.
Touch Rotation Investigation (v2.6–v3.2)
Touch hardware works immediately but coordinates are rotated. TWRP 3.7.1 RECOVERY_TOUCHSCREEN_SWAP_XY/FLIP_X/FLIP_Y flags in BoardConfig.mk are dead code — the Soong .go generator never wires them to compiler defines. TW_INPUT_FLIP_X/Y doesn’t exist in 3.7.1. Only option: patch gui.cpp or events.cpp directly in the source overlay.
v3.1 captured corner tap data (LOGINFO): top-left tap → x=1359, y=56; bottom-right → x=24, y=1822. This indicates X is inverted. v3.2 applied X-flip in gui.cpp — user reported still incorrect (needed re-verification).
Other Findings
- ebc buffer initialised to 0xFF (white) after mmap — prevents stale boot logo artifacts
- Display takes ~27 s from boot to visible output (icnss_fw_complete 5 s timeout + IOMMU delay)
- Brightness path corrected in BoardConfig:
/sys/devices/soc/c1b6000.i2c/i2c-6/6-0038/backlight/onyx_bl_br/brightness - FDE decrypt: TWRP shows decrypt prompt; success not yet confirmed