Session 24 — 2026-03-27g
| Field | Value |
|---|---|
| Date | 2026-03-27 |
| Phase | 03b — TWRP |
| Duration | ~3 h |
Touch Rotation Fix
v3.2’s X-flip was wrong. Raw touch coordinates from getevent: ABS_MT_POSITION_X range 0–1871 (long axis), ABS_MT_POSITION_Y range 0–1403 (short axis) — landscape orientation. The correct fix is a full 90° rotation applied in gui.cpp after vk_tp_to_screen scaling:
int px = x, py = y;
int W = gr_fb_width() - 1; // 1403
int H = gr_fb_height() - 1; // 1871
x = py * W / H; // swap: Y→X, scale H→W
y = H - px * H / W; // swap: X→Y, invert, scale W→H
Physical orientation: raw_X 1871=TOP, 0=BOTTOM; raw_Y 0=LEFT, 1403=RIGHT. Applied in v3.3.
FDE Decrypt Dependency Chain
| # | Layer | Fix | Status |
|---|---|---|---|
| 1 | Vendor partition not mounted | Mount vendor in init.rc | Fixed |
| 2 | qseecomd not running | Add qseecomd service to init.rc | Fixed |
| 3 | keymaster@4.0 not started | Add keymaster HAL service to init.rc | Fixed |
| 4 | libion.so missing from ramdisk | Add to recovery/root/system/lib64/ | Fixed |
| 5 | VINTF manifest missing | Minimal /system/etc/vintf/manifest.xml | Fixed (manual push, not yet in build) |
| 6 | health@2.0 HAL not started | Start TWRP’s built-in health HAL | Fixed (manual test) |
| 7 | dm-crypt “IV mechanism required” | Unknown — IV mode missing from cipher string | BLOCKER |
dm-crypt IV error (Blocker)
Kernel 4.4.194 reports device-mapper: table: 252:0: crypt: IV mechanism required. TWRP’s cryptfs.cpp (AOSP 12.1 vold) passes a cipher spec without IV mode (e.g., aes-xts instead of aes-xts-plain64). The kernel requires cipher-chainmode-ivmode format. Fix: patch cryptfs.cpp to append IV mode to cipher string.
VINTF Manifest Discovery
AOSP 12.1’s servicemanager requires /system/etc/vintf/manifest.xml to validate service registration. Without it, keystore2 fails with UNKNOWN_ERROR. This check did not exist in earlier Android versions.