AnsweredAssumed Answered

STM32f7 USB Host controlling 4G Modem

Question asked by Danish Ali on Dec 18, 2017
Latest reply on Dec 19, 2017 by Danish Ali

I'm trying to link my stm32f7 to a Telit LE910 modem over USB. I can already do this over a UART but I want to increase the data rate.

My hope is to use the stm32 USB Host CDC drivers.

I can enumerate the device and I see:

No shield USBH library started. Starting MSC Demo Starting MSC Demo USB Device Attached PID: 1201h VID: 1bc7h Address (#1) assigned. Manufacturer : Android Product : Android Serial Number : 0123456789ABCDEF Enumeration done.
This device has only 1 configuration. Default configuration set. No registered class for this device which wants ff.

In order to link a Linux system to this modem, you're supposed to add the Telit Vendor-ID, Product-ID (i.e. 1bc7:1201) combination into /sys/bus/usb-serial/drivers and then tell ppp to use that USB serial interface.

To my naive way of thinking, this tells me that Linux should be able to talk to the modem using a standard protocol (my guess is CDC) and start talking AT commands to it.

 

The device class of the modem is 0xff which means vendor-specifc. And yet Linux only needs to be told to use its usb-serial driver. So the question then is how might I associate the modem's VID:PID pair with the CDC interface? I don't see a way without e.g. editing usbh_core.c yet I'd have thought it's a relatively common task.

USBH_StatusTypeDef  USBH_Process(USBH_HandleTypeDef *phost)
  case HOST_CHECK_CLASS:

The modem reveals 7 interfaces. So after that I'd need to pick out the right interface and endpoint. But none of them are USB CDC. All have Class 0xFF, subclasses:protocols are 0xFF:0xFF, 0x42:0x01, 0xFF:0xFF, 0x00:0x00, 0x00:0x00, 0x00:0x00, 0x00:0x00

So I'd probably also need to hack USBH_FindInterface as well.

Has anyone been down this path who is willing to share information?

 

Thanks in advance,

Danish

Outcomes