U-Boot host coexistence validation — 2026-09-22
The repaired candidate supports the onboard RTL8152 host and the J3 mass storage gadget in the same U-Boot session. This proves controller binding and device enumeration; no Ethernet packet test was performed.
uboot-usb-host-coexist-v2.txt records both DWC2 bindings, the Realtek USB
tree before and after UMS, host enumeration as 29f1:0230, and the expected
249,872,384-sector card. Reading 380,911 bytes from its U-Boot slot produced
SHA-256 4cb755ed0b0ac06fcccade582fcbc90f99ffb6f4c35cec65e3564804b5be6226,
matching the source-built candidate. Linux returned; the separate
usb-host-second-candidate-linux.txt confirms the stock shell is active,
has no service drop-ins, and drives 568x1232 in the normal orientation.
That was the initial narrow trial: its installer changed only the U-Boot slot, and the slot-backup/recovery-image statements apply to that session’s board state only. They are historical evidence, not a claim about the board after later full-image flashing.
The repaired stage 1 was subsequently included in the source-built daily
image. daily-shell-image.md identifies the exact
image and stage-1 store paths, and
declarative-final/image-flash.txt
records the complete 2,308,689,920-byte image written through UMS at
12.7 MB/s, U-Boot reset, and return to the Linux login prompt with status 0.
That transcript intentionally skipped a full readback, so it proves full-image
boot and recovery to Linux, not byte-for-byte post-write verification.
The first candidate’s missing host remains recorded in
uboot-usb-host-coexist.txt. The helper now reports a separate host verdict:
a prompt alone cannot turn No working controllers found into a pass.
Its parser checks each driver against its own controller address and uses
status 4 for host failure after successful UMS and Linux recovery.
A further physical session using the updated helper is preserved in
uboot-usb-host-verdict.txt: host checks passed before and after UMS,
the card enumerated and its bootloader readback matched, Linux returned,
and the final line reports both UMS and USB host PASS with exit status 0.
Checks on the integrated changes:
python3 -m unittest -v tests/test_ums_target.py: 16 passed, including wrong-controller binding and the physical candidate-2 fixture.python3 -m py_compile tools/ums-session.py: passed.openspec validate --all: 14 passed, zero failed.python3 scripts/build_site.py: passed, including evidence, binary inventory and rendered-site checks; 55 pages, 1,100,344 bytes, 12.63 s.
The existing Linux USB KFENCE warning remains unresolved; see
usb-kfence-observation.md. BootROM recovery characterization still needs
physical card/button/power operations. Neither limitation is hidden by this
host coexistence result.