Can't Enumerate Telit modem USB port as a CDC ACM device with usbx host
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2024-08-02 07:23 AM
I am using an STM32 Nucleo H563ZI board for stm32CubeIDE and I am trying to send AT commands to a Telit LE910C4-WWX threadx modem over usb using the usbx host and threadx middleware. My program should be able to detect the modem as a cdc acm device, but it's failing to enumerate. When I connect a usb mouse to the Nucleo, it can enumerate properly as an hid mouse, which leads me to believe that the modem might not be properly configured. When I connect the modem with the configuration AT#USBCFG=1, it steps through the _ux_host_class_cdc_acm_entry() function 7 times, and the last time, it is able to check for IAD presence, but the IAD class is 2, and the IAD subclass is 0, so it still fails. Is there some other configuration for the modem I need to do, or do I need to modify the usbx driver or the ioc file?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2024-08-06 03:37 AM
It's RM502Q-AE. Quectel supports said they could provide us USB descriptors so we had to create the driver.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2024-08-06 06:09 AM
> Quectel supports said they could provide us USB descriptors
That's great. especially, if they can comment which interfaces are required for the functionality and which are optional.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2024-08-07 05:53 AM
I have the information about all the USB descriptors of the modem I am using right now, but I am stuck with defining our own descriptors and communicate with a specific interface (such as AT interface) since I do not have a good understanding of the USB protocol and I could not find any example to be helpful.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2024-08-07 08:34 AM
Here you can find help with your project:
https://www.fiverr.com/categories/programming-tech/electronics-engineering/embedded-systems-iot
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2024-08-12 11:48 AM
There is only 7 different configurations that I can do, and the only interface with a class of 0x0A is called ECM in the documentation. The minimum amount of interfaces I can do with that class is 3, however it still gives me that error. I know this modem can work with reduced cdc acm as it says in its limited documentation. Will I need to directly modify the middleware driver for this to work?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2024-08-12 01:30 PM
Please try to ask Quectel again about these interfaces.
Also, if you visit the link in my previous response, there you can find someone (or more) to help with research and coding.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2024-08-12 01:39 PM
@Pavel A. wrote:Please try to ask Quectel again about these interfaces.
It was @pinny that introduced the Quectel side-track; I think @Bfuller is on Telit?
I'd have thought support from Telit should be better that Quectel?
https://www.telit.com/support-tools/
Is it time to reconsider this insistence on USB? The USB support on microcontrollers tends to be fairly simple - maybe this is just beyond it?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2024-08-12 02:10 PM
BFuller mentioned Quectel several days before Pinny
The real issue here is trying to use the STM32 as a USB Host with too many end-points. Most interface these modems to STM32 via USARTs, not USB. USB may be presented as an alternative port for qualification/certification purposes. ie Lab can hook to a laptop or PC
Strikes me as an uphill slog to implement a USB Host stack for this on an STM32 MCU, why wouldn't you just use a RPi, or Embedded Linux platform with all the support already wrapped in, rather than try to dead-lift it from nothing? Next it'll be how to get a TCP/PPP link up.
Up vote any posts that you find helpful, it shows what's working..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2024-08-12 02:17 PM
@Tesla DeLorean wrote:Most interface these modems to STM32 via USARTs, not USB.
Strikes me as an uphill slog to implement a USB Host stack for this on an STM32 MCU, why wouldn't you just use a RPi, or Embedded Linux platform with all the support already wrapped in
Absolutely!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2024-08-15 11:42 AM
I was able to solve my issue. All I had to do was go into the cdc acm h file and change the value of the data class from 0x0A to 0xFF. It works perfectly fine now, and I can send and receive data over usb.