Help switching Telit LE910C4-EU from QMI/MBIM mode back to AT command mode

Hi all,

I’m stuck with my Sixfab 4G LTE HAT modem currently running in QMI/MBIM mode — I only see /dev/ttyACM0, but no /dev/ttyUSBx devices. Because of this, when I try using commands like atcom AT, I get:

[ERR] Couldn’t find any available port automatically, please specify the port

I have uninstalled modemmanager but it didn’t help

Thanks for any help

Please check out the solutions from here

Thanks for the reply,
I tried sending these commands as shown in that thread, but it didn’t help even after couple retries and reboots.

dronas@raspberrypi:~ $ sudo su
root@raspberrypi:/home/dronas# echo 01 00 00 00 10 00 00 00 01 00 00 00 00 10 00 00 | xxd -r -p >/dev/cdc-wdm0
root@raspberrypi:/home/dronas# echo 03 00 00 00 32 00 00 00 05 00 00 00 01 00 00 00 00 00 00 00 54 65 6c 69 74 4d 42 49 4d 45 78 74 65 6e 64 53 01 00 00 00 01 00 00 00 02 00 00 00 00 00 | xxd -r -p >/dev/cdc-wdm0
root@raspberrypi:/home/dronas# lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 019: ID 1209:5741 Generic fmuv3
Bus 003 Device 018: ID 17ef:602d Lenovo Black Silk Keyboard
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 024: ID 258a:1007 SINOWEALTH Game Mouse
Bus 001 Device 025: ID 1bc7:1205 Telit Wireless Solutions LE910C4-EU
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@raspberrypi:/home/dronas# ls /dev/ttyUSB*
ls: cannot access ‘/dev/ttyUSB*’: No such file or directory
root@raspberrypi:/home/dronas# ls /dev/tty*
/dev/tty /dev/tty15 /dev/tty22 /dev/tty3 /dev/tty37 /dev/tty44 /dev/tty51 /dev/tty59 /dev/tty9
/dev/tty0 /dev/tty16 /dev/tty23 /dev/tty30 /dev/tty38 /dev/tty45 /dev/tty52 /dev/tty6 /dev/ttyACM0
/dev/tty1 /dev/tty17 /dev/tty24 /dev/tty31 /dev/tty39 /dev/tty46 /dev/tty53 /dev/tty60 /dev/ttyAMA10
/dev/tty10 /dev/tty18 /dev/tty25 /dev/tty32 /dev/tty4 /dev/tty47 /dev/tty54 /dev/tty61 /dev/ttyprintk
/dev/tty11 /dev/tty19 /dev/tty26 /dev/tty33 /dev/tty40 /dev/tty48 /dev/tty55 /dev/tty62
/dev/tty12 /dev/tty2 /dev/tty27 /dev/tty34 /dev/tty41 /dev/tty49 /dev/tty56 /dev/tty63
/dev/tty13 /dev/tty20 /dev/tty28 /dev/tty35 /dev/tty42 /dev/tty5 /dev/tty57 /dev/tty7
/dev/tty14 /dev/tty21 /dev/tty29 /dev/tty36 /dev/tty43 /dev/tty50 /dev/tty58 /dev/tty8
root@raspberrypi:/home/dronas#

Could you share the following command outputs?

lsusb -t
lsusb
dmesg | grep tty
usb-devices
cat /etc/os-release

Sure:

dronas@raspberrypi:~ $ lsusb -t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/2p, 480M
|__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 1: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 2: Dev 3, If 0, Class=Communications, Driver=cdc_acm, 12M
|__ Port 2: Dev 3, If 1, Class=CDC Data, Driver=cdc_acm, 12M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/2p, 480M
|__ Port 1: Dev 3, If 0, Class=Communications, Driver=, 480M
|__ Port 1: Dev 3, If 1, Class=CDC Data, Driver=, 480M
|__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 2: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 12M
dronas@raspberrypi:~ $ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 1209:5741 Generic fmuv3
Bus 003 Device 002: ID 17ef:602d Lenovo Black Silk Keyboard
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 258a:1007 SINOWEALTH Game Mouse
Bus 001 Device 003: ID 1bc7:1205 Telit Wireless Solutions LE910C4-EU
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

dronas@raspberrypi:~ $ dmesg | grep tty
[ 0.000000] Kernel command line: reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe cgroup_disable=memory numa_policy=interleave numa=fake=8 system_heap.max_order=0 smsc95xx.macaddr=2C:CF:67:DE:44:C9 vc_mem.mem_base=0x3fc00000 vc_mem.mem_size=0x40000000 console=ttyAMA10,115200 console=tty1 root=PARTUUID=dda3da13-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=LT
[ 0.000092] printk: legacy console [tty1] enabled
[ 0.044859] 107d001000.serial: ttyAMA10 at MMIO 0x107d001000 (irq = 16, base_baud = 0) is a PL011 rev3
[ 0.044867] printk: legacy console [ttyAMA10] enabled
[ 0.301106] 107d50c000.serial: ttyS0 at MMIO 0x107d50c000 (irq = 33, base_baud = 6000000) is a Broadcom BCM7271 UART
[ 0.301144] serial serial0: tty port ttyS0 registered
[ 1.193966] systemd[1]: Created slice system-getty.slice - Slice /system/getty.
[ 1.194351] systemd[1]: Created slice system-serial\x2dgetty.slice - Slice /system/serial-getty.
[ 1.194830] systemd[1]: Expecting device dev-ttyAMA10.device - /dev/ttyAMA10…
[ 1.739256] systemd[1]: Found device dev-ttyAMA10.device - /dev/ttyAMA10.
[ 2.198991] cdc_acm 3-2:1.0: ttyACM0: USB ACM device

dronas@raspberrypi:~ $ usb-devices

T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 2
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev=06.12
S: Manufacturer=Linux 6.12.25+rpt-rpi-2712 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=xhci-hcd.0
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 10 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=258a ProdID=1007 Rev=01.00
S: Manufacturer=SINOWEALTH
S: Product=Game Mouse
C: #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=480mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=1ms
I: If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=1ms

T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=5000 MxCh= 1
D: Ver= 3.00 Cls=09(hub ) Sub=00 Prot=03 MxPS= 9 #Cfgs= 1
P: Vendor=1d6b ProdID=0003 Rev=06.12
S: Manufacturer=Linux 6.12.25+rpt-rpi-2712 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=xhci-hcd.0
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 2
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev=06.12
S: Manufacturer=Linux 6.12.25+rpt-rpi-2712 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=xhci-hcd.1
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 8 Spd=1.5 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=17ef ProdID=602d Rev=01.30
S: Manufacturer=Lenovo
S: Product=Lenovo Black Silk USB Keyboard
C: #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I: If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
E: Ad=82(I) Atr=03(Int.) MxPS= 5 Ivl=10ms

T: Bus=03 Lev=01 Prnt=08 Port=01 Cnt=01 Dev#= 9 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=02(commc) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1209 ProdID=5741 Rev=02.00
S: Manufacturer=ArduPilot
S: Product=fmuv3
S: SerialNumber=220044000451333530343231
C: #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=02 Prot=01 Driver=cdc_acm
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

T: Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=5000 MxCh= 1
D: Ver= 3.00 Cls=09(hub ) Sub=00 Prot=03 MxPS= 9 #Cfgs= 1
P: Vendor=1d6b ProdID=0003 Rev=06.12
S: Manufacturer=Linux 6.12.25+rpt-rpi-2712 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=xhci-hcd.1
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

dronas@raspberrypi:~ $ cat /etc/os-release
PRETTY_NAME=“Debian GNU/Linux 12 (bookworm)”
NAME=“Debian GNU/Linux”
VERSION_ID=“12”
VERSION=“12 (bookworm)”
VERSION_CODENAME=bookworm
ID=debian
HOME_URL=“https://www.debian.org/
BUG_REPORT_URL=“https://bugs.debian.org/

Hello @FrogHead

Between the commands

and

you need to wait at least 3 seconds.
The module should reboot after the last command is issued. You won’t need to manually reboot the module.

If it doesn’t help retry removing the extra peripherals specially the ArduPilot.

Thanks everyone for help,

Running these two echo commands manually and waiting for at least 3 seconds didn’t seem to work. I then tried connecting my Sixfab HAT via GPIO pins to my raspberry pi with usb cable connected too (previously I had not connected my module with GPIO pins). Then I tried running these commands again, but it again didn’t work. Lastly I tried running this prompt with added sleep commands and this time it worked:

sudo su
echo 01 00 00 00 10 00 00 00 01 00 00 00 00 10 00 00 | xxd -r -p >/dev/cdc-wdm0
sleep 3
echo 03 00 00 00 32 00 00 00 05 00 00 00 01 00 00 00 00 00 00 00 54 65 6c 69 74 4d 42 49 4d 45 78 74 65 6e 64 53 01 00 00 00 01 00 00 00 02 00 00 00 00 00 | xxd -r -p >/dev/cdc-wdm0
exit
sleep 5
lsusb
ls /dev/ttyUSB*

I’m not sure if this exactly was the solution because I also ran other commands beforehand such as:

sudo usb_modeswitch -v 1bc7 -p 1205 -R

sudo rm /dev/cdc-wdm0
sudo modprobe -r cdc-wdm
sudo modprobe cdc-wdm
sudo modprobe cdc_mbim
echo -n “1-1:1.0” | sudo tee /sys/bus/usb/drivers/cdc_mbim/bind
echo -n “1-1:1.1” | sudo tee /sys/bus/usb/drivers/cdc_mbim/bind

Either way, it is finally working and I’m seeing ttyUSB once again.

Thank you for pointing out.

In your case this was also an issue that is cdc_mbim wasn’t loaded. For Raspberry Pi OS it should get loaded unless it wasn’t remove manually.

That is the reason the drivers were empty here.

What made you switch to MBIM instead to ECM? Is it you wanted to test mbim too?

From what I can understand now, I was trying to set up my module from scratch and I’m assuming I typed the incorrect AT command for my Telit module: AT#USBCFG=3
This was the reason that made my ttyUSB disappear. Since at that time I was not aware of those two echo commands I incorrectly tried fixing it and probably that’s how I got into MBIM mode.

Hey that’s what I did by accident. How did you fix it? I cant get any USB devices so I cant send AT commands to reverse it.

Please find the solution here

I was trying that solution but get an error.

sudo echo 01 00 00 00 10 00 00 00 01 00 00 00 00 10 00 00 | xxd -r -p >/dev/cdc-wdm0

-bash: /dev/cdc-wdm0: Permission denied

Looks like /dev/cdc-wdm0 does not exist.

Some more details about my setup.

lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 1bc7:900e Telit Wireless Solutions QHSUSB__BULK
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/2p, 480M
    |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=qcserial, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/2p, 480M
T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  5 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1bc7 ProdID=900e Rev=00.00
S:  Manufacturer=Qualcomm CDMA Technologies MSM
S:  Product=QHSUSB__BULK
S:  SerialNumber=1234567890ABCDEF
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=2mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=qcserial
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
dmesg | grep tty
[    0.000000] Kernel command line: reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe cgroup_disable=memory numa_policy=interleave  smsc95xx.macaddr=D8:3A:DD:C0:C7:6A vc_mem.mem_base=0x3fc00000 vc_mem.mem_size=0x40000000  console=ttyAMA10,115200 console=tty1 root=PARTUUID=610c308f-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=US
[    0.000109] printk: legacy console [tty1] enabled
[    0.026354] 107d001000.serial: ttyAMA10 at MMIO 0x107d001000 (irq = 16, base_baud = 0) is a PL011 rev3
[    0.026364] printk: legacy console [ttyAMA10] enabled
[    0.411852] 107d50c000.serial: ttyS0 at MMIO 0x107d50c000 (irq = 33, base_baud = 6000000) is a Broadcom BCM7271 UART
[    0.411908] serial serial0: tty port ttyS0 registered
[    1.727209] systemd[1]: Created slice system-getty.slice - Slice /system/getty.
[    1.727575] systemd[1]: Created slice system-serial\x2dgetty.slice - Slice /system/serial-getty.
[    1.728052] systemd[1]: Expecting device dev-ttyAMA10.device - /dev/ttyAMA10...
[    2.293103] usb 3-1: Qualcomm USB modem converter now attached to ttyUSB0
[   91.788600] qcserial ttyUSB0: Qualcomm USB modem converter now disconnected from ttyUSB0
[   94.507540] usb 3-1: Qualcomm USB modem converter now attached to ttyUSB0
[  183.971636] qcserial ttyUSB0: Qualcomm USB modem converter now disconnected from ttyUSB0
[  186.688608] usb 3-1: Qualcomm USB modem converter now attached to ttyUSB0
[  276.030475] qcserial ttyUSB0: Qualcomm USB modem converter now disconnected from ttyUSB0
[  278.749327] usb 3-1: Qualcomm USB modem converter now attached to ttyUSB0
[  368.076685] qcserial ttyUSB0: Qualcomm USB modem converter now disconnected from ttyUSB0
[  370.798226] usb 3-1: Qualcomm USB modem converter now attached to ttyUSB0
[  460.142477] qcserial ttyUSB0: Qualcomm USB modem converter now disconnected from ttyUSB0
[  462.858722] usb 3-1: Qualcomm USB modem converter now attached to ttyUSB0
[  552.487381] qcserial ttyUSB0: Qualcomm USB modem converter now disconnected from ttyUSB0
[  555.206976] usb 3-1: Qualcomm USB modem converter now attached to ttyUSB0
Debian GNU/Linux 12 (bookworm)
sudo ls /dev/tty*
/dev/tty    /dev/tty14	/dev/tty20  /dev/tty27	/dev/tty33  /dev/tty4	/dev/tty46  /dev/tty52	/dev/tty59  /dev/tty8
/dev/tty0   /dev/tty15	/dev/tty21  /dev/tty28	/dev/tty34  /dev/tty40	/dev/tty47  /dev/tty53	/dev/tty6   /dev/tty9
/dev/tty1   /dev/tty16	/dev/tty22  /dev/tty29	/dev/tty35  /dev/tty41	/dev/tty48  /dev/tty54	/dev/tty60  /dev/ttyAMA10
/dev/tty10  /dev/tty17	/dev/tty23  /dev/tty3	/dev/tty36  /dev/tty42	/dev/tty49  /dev/tty55	/dev/tty61  /dev/ttyUSB0
/dev/tty11  /dev/tty18	/dev/tty24  /dev/tty30	/dev/tty37  /dev/tty43	/dev/tty5   /dev/tty56	/dev/tty62  /dev/ttyprintk
/dev/tty12  /dev/tty19	/dev/tty25  /dev/tty31	/dev/tty38  /dev/tty44	/dev/tty50  /dev/tty57	/dev/tty63
/dev/tty13  /dev/tty2	/dev/tty26  /dev/tty32	/dev/tty39  /dev/tty45	/dev/tty51  /dev/tty58	/dev/tty7

The 4 ports on the usb seems to show up or not depending on the sim I put into the Telit. The example above is using the default sixfab sim that came with the HAT.

Hi @Tinker,

Thanks for the details.

It looks like your Telit LE910C4-EU is currently only showing one port (/dev/ttyUSB0), and the QMI interface (/dev/cdc-wdm0) is missing. This usually happens if the module’s USB mode was changed.

To help you better, could you please share:

  • What was the last command or action you performed before the module got into this state?

@Imran

I rebooted the device one day and this happened. Is there any way to reset this back the desired USB mode?

Note: I do notice that when I use a different sim sometimes it seems to work and show up all the USB ports.