Do I need to change firmware versions to switch carriers?

Dear Forum,

I originally purchased an MC7354 pre-configured for use with Verizon Wireless. However, after fighting Verizon for a week I am now fed up enough to go with another carrier, AT&T to be exact, and was wondering if I needed to change firmware versions to do so. I am using an MC7354 configured from the factory to work with Verizon. Additionally I am using a gateworks ventanna board and openwrt for my work. I read this article http://ftp1.digi.com/support/documentation/QN_39_Carrier_Switching_with_MC7354.pdf which says I only need to access the modem at /dev/cdc-wdm1 instead of /dev/cdc-wmd0. Additionally, that the same firmware version is used for AT&T and Verizon. Can anyone confirm this is true? I am still unable to register and connect to an AT&T tower, but that could be because I do not have antennas attached… I will include the output from a few libqmi commands below:

cat /etc/config/network

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd92:e868:6df7::/48'

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wan'
        option ifname 'wwan1'
        option proto 'qmi'
        option service 'cdma'
        option delay '90'
        option ifnanme 'wwan1'
        option apn 'ISP.CINGULAR'
        option device '/dev/cdc-wdm1'

root@OpenWrt:/# ifconfig
br-lan    Link encap:Ethernet  HWaddr 00:D0:12:A2:F0:11
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fd92:e868:6df7::1/60 Scope:Global
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  HWaddr 00:D0:12:A2:F0:11
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:128 errors:0 dropped:0 overruns:0 frame:0
          TX packets:128 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:9376 (9.1 KiB)  TX bytes:9376 (9.1 KiB)


root@OpenWrt:/# uqmi -s -d /dev/cdc-wdm1 --get-pin-status
{"pin1_status":"disabled","pin1_verify_tries":3,"pin1_unblock_tries":10,"pin2_status":"not_verified","pin                                                                                                                                    2_verify_tries":3,"pin2_unblock_tries":10}
root@OpenWrt:/# uqmi -s -d /dev/cdc-wdm0 --get-pin-status
{"pin1_status":"disabled","pin1_verify_tries":3,"pin1_unblock_tries":10,"pin2_status":"not_verified","pin                                                                                                                                    2_verify_tries":3,"pin2_unblock_tries":10}


root@OpenWrt:/# uqmi -s -d /dev/cdc-wdm1 --get-serving-system
{"registration":"not_registered"}
root@OpenWrt:/# uqmi -s -d /dev/cdc-wdm0 --get-serving-system
{"registration":"not_registered"}

root@OpenWrt:/# uqmi -s -d /dev/cdc-wdm0 --get-data-status
"disconnected"
root@OpenWrt:/# uqmi -s -d /dev/cdc-wdm1 --get-data-status
"disconnected"

root@OpenWrt:/# logread | grep qmi
Thu Jun 23 22:46:45 2016 kern.info kernel: [   32.441160] qmi_wwan 1-1:1.8: cdc-wdm0: USB WDM device
Thu Jun 23 22:46:45 2016 kern.info kernel: [   32.447087] qmi_wwan 1-1:1.8 wwan0: register 'qmi_wwan' at                                                                                                                                     usb-ci_hdrc.1-1, WWAN/QMI device, 86:bc:60:41:ef:12
Thu Jun 23 22:46:45 2016 kern.info kernel: [   32.457766] qmi_wwan 1-1:1.10: cdc-wdm1: USB WDM device
Thu Jun 23 22:46:45 2016 kern.info kernel: [   32.463774] qmi_wwan 1-1:1.10 wwan1: register 'qmi_wwan' at                                                                                                                                     usb-ci_hdrc.1-1, WWAN/QMI device, 86:bc:60:41:ef:12
Thu Jun 23 22:46:45 2016 kern.info kernel: [   32.474061] usbcore: registered new interface driver qmi_ww                                                                                                                                    an

That is completely wrong; cdc-wdm0 and cdc-wdm1 are two different ports to access the same running system in the modem; each of those ports will have a wwan network interface associated, and you would be able to e.g. connect both at the same time to different APNs.

Different carriers go through validation with different firmware versions, so this may not be true. E.g. you may see 05.05.58.01 for Verizon and 05.05.58.00 for AT&T. What is true is that the module may be able to store multiple images, so you would be able to switch from one to the other without needing a firmware flash each time (although this is not the case for the MC7354 IIRC).

Well, having antennas connected is always desirable :wink:

Please note those commands you pasted are not libqmi commands, those are openwrt’s “uqmi” tool commands. If you want to use libqmi under openwrt you can setup this openwrt repo. That version configured there is a bit old, though, but if you modify the Makefile you can build 1.18.0 easily, which comes with the qmi-firmware-update tool.

uqmi is build off of libqmi but just lighter weight to fit on the gateworks flash storage. Thank you for all your help, I bought a few conical disk antennas to cover all the possible frequencies “they cover a decade which is way overkill.” I now notice that instead of not being registered I am being denied.

uqmi -s -d /dev/cdc-wdm1 --get-serving-system
{"registration":"registering_denied","plmn_mcc":310,"plmn_mnc":260,"plmn_description":"","roaming":true}

I modified my network configuration file to fix the error that had the mode set to cdma instead of gsm

root@OpenWrt:/# cat /etc/config/network

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd92:e868:6df7::/48'

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wan'
        option ifname 'wwan1'
        option proto 'qmi'
        option service 'gsm'
        option delay '90'
        option ifnanme 'wwan1'
        option apn 'ISP.CINGULAR'
        option device '/dev/cdc-wdm1'

Based on this information, can someone help me confirm that I likely do not have the correct firmware version based on process of elimination? If you have any additional ideas about why it might be failing please let me know.