cancel
Showing results for 
Search instead for 
Did you mean: 

Can't Enumerate Telit modem USB port as a CDC ACM device with usbx host

Bfuller
Associate II

     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?

20 REPLIES 20

It's RM502Q-AE. Quectel supports said they could provide us USB descriptors so we had to create the driver. 

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.

 

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. 

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?

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.

 


@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? 

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.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

@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!

Bfuller
Associate II

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.