Watch
1
0
Fork
You've already forked SouveraineOS
0
SouveraineOS/devices/README.md
Fimeg bde961c6f2 saf: one spine — device, state, and work under the index
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
2026-08-18 09:47:30 -04:00

96 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 A5A11 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.