MC7455: Fails to get IP/connect

I have a Jalapeno running OpenWRT (18.06.1) with the MC7455 connected to the Jalapeno via a pci express to USB connector and an AT&T SIM. I am trying to use qmi_wwan and uqmi but can’t seem to get it to connect successfully or give me an IP.
When I first plug in the MC7455 I get the following messages:
[ 453.072158] usb 1-1: new high-speed USB device number 2 using xhci-hcd
[ 453.253005] usb 1-1: config 1 has an invalid interface number: 8 but max is 4
[ 453.253053] usb 1-1: config 1 has an invalid interface number: 10 but max is 4
[ 453.259135] usb 1-1: config 1 has no interface number 1
[ 453.266297] usb 1-1: config 1 has no interface number 4
[ 453.315151] qmi_wwan 1-1:1.8: cdc-wdm0: USB WDM device
[ 453.317207] qmi_wwan 1-1:1.8 wwan0: register ‘qmi_wwan’ at usb-xhci-hcd.0.auto-1, WWAN/QMI device, 36:a7:fb:50:76:e2
[ 453.347006] qmi_wwan 1-1:1.10: cdc-wdm1: USB WDM device
[ 453.348255] qmi_wwan 1-1:1.10 wwan1: register ‘qmi_wwan’ at usb-xhci-hcd.0.auto-1, WWAN/QMI device, 36:a7:fb:50:76:e2

This adds /dev/cdc-wdm0, /dev/cdc-wdm1, and a network interface called wwan0. I am not totally sure why it adds 2 cdc-wdm devices? The real problem is that the network interface wwan0 doesn’t get an IP. Using the uqmi commands if I do ‘uqmi -d /dev/cdc-wdm0 --get-versions --get-data-status --get-capabilities --get-signal-info --get-serving-system --wda-get-data-format’ then the output is:
{
“service_0”: “1,5”,
“service_1”: “1,67”,
“service_2”: “1,14”,
“service_3”: “1,25”,
“service_4”: “1,6”,
“service_5”: “1,10”,
“service_7”: “1,3”,
“service_8”: “1,2”,
“service_9”: “2,1”,
“service_10”: “2,24”,
“service_11”: “1,45”,
“service_12”: “1,4”,
“service_15”: “1,0”,
“service_16”: “2,0”,
“service_17”: “1,0”,
“service_23”: “1,0”,
“service_24”: “1,0”,
“service_26”: “1,16”,
“service_29”: “1,1”,
“service_34”: “1,0”,
“service_36”: “1,0”,
“service_41”: “1,0”,
“service_42”: “1,0”,
“service_43”: “1,0”,
“service_46”: “1,0”,
“service_48”: “1,0”,
“service_49”: “1,0”,
“service_54”: “1,0”,
“service_225”: “1,0”,
“service_240”: “1,0”,
“service_243”: “1,0”,
“service_245”: “1,0”,
“service_246”: “1,0”
}
“disconnected”
{
“max_tx_channel_rate”: 50000000,
“max_rx_channel_rate”: 300000000,
“data_service”: “non_simultaneous_cs_ps”,
“sim”: “supported”,
“networks”: [
“umts”,
“lte”
]
}
{
“type”: “wcdma”,
“rssi”: -68,
“ecio”: 21
}
{
“registration”: “registered”,
“plmn_mcc”: 310,
“plmn_mnc”: 410,
“plmn_description”: “AT&T”,
“roaming”: false
}
“raw-ip”

The output is the same if i change /dev/cdc-wdm0 to /dev/cdc-wdm1. From this output it would seem that the signal strength is good and the SIM should be supported but it is disconnected. But if I run ‘uqmi -d /dev/cdc-wdm0 --start-network phone --autoconnect’ to try to connect using ‘phone’ as the APN then the output is:
“No effect”
Similarly if i change /dev/cdc-wdm0 to /dev/cdc-wdm1 the output is still “No effect”. I tried changing the APN to other AT&T APNs such as ‘wap.cingular’ but they all give “No effect”. I tried running ‘uqmi -d /dev/cdc-wdm0 --set-network-modes lte’ to try to force it to use LTE and then ran ‘uqmi -d /dev/cdc-wdm0 --start-network phone --autoconnect’ again but it still outputs “No effect” and running ‘uqmi -d /dev/cdc-wdm0 --get-data-status’ still outputs “disconnected” and ‘uqmi -d /dev/cdc-wdm0 --get-signal-info’ outputs:
{
“type”: “lte”,
“rssi”: -70,
“rsrq”: -12,
“rsrp”: -99,
“snr”: 212
}
How can I get it to connect and give me an IP? Am I running the wrong commands or missing something?

Thanks

You should use GobiNet and GobiSerial driver instead of qmi_wwan driver.

Because the modem firmware is configured with 2 RMNET functions. These obviously share the same radio, so they must connect to the same network and will share all network and device related data. The 2 functions can be used to connect to different APNs in the same network. Note that multiplexing sessions on one RMNET function provides similar functionality, and will replace the firmware based multiplexing in the future (starting with EM7565) IIUC.

Which is to be expected if the firmware is already configured to autoconnect. Enabling autoconnect more than once makes no sense.

Yu should debug connection issues with autoconnect disabled, and only enable it when you know the connection can succeed. If at all - I never use autoconnect myself since it cannot possibly work without host side co-operation.

I believe this is an OpenWrt support question, more suitable for the OpenWrt forums. Try confguring the modem as explained on https://openwrt.org/docs/guide-user/network/wan/wwan/ltedongle ,and report any issues on the OpenWrt forums.

“Use GobiNet” is the expected and appropriate answer here :wink:

@dgeissler,

So couple of points.

  • There are two QMI interfaces to enable you to start two separate IP connections up, the theoretical max in LTE is 11 realistically this is limited to 8 but in the 74 series you can start two. Later units EM75, WP76, etc use a different mechanism meaning you can start more.
  • For the IP address/data session the unit does not automatically start a session that a system will see (it will get an IP address on LTE attach but will not pass this back to the system). You need to start the session up using libqmi which I think you might be trying to do given the strings you are sending (I am not proficient with it). Assuming the operation is successful then youmight want to try to force the system to populate the IP interface with something like ‘dhclient wwan1’.

Regards

Matt

Thanks for all the replies guys, I managed to fix the issue.
For anyone else who runs into this problem: Turns out that there are different firmwares for the MC7455 based on the carrier https://source.sierrawireless.com/resources/airprime/minicard/74xx/airprime-em_mc74xx-approved-fw-packages/ The MC7455 I received had the SWI9X30C_02.24.05.06 firmware which doesn’t support AT&T so all I had to do was change the firmware to SWI9X30C_02.30.01.01 and it worked right away!