Blocks: Device MIDI IN — the last open quadrant of milestone M3. The test
is written and proven (examples/midi_device_in.py, 6d247d9); it stops at the
mount wait because the board never appears to the PC.
Symptom
The ESP32-S3's native USB port presents nothing to the host. Reproduced twice,
independently, under the protocol a previous session prescribed (probe --reboot-first, run never exec, nothing else touching the board), on the
most-proven costume:
built 0x1f pid 0x4003
costume cdc only, pid now 0x4001
0 ms connected=False mounted=False suspended=False
final (False, False, False)
connected is TinyUSB's bus-reset flag. It never goes true across a 15 s poll.
Both ends agree, and they agree on never saw an attach
- Board:
connected=False. No bus reset, which is below any driver binding.
- Board: host stack not running (
host_stats()[0] false), so this is not
the OTG PHY being held in host mode.
- Windows: enumerates only the CH343 UART bridge (COM49).
- Windows: zero USB devices in a non-OK state, zero problem codes.
A descriptor-request failure or a driver-bind failure would each leave an
error node. There is none — so the PC is not failing an enumeration, it
never sees an attach at all.
What is ruled out
The board, its jack, its PHY routing, and this firmware family — all cleared.
The board's unique_id is 30:30:f9:0f:6a:a4, and Windows holds cached device
nodes for that exact id, on that native port, in four forms:
| Cached node |
What it was |
USB\VID_303A&PID_1001\30:30:F9:0F:6A:A4 |
USB-Serial-JTAG |
USB\VID_303A&PID_4001\3030F90F6AA40000 |
usbif bare CDC |
USB\VID_303A&PID_4003\3030F90F6AA40000 |
usbif CDC+MSC composite |
USBSTOR\DISK&VEN_MICROPY&PROD_MASS_STORAGE... + SWD\WPDBUSENUM\...D:\ |
the MSC drive, mounted as D: |
PID_4001 is the exact bare-CDC costume the probe above fails on. Same board,
same costume, same PC, previously enumerated. This closes off the whole class of
"this hardware path was never going to work," which is where an intermittent
fault usually hides.
Host-mode rig configuration — ruled out. The bench had been wired for host
work (powered hub on an OTG adapter on the native port, with a MIDI keyboard,
a wireless dongle and a flash drive behind it), which would explain
connected=False completely. That cable swap has since been done, and the hub's
peripherals are absent from Windows too, consistent with the rig being unplugged
rather than moved.
The PID-cache collision — real, but not this. Windows holds 115 cached
VID_303A nodes, and under PID_4003 there are two different boards
(container ids matching the P4's MAC and this S3's), each cached as a CDC+MSC
composite. That is exactly the collision TinyUSB's header warns about and is
worth clearing before the VID move to 0x4CD3 — but bare CDC enumerates as
0x4001, a different cached identity, with the same result. Driver-bind failure
and never-seeing-a-host are different layers.
What is left
- The cable now in that jack.
- The PC port it is in.
- PC-side USB stack state.
The fault is intermittent — the PID_4003 node above is almost certainly a
single brief success on 2026-08-31 that "reverted within seconds" and was never
reproduced. Intermittency argues a marginal connection over a misconfiguration.
This is deliberately not a cable accusation: the evidence narrows to the
physical path without identifying which element.
Next steps
- The PC reboot, still unrun. It was queued on 2026-08-31 and the session
that queued it ended; Windows LastBootUpTime is 2026-08-31 03:27 (uptime
1d13h at capture), spanning the entire pause. It tests candidate 3 directly
and is the only candidate that costs nothing.
- The two-move physical discriminator, which splits the other two: a
known-good device on the same cable and same port; then the S3's native jack
on a different port with a different cable.
- Capture state either side of whichever is tried. If the reboot clears it,
the fault is fixed without learning which of the three it was, and a marginal
connection will recur. A pre-reboot baseline is attached below so a recurrence
has something to diff against instead of restarting this hunt.
Pre-reboot baseline
Captured 2026-09-01 16:50 local, fault live.
LastBootUpTime 08/31/2026 03:27:05
present USB devices 8 (2x ROOT_HUB30, webcam 04F2:B7CE x4 nodes,
06CB:0106, CH343 1A86:55D3, 8087:0033)
USB host controllers 2x Intel USB 3.20 eXtensible (7E7D, 7EC0)
USB root hubs 2 (no Generic USB Hub present - the powered hub is out)
cached 303A/4CD3 115 nodes
non-OK USB devices 0
board unique_id 30:30:f9:0f:6a:a4, MicroPython 1.28.0,
ESP32_GENERIC_S3-SPIRAM_OCT, dev_functions_built 0x1f,
costume_selftest 31/31
Blocks: Device MIDI IN — the last open quadrant of milestone M3. The test
is written and proven (
examples/midi_device_in.py, 6d247d9); it stops at themount wait because the board never appears to the PC.
Symptom
The ESP32-S3's native USB port presents nothing to the host. Reproduced twice,
independently, under the protocol a previous session prescribed (
probe --reboot-first,runneverexec, nothing else touching the board), on themost-proven costume:
connectedis TinyUSB's bus-reset flag. It never goes true across a 15 s poll.Both ends agree, and they agree on never saw an attach
connected=False. No bus reset, which is below any driver binding.host_stats()[0]false), so this is notthe OTG PHY being held in host mode.
A descriptor-request failure or a driver-bind failure would each leave an
error node. There is none — so the PC is not failing an enumeration, it
never sees an attach at all.
What is ruled out
The board, its jack, its PHY routing, and this firmware family — all cleared.
The board's
unique_idis30:30:f9:0f:6a:a4, and Windows holds cached devicenodes for that exact id, on that native port, in four forms:
USB\VID_303A&PID_1001\30:30:F9:0F:6A:A4USB\VID_303A&PID_4001\3030F90F6AA40000USB\VID_303A&PID_4003\3030F90F6AA40000USBSTOR\DISK&VEN_MICROPY&PROD_MASS_STORAGE...+SWD\WPDBUSENUM\...D:\D:PID_4001is the exact bare-CDC costume the probe above fails on. Same board,same costume, same PC, previously enumerated. This closes off the whole class of
"this hardware path was never going to work," which is where an intermittent
fault usually hides.
Host-mode rig configuration — ruled out. The bench had been wired for host
work (powered hub on an OTG adapter on the native port, with a MIDI keyboard,
a wireless dongle and a flash drive behind it), which would explain
connected=Falsecompletely. That cable swap has since been done, and the hub'speripherals are absent from Windows too, consistent with the rig being unplugged
rather than moved.
The PID-cache collision — real, but not this. Windows holds 115 cached
VID_303Anodes, and underPID_4003there are two different boards(container ids matching the P4's MAC and this S3's), each cached as a CDC+MSC
composite. That is exactly the collision TinyUSB's header warns about and is
worth clearing before the VID move to
0x4CD3— but bare CDC enumerates as0x4001, a different cached identity, with the same result. Driver-bind failureand never-seeing-a-host are different layers.
What is left
The fault is intermittent — the
PID_4003node above is almost certainly asingle brief success on 2026-08-31 that "reverted within seconds" and was never
reproduced. Intermittency argues a marginal connection over a misconfiguration.
This is deliberately not a cable accusation: the evidence narrows to the
physical path without identifying which element.
Next steps
that queued it ended; Windows
LastBootUpTimeis 2026-08-31 03:27 (uptime1d13h at capture), spanning the entire pause. It tests candidate 3 directly
and is the only candidate that costs nothing.
known-good device on the same cable and same port; then the S3's native jack
on a different port with a different cable.
the fault is fixed without learning which of the three it was, and a marginal
connection will recur. A pre-reboot baseline is attached below so a recurrence
has something to diff against instead of restarting this hunt.
Pre-reboot baseline
Captured 2026-09-01 16:50 local, fault live.