You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PR #9 (merged as edea99c, 2026-09-07) added nine examples and rewrote uvc_display.py to prefer MJPEG through jpegio. It was merged on a static review: every _usbif call checked against the C module's locals, argument tables and tuple layouts, the usbif.uac_audio / usbif.hid_keyboard / events surfaces checked, all twelve files compiled, and host_enum.py run on desktop CPython (where it reports no capabilities on WSL, as expected). Nothing was run on a board.
The PR's own test plan, still unchecked:
P4: soundcard.py — Speakers appear on a PC; audio audible (2026-09-23 on 1.29/IDF 5.5.4: Brad, "speaker works perfectly")
Two things a run may surface that the static pass could not: soundcard.py reads I2S pins and codec hooks from board_peripherals under several guessed names and falls back to _output_power / _codec_call; and usb_mic.py / usb_speaker.py read the negotiated format through getattr(..., "format") with a .stream fallback. Whichever branch a real board takes should be the one that stays.
PR #9 (merged as
edea99c, 2026-09-07) added nine examples and rewroteuvc_display.pyto prefer MJPEG throughjpegio. It was merged on a static review: every_usbifcall checked against the C module's locals, argument tables and tuple layouts, theusbif.uac_audio/usbif.hid_keyboard/eventssurfaces checked, all twelve files compiled, andhost_enum.pyrun on desktop CPython (where it reports no capabilities on WSL, as expected). Nothing was run on a board.The PR's own test plan, still unchecked:
soundcard.py— Speakers appear on a PC; audio audible (2026-09-23 on 1.29/IDF 5.5.4: Brad, "speaker works perfectly")usb_speaker.pyhosting the P4 — tone on the P4 speaker (2026-09-23 after device: size every bulk endpoint for the negotiated speed, not only MIDI's (usbif#24) #27, host: USB Audio 2.0 devices, a FIFO split per session, full-speed audio packets (usbif#28, usbif#2) #30: 48 kHz stereo through the P4's 2.0 sound card; Brad heard the two-second tone)hid_keyboard.py/hid_mouse.pyagainst a PC -- P4 both (2026-09-23, typed and moved); S3 the mouse example after device: number endpoints per costume; refuse a costume past the controller's IN budget (usbif#23) #25 (cursor out and back, no refused report); the keyboard example shares the endpoint and was not rerun on the S3hid_host.pywith a keyboard (M1 events)uvc_display.pywith jpegio firmware (MJPEG) and without (YUY2) — this one was a working example before the rewrite, so it is the first to runhost_enum.pyon a boardusb_serial.py,usb_mic.py,ram_drive.pycostume_selftest.pystill 31/31 (2026-09-23: six functions now, so 63 costumes; P4 63 checked 0 failed; S3 46 wearable + 17 refused for the S3's four IN endpoints, by design after device: number endpoints per costume; refuse a costume past the controller's IN budget (usbif#23) #25)Two things a run may surface that the static pass could not:
soundcard.pyreads I2S pins and codec hooks fromboard_peripheralsunder several guessed names and falls back to_output_power/_codec_call; andusb_mic.py/usb_speaker.pyread the negotiated format throughgetattr(..., "format")with a.streamfallback. Whichever branch a real board takes should be the one that stays.