bin_42c3_timeline
Differences
This shows you the differences between two versions of the page.
| bin_42c3_timeline [2026/04/18 21:48] – created via HIS marfrit | bin_42c3_timeline [2026/04/18 21:54] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Bin — 42C3 timeline ====== | ||
| + | |||
| + | Narrative session-by-session timeline of the Bin campaign shaped for a 42C3 talk. Companion to < | ||
| + | |||
| + | ===== Title candidate ===== | ||
| + | |||
| + | " | ||
| + | |||
| + | ===== Arc (one beat per slide) ===== | ||
| + | |||
| + | ==== Act I — the problem ==== | ||
| + | |||
| + | - **The board**: CoolPi CM5 GenBook, RK3588, €200 Chinese laptop, eDP panel, mainline-hostile vendor BSP. | ||
| + | - **Goal**: boot upstream u-boot → upstream Linux → see pixels. | ||
| + | - **Wall**: link trains at HBR×2, backlight on, panel stays black. | ||
| + | |||
| + | ==== Act II — building a debug primitive ==== | ||
| + | |||
| + | - **The ReCAP protocol**: memory files + DokuWiki + WIP branches that survive context compaction. | ||
| + | - **Tripwire**: | ||
| + | - **Phase 1**: u-boot with CONFIG_BIN_PHASE1_NOINIT (zero VP2 writes) + tripwire kernel. | ||
| + | - **Phase 2**: kernel-only capture via panel_edp unload/ | ||
| + | - **Phase 3**: u-boot with tripwire armed from first vop2_probe + full VP2 init. 4.3 M records (2.08 M u-boot + 2.24 M kernel). | ||
| + | |||
| + | ==== Act III — the honest failure arc ==== | ||
| + | |||
| + | - **Bit-level diffs found**: cfg_done (we latch VP2 alone, kernel latches VP0+VP2 two-phase); 0x0600 bit 31 set by us (STANDBY), cleared by kernel; 0x06f0 byte-lane pattern missing two lanes. | ||
| + | - **Confirmed NOT bugs**: 0x0e3c=0x10001000 (POST_SCL_CTRL), | ||
| + | - **Phase 4**: apply the three fixes. | ||
| + | - **Phase 5**: Analogix DP core internal PLL (PLL_REG_2..5) never touched by our u-boot. | ||
| + | - **Phase 6**: trim to kernel-verified writes only. Panel still black. | ||
| + | - **Phase 7+8**: timing hypothesis — maybe PLL lock is slow, u-boot hands over before first frame. | ||
| + | |||
| + | ==== Act IV — the new frontier ==== | ||
| + | |||
| + | - **The revelation**: | ||
| + | - **Reframe**: | ||
| + | - **Transferable wins**: tripwire as a generic primitive. | ||
| + | - **Honest outro**: campaign continues. | ||
| + | |||
| + | ===== Narrative hooks to develop ===== | ||
| + | |||
| + | * **Cargo cult decoded** — how a single register value (0x10001000 at POST_SCL_CTRL) accreted as " | ||
| + | * **The backlight tell** — Phase 7 had the backlight off during the entire timing-test window, making the result unreadable. | ||
| + | * **Who cleared the buffer?** — "brown text flash" was plymouth painting. | ||
| + | * **Hypothesis ladder** — diagram of every theory disarmed across the campaign (warm-PHY bisection, DSP_LUT_EN bit 28, Cluster1 offsets that were a Python bug, IOMMU-inherited-state, | ||
| + | |||
| + | ===== Submission ===== | ||
| + | |||
| + | * 42C3 CFP deadline typically mid-September. | ||
| + | * Target track: Hardware and Making, or Security. | ||
| + | * Duration: 45 min + 15 min Q&A. | ||
| + | * Format: slides + live demo of tripwire dumping a capture from ampere. | ||
| + | * Co-pilot credit: sibling Claudes across the sessions. | ||
