Skip to content

"USB Busy" error with CircuitPython HID when plugged into USB host #10721

@djecken

Description

@djecken

CircuitPython version and board name

Adafruit CircuitPython 10.0.3 on 2025-10-17; Adafruit Macropad RP2040 with rp2040

Code/REPL

import time
from adafruit_macropad import MacroPad

macropad = MacroPad()
last_position = 0

while True:
    try:
        key_event = macropad.keys.events.get()
        if key_event:
            if key_event.pressed:
                print(key_event)
                if key_event.key_number == 0:
                    macropad.keyboard.send(macropad.Keycode.E)
    except Exception as e:
        print(e)
        time.sleep(10)

Behavior

"USB busy" prints to the OLED on the MacroPad after pressing key 0.

If I don't use the try/except then the device goes into safe mode (status neopixel flashes yellow 3 times) after being plugged in

Description

I'm running into an issue where CircuitPython HID devices are not working when plugged into USB host on Fruit Jam. This behavior occurs with Fruit Jam OS, the Doom emulator and the Apple II emulator. I've recreated it with a KB2040-based keyboard build and the MacroPad (used for a simpler test setup). When either the KB2040 or MacroPad are plugged into a macOS or Windows computer they work as expected and do not throw the error.

I'm trying to work on a guide where a custom CircuitPython HID keyboard is built into a case to use with the Apple II emulator which is how I discovered the issue.

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions