commit be6076811f712b9b9c84cceca072e3cd2dedafd8
parent d6819e416cad05b4ffa564aa3a03ac1c516dedd9
Author: umhau <umhau@example.invalid>
Date: Wed, 21 Oct 2026 12:00:08 +0000
verify.sh: boot-args + log summaries only (no ioreg/system_profiler); link-rate cap encoding verified
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat:
3 files changed, 9 insertions(+), 19 deletions(-)
diff --git a/NOTES.md b/NOTES.md
@@ -22,8 +22,7 @@ From disassembling this machine's arm64 kernelcache (macOS 15.6.1):
sessions, 0 while video was visibly running in others); do not infer refresh from it.
## After reboot
-Run `tools/verify.sh` (passive, launches nothing). Success = HDCP TX Protocols=() and headset display online; panel lit
-must still be confirmed physically.
+Run `tools/verify.sh` (boot-args + log summaries only; no ioreg/system_profiler). Panel lit must be confirmed physically.
## Link reliability (2026-10-20, vr1 + vr0)
- Periodic ~70-80 s drops ([time redacted]-[time redacted]) happened while `ioreg -c IOPortTransportStateDisplayPort` was polled at 1 Hz and a
@@ -37,7 +36,9 @@ must still be confirmed physically.
- DCP firmware has per-port link limits (max_link_rate, max_link_rate_4_lanes, min_link_rate, max_lane_count) read
from boot-args with default prefix "appledptx" (format strings "%s-%s" present, so likely `appledptx-max_link_rate=`);
name format VERIFIED (DCP fw 0x708b0: snprintf(key[0]=='-' ? "-%s%s" : "%s-%s", prefix, key)) => boot-arg is exactly
- `appledptx-max_link_rate`; value is 1 byte (encoding not yet verified). Would need a reboot.
+ `appledptx-max_link_rate`; value is 1 byte in DisplayPort link-rate codes (VERIFIED: min_link_rate defaults to 6 =
+ RBR at DCP fw 0x56914; compared against the logged linkRate at 0x52a7c). HBR2 cap = `appledptx-max_link_rate=0x14`
+ (hex vs decimal parsing of the value not verified; 20 = 0x14). Untested; needs a reboot.
- Stuck state (headset display gone, adapter reports HPD=0 to the Mac): **recoverable in software** with a USB-PD
Data Reset on port 2's controller: `sudo tools/hpmctl 1 cmd DRST` (4CC passed big-endian, see
tools/kernel/HPM_RE.md section 8). First success: display back 2.2 s after the command, no replug.
diff --git a/SETUP.md b/SETUP.md
@@ -35,6 +35,7 @@ After the reboot, verify (no headset needed):
```sh
sysctl -n kern.bootargs # -> amfi_get_out_of_my_way=1 hdcp-fuse-mask=0
ioreg -l -w0 | grep '"HDCPTXCapabilities"' # every line should show {"Protocols"=()}
+# (one-off setup check only; never run ioreg while the headset is live or in a loop)
```
Before the fix these show `{"Protocols"=(1,2)}` (HDCP 1.x and 2.x). The `HDCPCapabilityMask` field does
NOT change (still 2/3); that's expected and harmless.
@@ -88,5 +89,5 @@ reports `05 01 01 01 01 ...` (panel on), with no further `05 00` and no drops.
- `displaywatch`: passively logs display add/remove (CoreGraphics callbacks).
- Never poll `ioreg -c IOPortTransportStateDisplayPort` (the old `linkwatch.sh` did; removed).
- `testpattern`: red LEFT / blue RIGHT fullscreen pattern on the headset.
-- `verify.sh`: passive one-shot check (boot-args, HDCP TX capability, display online, log summaries). Launches nothing.
+- `verify.sh`: passive one-shot check (boot-args + summaries of existing logs). No ioreg/system_profiler/HID. Launches nothing.
- `hpmctl` / `recovery_trials.py` / the app's LinkRecovery helper: see NOTES.md "Link reliability" (vr0 owns these).
diff --git a/tools/verify.sh b/tools/verify.sh
@@ -1,8 +1,7 @@
#!/bin/zsh
-# Passive, one-shot health check. It launches, kills, wakes and polls NOTHING:
-# - never reads USB-C/DisplayPort port state (ioreg IOPortTransportStateDisplayPort) — polling it destabilised the link
-# - never sends HID commands or port-controller (hpmctl) commands
-# It reports boot-args, HDCP transmit capability (one registry read), and summarises existing passive logs.
+# Passive, one-shot health check. It launches, kills, wakes and queries NOTHING on the hardware side:
+# - no ioreg (even a one-off `ioreg -l` walks the port nodes), no system_profiler, no HID, no hpmctl.
+# It only reports boot-args and summarises existing passive logs.
cd "$(dirname "$0")"
echo "kern.bootargs: $(sysctl -n kern.bootargs)"
@@ -11,17 +10,6 @@ case " $(sysctl -n kern.bootargs) " in
*) echo " PROBLEM: hdcp-fuse-mask=0 not active; the headset will blank (see SETUP.md)" ;;
esac
-# Expect {"Protocols"=()} on every channel when HDCP is off.
-echo "HDCP transmit capabilities:"
-ioreg -l -w0 | grep '"HDCPTXCapabilities"' | sort | uniq -c | sed 's/^/ /'
-
-# Headset display currently online? (CoreGraphics view, no port access)
-if system_profiler SPDisplaysDataType 2>/dev/null | grep -q "4320 x 2160"; then
- echo "headset display: online"
-else
- echo "headset display: not online"
-fi
-
# Summaries of passive logs, if an observer is already running (start tools/displaywatch yourself if wanted).
[ -f displaywatch.log ] && { echo "--- last display events (displaywatch.log):"; grep -E "ADD|REMOVE" displaywatch.log | tail -5; }
[ -f hmdwake.log ] && { echo "--- last headset 0x05 reports (hmdwake.log):"; grep status hmdwake.log | tail -3; }