EM7345 nonzero urb status received: -71 until changing gsm provider

I have approximately 30 EM7345 deployed and 3 of them (so far) exhibit an unexpected behaviour. After a few days of staying connected with the first GSM network, they start restarting continuously with the dmesg errors cdc_mbim 1-1.1:1.0: nonzero urb status received: -71 and cdc_mbim 1-1.1:1.0: wdm_int_callback - 0 bytes, This happens continuously until changing the SIM card to one from a different GSM provider. Then, they each start working as expected again, with the second one. Here are the debugging notes so far:

Telekom Romania SIM worked for approximately 5 days, then:

[...]
[   68.699886] cdc_mbim 1-1.1:1.0: nonzero urb status received: -71
[   68.699906] cdc_mbim 1-1.1:1.0: wdm_int_callback - 0 bytes
[   68.704882] cdc_mbim 1-1.1:1.0: nonzero urb status received: -71
[   68.704896] cdc_mbim 1-1.1:1.0: wdm_int_callback - 0 bytes
[   68.709882] cdc_mbim 1-1.1:1.0: nonzero urb status received: -71
[   68.709897] cdc_mbim 1-1.1:1.0: wdm_int_callback - 0 bytes
[   68.714886] cdc_mbim 1-1.1:1.0: nonzero urb status received: -71
[   68.714900] cdc_mbim 1-1.1:1.0: wdm_int_callback - 0 bytes
[   68.716643] usb 1-1.1: USB disconnect, device number 11
[   68.717129] cdc_mbim 1-1.1:1.0 wwan0: unregister 'cdc_mbim' usb-0000:01:00.0-1.1, CDC MBIM
[   69.070003] usb 1-1.1: new high-speed USB device number 12 using xhci_hcd
[   69.171239] usb 1-1.1: New USB device found, idVendor=8087, idProduct=0716, bcdDevice= 0.00
[   69.171249] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[   71.533254] usb 1-1.1: USB disconnect, device number 12
[   76.042038] usb 1-1.1: new high-speed USB device number 13 using xhci_hcd
[   76.149930] usb 1-1.1: New USB device found, idVendor=1199, idProduct=a001, bcdDevice=17.29
[   76.149988] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   76.150006] usb 1-1.1: Product: Sierra Wireless EM7345 4G LTE
[   76.150021] usb 1-1.1: Manufacturer: Sierra Wireless Inc.
[   76.150035] usb 1-1.1: SerialNumber: 013937006806044
[   76.216031] cdc_mbim 1-1.1:1.0: setting rx_max = 16384
[   76.217268] cdc_mbim 1-1.1:1.0: cdc-wdm0: USB WDM device
[   76.218353] cdc_mbim 1-1.1:1.0 wwan0: register 'cdc_mbim' at usb-0000:01:00.0-1.1, CDC MBIM, f6:8c:31:66:54:19
[   76.226716] cdc_acm 1-1.1:1.2: ttyACM0: USB ACM device
[   81.756908] cdc_mbim 1-1.1:1.0: nonzero urb status received: -71
[   81.756955] cdc_mbim 1-1.1:1.0: wdm_int_callback - 0 bytes
[   81.761908] cdc_mbim 1-1.1:1.0: nonzero urb status received: -71
[   81.761942] cdc_mbim 1-1.1:1.0: wdm_int_callback - 0 bytes
[   81.766908] cdc_mbim 1-1.1:1.0: nonzero urb status received: -71
[   81.766937] cdc_mbim 1-1.1:1.0: wdm_int_callback - 0 bytes
[...]

Orange Romania SIM makes the modem work again:

mmcli -m any
  --------------------------------
  General  |                 path: /org/freedesktop/ModemManager1/Modem/0
           |            device id: fcbbf376865087eeba8c53f21f6d27f185727ad8
  --------------------------------
  Hardware |         manufacturer: Sierra Wireless Inc.
           |                model: Sierra Wireless EM7345 4G LTE
           |    firmware revision: FIH7160_V1.2_WW_01.1616.01
           |         h/w revision: XMM7160_V1.2_MBIM_GNSS_NAND_RE
           |            supported: gsm-umts, lte
           |              current: gsm-umts, lte
           |         equipment id: 013937006806044
  --------------------------------
  System   |               device: /sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1
           |              drivers: cdc_mbim, cdc_acm
           |               plugin: sierra
           |         primary port: cdc-wdm0
           |                ports: cdc-wdm0 (mbim), ttyACM0 (at), wwan0 (net)
  --------------------------------
  Status   |                 lock: sim-pin2
           |       unlock retries: sim-pin2 (3)
           |                state: connected
           |          power state: on
           |          access tech: gprs, umts
           |       signal quality: 54% (recent)
[...]

Put the Telekom Romania SIM card back in:

[   45.770572] cdc_mbim 1-1.1:1.0: nonzero urb status received: -71
[   45.770601] cdc_mbim 1-1.1:1.0: wdm_int_callback - 0 bytes
[   45.775572] cdc_mbim 1-1.1:1.0: nonzero urb status received: -71
[   45.775601] cdc_mbim 1-1.1:1.0: wdm_int_callback - 0 bytes
[   45.780574] cdc_mbim 1-1.1:1.0: nonzero urb status received: -71
[   45.780603] cdc_mbim 1-1.1:1.0: wdm_int_callback - 0 bytes
[   45.785548] cdc_mbim 1-1.1:1.0: nonzero urb status received: -71
[   45.785560] cdc_mbim 1-1.1:1.0: wdm_int_callback - 0 bytes
[   45.787273] usb 1-1.1: USB disconnect, device number 7
[   45.787791] cdc_mbim 1-1.1:1.0 wwan0: unregister 'cdc_mbim' usb-0000:01:00.0-1.1, CDC MBIM
[   46.160204] usb 1-1.1: new high-speed USB device number 8 using xhci_hcd
[   46.261440] usb 1-1.1: New USB device found, idVendor=8087, idProduct=0716, bcdDevice= 0.00
[   46.261449] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0

Unfortunately, I have a different EM7345 which throws the nonzero urb status received: -71 errors with Orange Romania SIM cards, so using Orange exclusively with EM7345 doesn’t seem to be an option.

What can I do to debug or solve the continuously resetting behaviour?

is this only happening to this device?
Can you connect the USB of the module another PC and see if there is related to host platform?

BTW, seems only MBIM interface is affected, how about using RMNET mode in AT!UDUSBCOMP?

Lastly, if you suspect this is related to SIM card, how about power up without SIM card and observe if there is problem on the MBIM interface?

Can you connect the USB of the module another PC and see if there is related to host platform?

This is happening across several Raspberry Pis and 1 Beaglebone Black device, so I don’t think it’s device dependent. However, I will try with a server and externally powered USB to be sure.

I will get back with a message here soon.

BTW, seems only MBIM interface is affected, how about using RMNET mode in AT!UDUSBCOMP?

I will try it out, thanks for the suggestion!

Lastly, if you suspect this is related to SIM card, how about power up without SIM card and observe if there is problem on the MBIM interface?

I suspect this is related to the network, not the SIM card. The reason I mentioned the network Telekom Romania is because I actually used different SIM cards during tests before coming here.


I will reply again with the above two attempts.

if you suspect this is related to network, you can set AT+CFUN=0 before power on and see if MBIM interface is OK

I moved the modem in question to a Linux PC with an externally powered USB hub and it connected to the Telekom network, it didn’t reset. So the same modem seems to work OK with an amd64 pc and sufficient power.

I moved it back to the Raspberry Pi, keeping the Telekom SIM in and it errors again nonzero urb status received: -71.

I added an externally powered USB hub to the Raspberry Pi, keeping the Telekom SIM in and it connected.

Could this be caused by some frequencies drawing more power? So one GSM network works, others cause errors which restart the modem?

Should I still attempt RMNET mode without the external hub?

In fact, simply using the USB hub makes the modem work, even without the external power. So essentially using a simple hub gets the modem working. Moving it back directly in the Raspberry Pi makes it reset every time with Telekom. Unexpected, I don’t see how the USB hub might help. This behaviour is consistent across different Raspberry Pis, so it isn’t exactly device specific.

Probably related to some power issue
Is your hub using usb1.1 or 2.0?

The hub is AXAGON HUE-S2B USB 3.0

Thanks for your help! If this comes up again, I’ll try the RMNET (qmi) mode.

The em7345 module is an Intel xmm7160 design. There’s obviously no RMNET/QMI mode. That’s a Qualcomm proprietary protocol/interface.