zephyr: STM32H743 USB (High Speed) CDC ACM Can't receive data

Describe the bug

We have a custom STM32H743 board configured for High-Speed USB CDC ACM Uart. The device will enumerate and we can receive data from the devices, but can’t send data.

We have tried it on a NUCLEO-H743ZI2 (full speed) and it works fine there, so it may be related to the high speed with external ULPI PHY.

The Custom High-Speed USB board does work with TinyUSB running under FreeRTOS, so the hardware has been proven with that software. We are in the process of transitioning from FreeRTOS to Zephyr.

To Reproduce

Steps to reproduce the behavior:

We ran the samples/subsys/usb/cdc_acm on the custom board and it does not echo data back. We have modified the test to send some data from the device to the host and that works fine, but it does not receive data.

We never see the UART (USB CDC ACM) callback functions called on the device to indicate data is received.

Expected behavior

We need data flowing from host -> device.

One interesting point is that with a USB sniffer, we don’t see the data the host sends on the USB bus. If we are sending from a terminal, it blocks like the driver never sent the data. Will add USB traces in a bit.

Impact

What impact does this issue have on your progress: showstopper

Logs and console output

Will post USB and other traces in additional comments.

Environment (please complete the following information):

  • OS: Linux
  • Toolchain: Zephyr SDK
  • Commit: ef3d01d16fd462805565d83443db7a7bd38d306d (recent Zephyr HEAD)

Additional context

See DTS and config:

custom_board_conifg.zip

Possibly related issues:

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Comments: 33 (7 by maintainers)

Most upvoted comments

Sorry I missed your question – thanks to all for getting this merged.

No, not yet – but planning to work on it this week – will report back soon. Thanks!

I’ve been working on a test app:

https://github.com/zephyrproject-rtos/zephyr/pull/62945

Still needs some cleanup, but has been useful for testing high throughput scenarios.

@cbrake hi Can you see the PR proposal to check : drivers: usb: device: fix Rx FIFO min size #62530

I think this is still an issue as we have been running with a local change. I’m refreshing to latest Zephyr now and will retest. We also having some other issues that I will post more data on soon.