RM1PE 1.10.1 release 2: USB reconnect reset prevents AmigaHID-Pico enumeration

After upgrading my Comet PoE (RM1PE) from 1.9.1 release 1 to 1.10.1 release 2, I encountered failures detecting its keyboard and mouse on AmigaHID-Pico, an RP2040-based USB-to-Amiga input adapter using TinyUSB.

The Comet detected a full-speed USB connection, but enumeration did not finish. Its USB controller remained at address zero, the Pico showed no devices, and the HID workers repeatedly logged busy/unplugged (write select). Power-cycling the Pico did not reliably recover it.

The logs point to /etc/udev/rules.d/99-otg-reconnect.rules, which runs /usr/sbin/reset_uvc_udc --once when USB connection state changes. This performs a full DWC3 controller unbind/rebind, even with USB webcam emulation disabled and only HID functions active.

In one captured sequence, a reconnect triggered that reset and failed to finish enumeration. Another reconnect six seconds later skipped the reset because of the script's ten-second cooldown; enumeration then completed and both keyboard and mouse worked.

I worked around it by disabling that reconnect rule over SSH:

mv /etc/udev/rules.d/99-otg-reconnect.rules /etc/udev/rules.d/99-otg-reconnect.rules.disabled
udevadm control --reload-rules

Afterward, I rebooted the Comet and AmigaHID-Pico automatically detected its keyboard and mouse. The boot log showed one USB reset followed by USB_STATE=CONFIGURED.

This suggests the extra controller reset can interfere with enumeration on this host. Could it be avoided for normal HID-only reconnects, or performed only after a failed enumeration attempt?

This is a workaround confirmed by a few hours of testing. Disabling the rule also removes its automatic USB recovery behavior. To undo it, rename the file back to .rules and reload the rules.

To support the camera functionality, we enabled the Interface Association Descriptor (IAD) in our USB configuration. However, some simplified USB host protocol stacks (e.g., on custom or microcontroller-based devices) do not support parsing IAD, which often leads to enumeration failures.

Although I wasn't able to see your exported log, I think this firmware update might address the issue. Could you please give it a try and let us know if it works for you? https://drive.google.com/file/d/1mARiwUBNjTcxX-VxUP1zASDWwrCiazV-/view?usp=drive_link

Thanks. TinyUSB already handles IAD. Disabling only the reconnect reset restored enumeration with the same descriptors. Does this build also change the reset/reconnect behavior?

This firmware does not modify anything related to reconnect. The files you mentioned are mainly for hot-plug handling; we are still analyzing this code, and it is indeed a bit aggressive.

The 10-second cooldown skipping binding was a fix I added later to prevent double-binding issues during debugging, though I'm not entirely sure why it didn't take effect in your environment. Since you've confirmed it's not caused by IAD, we will take another look at how to adjust the reconnect logic here.

Additionally, could you export the logs from the Help page so we can analyze them?