| Filename | Latest commit message | Latest commit date |
|---|---|---|
One row per capability, one column per body, with a strict status vocabulary — "works" means exercised with evidence named, never that a device node appeared. blueline points at PAF/ rather than copying it; d10 carries its own state; m1 records what already transfers before anything is measured. The display pipe is corrected in the same change: ADP binds and scans out and the panel stays dark, so it is partial, not working. |
||
| .. | ||
| blueline | ||
| d10 | ||
| m1 | ||
| README.md | ||
Devices — what works, per body
One row per capability, one column per body. This page is the matrix; the
deep record for each subsystem stays where it already lives (PAF/ for
blueline, docs/tasks/63 for the d10) and is linked, never copied.
Status vocabulary, and it is strict:
| meaning | |
|---|---|
| works | exercised on the hardware, with evidence named |
| partial | comes up, does something, and a stated piece is missing |
| built | code and DT are in place, never run on the glass |
| absent | no driver, no node, or the silicon has no such thing |
| — | not applicable to this body |
A capability is never "works" because a device node appeared. On 2026-08-09 a
registered input node with unpowered rails read exactly like working touch for
several hours. Verify with events, not with dmesg.
The bodies
| blueline | d10 | m1 | |
|---|---|---|---|
| device | Pixel 3 | iPhone 7 (A1660) | MacBook (Apple Silicon) |
| SoC | SDM845 | Apple T8010 | M1 |
| role | Casey's daily driver | second body | not here yet |
| boot | pacman kernel + extlinux, no flash | checkm8 → m1n1, per boot, host-tethered | — |
| tether | 172.16.42.1 |
172.16.43.1 |
— |
| status | daily use | bring-up | planned |
Both phones are plugged in at once and that is the invariant. Never unplug one to make a command convenient.
The matrix
| capability | blueline | d10 | owner |
|---|---|---|---|
| storage | works | works — NVMe over H9P/DART/ANS | 63 |
| USB gadget | works — NCM + ACM | works — NCM + ACM | 62 |
| display out | works — SW43408, DPU | works via simpledrm; ADP binds and scans out to a dark panel | 61, 63 |
| GPU / 3D | works — Adreno 630, freedreno | absent — no render node, llvmpipe only | 63 |
| backlight | works | works — DWI and a DSI panel backlight | 63 |
| gamma / LUT | works — GAMMA_LUT 1024, CTM present |
built — ADP path unexplored | 61 |
| touch | works | partial — binds, inits, no runtime events | 63 |
| buttons | works — power/volume through the state machine | built — 4 keycodes present, unwired | 63 |
| haptics | partial — pmi8998_haptics drives dial detents |
absent — ADT names a node, nothing driven | 45 |
| wifi | works | absent — BCM4350 needs a driver, node kept out of DT | 63 |
| bluetooth | works | built — node inherited from t8010-7.dtsi |
— |
| modem / calls | works — two-way audio | absent — MDM9645M behind Apple's own PCIe protocol | 49 |
| SMS / MMS | works — netsvcs APN |
absent | — |
| audio | works — HiFi speaker, mic, STT | absent — MCA built, never wired | 07, 39 |
| camera | partial — front IMX355 streams; rear IMX363 DT unbuilt | absent | 46 |
| fingerprint | partial — TA protocol recovered, no capture | — (no reader) | 44 |
| battery / charging | works — upower fork, charge ceiling | built — SN2400 + BQ27540 in DT and kernel | 33 |
| proximity / light / accel | works — one reporter, health-tracked | absent — CT821 built, no reporter | 08, 47 |
| session authority | works | works — greetd, real seat0 session | 63 |
| lock surface | works | partial — keypad choice fixed, unverified | 02 |
| suspend | works — s2idle | built — never exercised | — |
Where a body's own record lives
- blueline —
PAF/is canonical and per-subsystem:audio.md,display.md,modem.md,slpi.md,touch.md,platform.md,mms.md,edge-sense.md.devices/blueline/is a pointer, not a second copy. - d10 —
docs/tasks/63-d10-second-body.mdcarries the whole argument;hoolock/BOOT-d10.mdcarries the boot chain andhoolock/boot.shruns it. - m1 — nothing yet.
devices/m1/states what is already known to transfer.
The rule this hierarchy exists to enforce
One common base that adapts, never souveraine-upower-iphone and -pixel3.
Per-device packages carry DT and quirks; everything else is shared and learns to
ask. Every row above that differs between columns is either real hardware
difference or a place the base assumed one board — and the second kind is a
defect. Three were found the night the d10 came up:
blueline-screen-toggle— panel blanking shells out to a script named for one phone, so the d10 structurally cannot sleep.brightnessctl set 10— an absolute on a 255-step backlight and a 2047-step one. 4% on one body, 0.5% and visibly black on the other. Fixed insouveraine eb0292c.hyprctl— the shell still asks it for windows, monitors and layers. Dead under viewtop on both bodies; blueline merely still has the binary lying around, so it fails silently there and loudly here.