Qualcomm Snapdragon X7 LTE (Dell Latitude 7490)

Hello all!

I am venturing into SUSE Linux and I am liking my stay so far. I have a Dell Latitude 7490 with a Qualcomm Snapdragon X7 LTE card installed. I have a Google Fi data-only SIM inserted and I’m trying to get things to work.

Now, I had this working somehow yesterday. After putting my device asleep and waking it back up, the device seems to have disappeared and I cannot get it to work again. Sadly, I don’t know what exact steps I took to get it working in the first place as I was shotgun-debugging at that point (bad bad practice!).

I’ll give you all some output of what I got.

From the command ‘usb-devices’ I was able to see my modem:

T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
P:  Vendor=413c ProdID=81c2 Rev=00.06
S:  Manufacturer=Sierra Wireless, Incorporated
S:  Product=DW5811e Snapdragon™ X7 LTE
S:  SerialNumber=LF83558196021024
C:  #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=504mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I:  If#=12 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
I:  If#=13 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)

Within ModemManager (I have the service enabled via systemctl) I get the following status:

● ModemManager.service - Modem Manager
   Loaded: loaded (/usr/lib/systemd/system/ModemManager.service; enabled; vendor preset: enabled)
   Active: active (running)
 Main PID: 1331 (ModemManager)
    Tasks: 3 (limit: 4915)
   CGroup: /system.slice/ModemManager.service
           └─1331 /usr/sbin/ModemManager


Apr 02 06:53:44 linux-4er5 ModemManager[1331]: spawning new mbim-proxy (try 1)...
Apr 02 06:53:44 linux-4er5 ModemManager[1331]: [/dev/cdc-wdm0] Read max control message size from descriptors file: 4096
Apr 02 06:54:01 linux-4er5 ModemManager[1331]: <info>  Creating modem with plugin 'Generic' and '1' ports
Apr 02 06:54:01 linux-4er5 ModemManager[1331]: <warn>  Could not grab port (tty/ttyS4): 'Cannot add port 'tty/ttyS4', unhandled serial type'
Apr 02 06:54:01 linux-4er5 ModemManager[1331]: <warn>  Couldn't create modem for device at '/sys/devices/pci0000:00/0000:00:16.3': Failed to find primary AT port
Apr 02 06:54:14 linux-4er5 ModemManager[1331]: proxy configuration failed: closed
Apr 02 06:54:14 linux-4er5 ModemManager[1331]: [/dev/cdc-wdm0] channel destroyed
Apr 02 06:54:14 linux-4er5 ModemManager[1331]: <info>  Creating modem with plugin 'Dell' and '2' ports
Apr 02 06:54:14 linux-4er5 ModemManager[1331]: <warn>  Could not grab port (usbmisc/cdc-wdm0): 'Cannot add port 'usbmisc/cdc-wdm0', unsupported'
Apr 02 06:54:14 linux-4er5 ModemManager[1331]: <warn>  Couldn't create modem for device at '/sys/devices/pci0000:00/0000:00:14.0/usb2/2-2': Failed to find primary AT port

Seems odd! So I checked my installed modem devices with ‘mmcli -L’:

No modems were found.

At this point I am a bit at a loss. When I had it working, the modem showed up under mmcli as it should. It’s almost like the device went into some low power state that screwed everything up. I have tried plugging in the laptop and rebooting the laptop while plugged in with no success.

For more info, here are some more outputs:
‘lsusb’:

Bus 002 Device 003: ID 413c:81c2 Dell Computer Corp. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 0c45:6717 Microdia 
Bus 001 Device 004: ID 0a5c:5832 Broadcom Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

‘lspci’:

00:00.0 Host bridge: Intel Corporation Device 5914 (rev 08)
00:02.0 VGA compatible controller: Intel Corporation Device 5917 (rev 07)
00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 08)
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)
00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21)
00:15.1 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 (rev 21)
00:15.2 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #2 (rev 21)
00:15.3 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #3 (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:16.3 Serial controller: Intel Corporation Device 9d3d (rev 21)
00:17.0 RAID bus controller: Intel Corporation 82801 Mobile SATA Controller [RAID mode] (rev 21)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #1 (rev f1)
00:1c.2 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #3 (rev f1)
00:1c.4 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Device 9d4e (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (4) I219-LM (rev 21)
01:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS525A PCI Express Card Reader (rev 01)
02:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)

‘lshw -C network’:

  *-network                 
       description: Wireless interface
       product: Wireless 8265 / 8275
       vendor: Intel Corporation
       physical id: 0
       bus info: pci@0000:02:00.0
       logical name: wlan0
       version: 78
       serial: 18:56:80:4c:89:98
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=iwlwifi driverversion=4.12.14-150.14-default firmware=34.0.1 ip=192.168.10.236 latency=0 link=yes multicast=yes wireless=IEEE 802.11
       resources: irq:124 memory:ec000000-ec001fff
  *-network
       description: Ethernet interface
       product: Ethernet Connection (4) I219-LM
       vendor: Intel Corporation
       physical id: 1f.6
       bus info: pci@0000:00:1f.6
       logical name: eth0
       version: 21
       serial: e4:b9:7a:5c:fd:49
       capacity: 1Gbit/s
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=e1000e driverversion=3.2.6-k firmware=0.1-4 latency=0 link=no multicast=yes port=twisted pair
       resources: irq:128 memory:ec200000-ec21ffff
  *-network DISABLED
       description: Ethernet interface
       physical id: 2
       logical name: wwan0
       serial: 02:3d:4a:58:9b:f3
       capabilities: ethernet physical
       configuration: broadcast=yes driver=cdc_mbim driverversion=22-Aug-2005 firmware=CDC MBIM link=no multicast=yes

‘rfkill list all’:

0: dell-wifi: Wireless LAN
    Soft blocked: no
    Hard blocked: no
1: dell-bluetooth: Bluetooth
    Soft blocked: yes
    Hard blocked: no
2: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no

‘ls /dev/cdc*’

/dev/cdc-wdm0

Any help would be appreciated. Thanks!

Hey I did a thing!

Ok so after some digging around, I started looking into the ‘mbim-network’ command. I already knew my modem was located at /dev/cdc-wdm0. I modified a config file at /etc/mbim-network.conf to contain the following options:

APN=h2g2
PROXY=yes

(note that h2g2 is specific to my carrier, look up your carrier’s APN and use that instead)

After saving the config file, I ran

mbim-network /dev/cdc-wdm0 start

The command created a bunch of output:

Loading profile at /etc/mbim-network.conf...
    APN: h2g2
    APN auth protocol: unset
    APN user: unset
    APN password: unset
    mbim-proxy: yes
Querying subscriber ready status 'mbimcli -d /dev/cdc-wdm0 --query-subscriber-ready-status --no-close --device-open-proxy'...
error: operation failed: Transaction timed out
[/dev/cdc-wdm0] Session not closed: TRID: '4'
Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 4)
Querying registration state 'mbimcli -d /dev/cdc-wdm0 --query-registration-state --no-open=4 --no-close --device-open-proxy'...
[/dev/cdc-wdm0] Registration status: Network error: 'unknown' Register state: 'deregistered' Register mode: 'automatic' Available data classes: 'unknown' Current cellular class: 'gsm' Provider ID: 'unknown' Provider name: 'unknown' Roaming text: 'unknown' Registration flags: 'packet-service-automatic-attach' [/dev/cdc-wdm0] Session not closed: TRID: '6'
Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 6)
Attaching to packet service with 'mbimcli -d /dev/cdc-wdm0 --attach-packet-service --no-open=6 --no-close --device-open-proxy'...
error: operation failed: NotInitialized
Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 8)
Starting network with 'mbimcli -d /dev/cdc-wdm0 --connect=apn='h2g2' --no-open=8 --no-close --device-open-proxy'...
error: operation failed: NotInitialized
Network start failed
[/dev/cdc-wdm0] Session not closed: TRID: '10'
Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 10)

After this, I restarted ModemManager via systemctl:

systemctl stop ModemManager
systemctl start ModemManager

Now my modem is working again! ‘mmcli -L’ lists the modem:

Found 1 modems:
 /org/freedesktop/ModemManager1/Modem/0 [Dell] MBIM [413C:81C2]

And the status of ModemManager:

● ModemManager.service - Modem Manager
   Loaded: loaded (/usr/lib/systemd/system/ModemManager.service; enabled; vendo>
   Active: active (running) since Tue 2019-04-02 07:49:41 CDT; 3s ago
 Main PID: 12594 (ModemManager)
    Tasks: 4 (limit: 4915)
   CGroup: /system.slice/ModemManager.service
           └─12594 /usr/sbin/ModemManager

Apr 02 07:49:43 linux-4er5 ModemManager[12594]: [/dev/cdc-wdm0] Releasing 'dms'>
Apr 02 07:49:43 linux-4er5 ModemManager[12594]: [/dev/cdc-wdm0] Unregistered 'd>
Apr 02 07:49:43 linux-4er5 ModemManager[12594]: [/dev/cdc-wdm0] sending message>
Apr 02 07:49:43 linux-4er5 ModemManager[12594]: [/dev/cdc-wdm0] Received MBIM m>
Apr 02 07:49:44 linux-4er5 ModemManager[12594]: [/dev/cdc-wdm0] Releasing '(nul>
Apr 02 07:49:44 linux-4er5 ModemManager[12594]: <info>  Modem /org/freedesktop/>
Apr 02 07:49:44 linux-4er5 ModemManager[12594]: <info>  Modem /org/freedesktop/>
Apr 02 07:49:44 linux-4er5 ModemManager[12594]: <info>  Modem /org/freedesktop/>
Apr 02 07:49:44 linux-4er5 ModemManager[12594]: <info>  Modem /org/freedesktop/>
Apr 02 07:49:44 linux-4er5 ModemManager[12594]: <info>  Modem /org/freedesktop/>

Now, I don’t know why I need to do this after I wake the machine from sleep… but I’m going to do research and see if I can automate this or something. If anyone has a better solution please let me know.

More info:

After waking from sleep, the modem was off. In order to get it started again I had to do the following

  1. Execute the ‘ip link set wwan0 up’ command to turn on the interface.
  2. Execute the ‘mbim-network /dev/cdc-wdm0 start’ command.
  3. Toggle the Mobile Broadband setting to be on withing Gnome’s Settings application under the Network section.

After performing these three steps on system wake, I can use the modem. I’m wondering if perhaps the modem is being disabled on sleep and then not woken up. I do have the tlp and tlp-sleep services installed and active. Will report back if I find out more.