PAF becomes saf/device (history kept), STATE.md dissolves into saf/state.md with the dated era archived, the substrate SAF moves up from souveraine, and every agreement points at saf/INDEX.md and nowhere else. one map, nothing to remember
5.5 KiB
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 (saf/device/ 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 | x86 | m1 | |
|---|---|---|---|---|
| device | Pixel 3 | iPhone 7 (A1660) | HP ProBook 450 G6 | MacBook (Apple Silicon) |
| architecture | SDM845 / aarch64 | Apple T8010 / aarch64 | x86_64 | Apple M1 / aarch64 |
| role | Casey's daily driver | second body | Casey's daily workstation | not here yet |
| boot | pacman kernel + extlinux, no flash | checkm8 → m1n1, per boot, host-tethered | existing EndeavourOS install | — |
| tether | 172.16.42.1 |
172.16.43.1 |
— | — |
| status | daily use | bring-up | substrate installed; OS profile 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 —
saf/device/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. - x86 —
devices/x86/records the HP ProBook's observed workstation state. Thex86-laptopprofile is blocked: an installed substrate package is not an installer-ready SouveraineOS body. - m1 — nothing yet.
devices/m1/states what is already known to transfer.
Planned Apple-mobile family
The A5–A11 family is a real future branch: checkm8-class boot access opens iPhones and iPads in that range to the same kind of work now underway on d10. It is not a supported target or a single device profile. The family spans different boards and CPU generations; each body needs its own boot, display, input, storage and package evidence before it joins this matrix.
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.