This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Using USB Host HID only works together with USB CDC Device

Hello everyone,

I am facing a weird problem:

I have a few threads in my system, but concerning the problem are two: The USB Device (CDC) Thread for communication with a PC and the USB Host Thread for controlling the Synergy with a Keyboard, reading from or writing to a USB Stick or doing both with the help of a hub.

I can e.g. successfully insert a hub into the USB slot of my mainboard, where the Synergy module is plugged in, then insert a keyboard and an USB-Stick into that hub and use both of these devices.

BUT that only works when I also have the PC plugged into the USB Device (CDC) Port of the mainboard. If this is not connected, no host function is working. I am getting the feeling this must have changed in one of the last SSP versions, but I am not 100% sure, as it could have been that I had the USB CDC connected when I wrote the code for the USB Host functions.

Are there any caveats concerning the USB Host from SSP 2.0 until now, especially in conjunction with the CDC?

Is there anything I could to to make them both work independently (initialize something sooner or later e.g.)?

My configuration is as follows:

S7G2 on custom mainboard, SSP 2.3.0. Please refer to the images below for information about the threads:

/resized-image/__size/6676x1636/__key/communityserver-discussions-components-files/206/USB-Host-Thread.png

/resized-image/__size/4830x1550/__key/communityserver-discussions-components-files/206/USB-CDC-Thread.png

If you need any more information, please let me know.

Kind regards,

Christoph




[locked by: JB (SWF) at 8:54 (GMT 0) on 17 Jan 2023]
  • Nevermind, just checked and found the mistake: My USB (CDC) Thread had a wait for the activation semaphore with the option TX_NO_WAIT in it and that caused the USB Host thread to not be able to run correctly. I changed it to TX_WAIT_FOREVER, because the thread should do nothing but wait for an activation of the CDC device.

    Consider the problem solved.