48 lines
1.8 KiB
Markdown
48 lines
1.8 KiB
Markdown
# eGPU dock bring-up runbook
|
|
|
|
Our flasher is a port of comma's known-working one, byte-identical firmware
|
|
bundle, but it has never touched real hardware. Order matters: everything
|
|
read-only first, evidence at every step.
|
|
|
|
Run everything as root from the repo root on the device, dock on the USB-C
|
|
port, car ignition off.
|
|
|
|
## 1. Read-only probe (safe, run first, share the output)
|
|
|
|
sudo python3 iqpilot/system/hardware/egpu_dock/dock_probe.py
|
|
|
|
Expected on a dock previously flashed by stock openpilot: product matches the
|
|
bundled `custom ed4e39b7-CLEAN`, USB3 speed, PCIe link L0, stable config read.
|
|
Any other result: stop and send the output before proceeding.
|
|
|
|
## 2. Flash-path validation (writes, but writes the same bytes)
|
|
|
|
A stock-flashed dock already runs our exact bundled firmware, so the
|
|
no-op path proves version detection:
|
|
|
|
sudo python3 iqpilot/system/hardware/egpu_dock/flash.py
|
|
|
|
Expected: "firmware matches" and no write. Then exercise the full write path
|
|
by reflashing the identical image:
|
|
|
|
sudo python3 iqpilot/system/hardware/egpu_dock/flash.py --force
|
|
|
|
This backs up the per-unit config page to /data/egpu_dock_config/ first and
|
|
verifies every sector; identical bytes make it the lowest-risk possible
|
|
full-path test. Re-run step 1 after; product string and config sha must be
|
|
unchanged.
|
|
|
|
## 3. Runtime
|
|
|
|
Set `IQEgpuEnabled`, go onroad (bench is fine), and confirm iqegpumodeld
|
|
downloads/compiles and the selector reports UsbGpu* status. The runtime gate
|
|
requires the exact bundled firmware product string, so a dock that failed
|
|
step 2 will be treated as absent by design.
|
|
|
|
## If anything goes wrong
|
|
|
|
The dock falling back to the ROM bootloader (product "USB 3.2 PCIe
|
|
TinyEnclosure" or AS2462*) is recoverable: flash.py handles ROM recovery, and
|
|
the config backup from step 2 is on disk. Do not improvise register writes;
|
|
capture output and stop.
|