Session 23 — 2026-03-27f — Display Fix! Waveform Firmware Missing from Ramdisk

Session 23 — 2026-03-27f

FieldValue
Date2026-03-27
Phase03b — 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

More posts