Missing handshake on control transfer #1778

Open
opened 2024-08-01 02:54:22 -05:00 by moc32 · 0 comments
moc32 commented 2024-08-01 02:54:22 -05:00 (Migrated from github.com)

Control transfer randomly fails while sending set report command to device and remains blocked until restart.

Setup stage is complete
Data stage also is complete
ACK stage remains blocked. No answer coming from the connected device.

How to reproduce?
The problem can be easily reproduce with the attached firmware base on tinyusb bare api example.

  1. compile and load the UF2
  2. connect a keyboard
  3. the scroll-lock and caps lock LED will blink every 250ms.
  4. After a random period of time, the blinking stops
  5. With a USB analyzer like Ellisys, you can see that setup and data statges are complete but no ACK stage. You can also add some logs to usbh_control_xfer_cb from tinyusb usbh.c and you'll see that all stages are complete during a successful transfer but when it fails only the first two stages are complete.

ex_host_bare_api.zip

Control transfer randomly fails while sending set report command to device and remains blocked until restart. Setup stage is complete Data stage also is complete ACK stage remains blocked. No answer coming from the connected device. How to reproduce? The problem can be easily reproduce with the attached firmware base on tinyusb bare api example. 1. compile and load the UF2 2. connect a keyboard 3. the scroll-lock and caps lock LED will blink every 250ms. 4. After a random period of time, the blinking stops 5. With a USB analyzer like Ellisys, you can see that setup and data statges are complete but no ACK stage. You can also add some logs to usbh_control_xfer_cb from tinyusb usbh.c and you'll see that all stages are complete during a successful transfer but when it fails only the first two stages are complete. [ex_host_bare_api.zip](https://github.com/user-attachments/files/16451974/ex_host_bare_api.zip)
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
gh-raspberrypi/pico-sdk#1778
No description provided.