Skip to content

usb.core.find() fails #11122

Description

@RobCranfill

CircuitPython version and board name

Adafruit CircuitPython 10.3.0-alpha.3-22-gdb82b25b4d on 2026-07-10; Adafruit Feather RP2040 USB Host with rp2040

Code/REPL

# List all attached USB devices (probably only one).
# For "Adafruit Feather RP2040 with USB Type A Host" device.
# Based (loosely) on examples/usb_host_midi_simpletest_rp2040usbfeather.py

import usb.core
import time


print("Looking for all USB devices...")

while True:
    devices = usb.core.find(find_all=True)
    if devices is None:
        print("No devices")
    else:
        n = 0
        print(f"Iterating on {devices=}....")
        for device in devices:
            n += 1
            print(f"\t#{n}: {device=}")
            try:
                print(f"\t**** Found vendor:product {hex(device.idVendor)}:{hex(device.idProduct)}")
            except Exception as e:
                print(e)
                continue
    print("  Sleeping...")
    time.sleep(1)

Behavior

**** Typical successful output:

soft reboot
code.py output:
Looking for all USB devices...
Iterating on devices=<USBDevices>....
        #1: device=<Device>
        **** Found vendor:product 0x781:0x5581
  Sleeping...
Iterating on devices=<USBDevices>....
        #1: device=<Device>
        **** Found vendor:product 0x781:0x5581
  Sleeping...
Traceback (most recent call last):
  File "code.py", line 9, in <module>
  File "usb_host_lsusb.py", line 27, in <module>
KeyboardInterrupt: 

Code done running.
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.

Press any key to enter the REPL. Use CTRL-D to reload.

Adafruit CircuitPython 10.3.0-alpha.3-13-gbaa3ca8650 on 2026-07-07; Adafruit Feather RP2040 USB Host with rp2040
>>> 

**** Typical failure output:

soft reboot
code.py output:
Looking for all USB devices...
Iterating on devices=<USBDevices>....
  Sleeping...
Iterating on devices=<USBDevices>....
  Sleeping...
Iterating on devices=<USBDevices>....
  Sleeping...
Traceback (most recent call last):
  File "code.py", line 9, in <module>
  File "usb_host_lsusb.py", line 27, in <module>
KeyboardInterrupt: 

Code done running.
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.

Press any key to enter the REPL. Use CTRL-D to reload.

Adafruit CircuitPython 10.3.0-alpha.3-22-gdb82b25b4d on 2026-07-10; Adafruit Feather RP2040 USB Host with rp2040
>>> 

Description

Problem: usb.core.find(find_all=True) returns an empty generator even when something's plugged into the USB A port.

Additional information

This code stopped working with build

CircuitPython 10.3.0-alpha.3-22-gdb82b25b4d on 2026-07-10 (adafruit-circuitpython-adafruit_feather_rp2040_usb_host-en_US-20260710-main-PR11093-db82b25.uf2)

which was supposed to address a previously-reported issue with some MIDI keyboards. Now the issue happens with all USB devices (a SanDisk USB stick was used for testing, as well as other USB devices).

**** Fails on these builds (the one purporting to fix it, as well as the latest build available):

Adafruit CircuitPython 10.3.0-alpha.3-22-gdb82b25b4d on 2026-07-10; Adafruit Feather RP2040 USB Host with rp2040
Adafruit CircuitPython 10.3.0-alpha.3-25-g242fe31782 on 2026-07-13; Adafruit Feather RP2040 USB Host with rp2040

**** Succeeds on these builds (the one before the purported fix, and the latest alpha):

Adafruit CircuitPython 10.3.0-alpha.3 on 2026-06-24; Adafruit Feather RP2040 USB Host with rp2040
Adafruit CircuitPython 10.3.0-alpha.3-13-gbaa3ca8650 on 2026-07-07; Adafruit Feather RP2040 USB Host with rp2040

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions