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
96 lines
5.5 KiB
Markdown
96 lines
5.5 KiB
Markdown
# 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](blueline/) | [d10](d10/) | [x86](x86/) | [m1](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.md` carries the whole argument;
|
||
`hoolock/BOOT-d10.md` carries the boot chain and `hoolock/boot.sh` runs it.
|
||
- **x86** — `devices/x86/` records the HP ProBook's observed workstation state.
|
||
The `x86-laptop` profile 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 in
|
||
`souveraine 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.
|