Problem with AirCard 340U on embedded Linux

Evade Flow evadeflow at gmail.com
Mon Aug 15 18:42:15 UTC 2016


I'm having a fight with a USB modem that I'm currently *losing*. Badly. I'm
hoping members of this list can help me turn the tide! I have the following
script that works fine on my desktop Linux system, but fails to obtain an
IP address on an embedded target:

#!/bin/bash
set -euo pipefail

export PATH=/home/embedded-dev/bin:$PATH

if [[ "$(hostname)" = "embedded-dev" ]]; then
  IFACE=wwp0s21f0u3u4i8
else
  IFACE=wwp0s26u1u2i8
fi

qmicli -p -d /dev/cdc-wdm0 --wds-start-network="fast.t-mobile.com"
--client-no-release-cid
sleep 1
qmicli -p -d /dev/cdc-wdm0 --wds-get-current-settings
sleep 1
ip link set ${IFACE} up
killall dhclient || true
killall -9 dhclient || true
sleep 1
dhclient -v ${IFACE}

For reference, here's the uname -a output for the target machine:

root at embedded-dev $ uname -a
Linux embedded-dev 4.1.13-abl #2 SMP Mon Aug 15 09:54:15 EDT 2016 x86_64
GNU/Linux

I've got libqmi-1.16.0 on this board:

root at embedded-dev $ qmicli --version

qmicli 1.16.0
Copyright (C) 2015 Aleksander Morgado
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2
.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

And this version of dhclient:

root at embedded-dev $ dhclient --version
isc-dhclient-4.3.2

And here's the output that gets logged when I plug the device into a USB
port:

root at embedded-dev $ dmesg
[  478.807167] usb 1-3.4: new high-speed USB device number 7 using xhci_hcd
[  478.893117] usb 1-3.4: config 1 has an invalid interface number: 9 but
max is 0
[  478.893125] usb 1-3.4: config 1 has no interface number 0
[  478.894156] usb 1-3.4: New USB device found, idVendor=1199,
idProduct=0fff
[  478.894160] usb 1-3.4: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[  478.894163] usb 1-3.4: Product: AirCard 340U
[  478.894166] usb 1-3.4: Manufacturer: Sierra Wireless, Incorporated
[  478.894169] usb 1-3.4: SerialNumber: 013323000518432
[  478.896117] usb-storage 1-3.4:1.9: USB Mass Storage device detected
[  478.897287] usb-storage: probe of 1-3.4:1.9 failed with error -5
[  482.179390] usb 1-3.4: USB disconnect, device number 7
[  482.460787] usb 1-3.4: new high-speed USB device number 8 using xhci_hcd
[  482.546811] usb 1-3.4: config 1 has an invalid interface number: 8 but
max is 4
[  482.546819] usb 1-3.4: config 1 has an invalid interface number: 9 but
max is 4
[  482.546822] usb 1-3.4: config 1 has no interface number 1
[  482.546825] usb 1-3.4: config 1 has no interface number 4
[  482.547806] usb 1-3.4: New USB device found, idVendor=1199,
idProduct=9051
[  482.547811] usb 1-3.4: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[  482.547814] usb 1-3.4: Product: AirCard 340U
[  482.547817] usb 1-3.4: Manufacturer: Sierra Wireless, Incorporated
[  482.547819] usb 1-3.4: SerialNumber: 013323000518432
[  482.550472] qcserial 1-3.4:1.2: Qualcomm USB modem converter detected
[  482.551133] usb 1-3.4: Qualcomm USB modem converter now attached to
ttyUSB0
[  482.551683] qcserial 1-3.4:1.3: Qualcomm USB modem converter detected
[  482.552020] usb 1-3.4: Qualcomm USB modem converter now attached to
ttyUSB1
[  482.552692] qmi_wwan 1-3.4:1.8: cdc-wdm0: USB WDM device
[  482.553086] qmi_wwan 1-3.4:1.8 wwan0: register 'qmi_wwan' at
usb-0000:00:15.0-3.4, WWAN/QMI device, 0e:b8:0a:b2:69:43
[  482.554014] usb-storage 1-3.4:1.9: USB Mass Storage device detected
[  482.555115] scsi host5: usb-storage 1-3.4:1.9
[  482.557113] qcserial 1-3.4:1.0: Qualcomm USB modem converter detected
[  482.557430] usb 1-3.4: Qualcomm USB modem converter now attached to
ttyUSB2
[  482.571196] qmi_wwan 1-3.4:1.8 wwp0s21f0u3u4i8: renamed from wwan0
[  483.545931] scsi 5:0:0:0: Direct-Access     Aircard  Disk Drive
1.00 PQ: 0 ANSI: 2
[  483.548424] sd 5:0:0:0: Attached scsi generic sg0 type 0
[  483.550934] sd 5:0:0:0: [sda] Attached SCSI removable disk

When I run the script on the target, I see the following output:

root at embedded-dev $ ./start-net.sh
[/dev/cdc-wdm0] Network started
        Packet data handle: '1143419264'
[/dev/cdc-wdm0] Client ID not released:
        Service: 'wds'
            CID: '1'
[/dev/cdc-wdm0] Current settings retrieved:
           IP Family: IPv4
        IPv4 address: 21.87.88.78
    IPv4 subnet mask: 255.255.255.252
IPv4 gateway address: 21.87.88.77
    IPv4 primary DNS: 10.177.0.34
  IPv4 secondary DNS: 10.177.0.210
                 MTU: 1430
             Domains: none
Internet Systems Consortium DHCP Client 4.3.2
Copyright 2004-2015 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/wwp0s21f0u3u4i8/0e:b8:0a:b2:69:43
Sending on   LPF/wwp0s21f0u3u4i8/0e:b8:0a:b2:69:43
Sending on   Socket/fallback
DHCPDISCOVER on wwp0s21f0u3u4i8 to 255.255.255.255 port 67 interval 5
DHCPDISCOVER on wwp0s21f0u3u4i8 to 255.255.255.255 port 67 interval 10
DHCPDISCOVER on wwp0s21f0u3u4i8 to 255.255.255.255 port 67 interval 17
DHCPDISCOVER on wwp0s21f0u3u4i8 to 255.255.255.255 port 67 interval 9
DHCPDISCOVER on wwp0s21f0u3u4i8 to 255.255.255.255 port 67 interval 8
DHCPDISCOVER on wwp0s21f0u3u4i8 to 255.255.255.255 port 67 interval 12
No DHCPOFFERS received.
No working leases in persistent database - sleeping.

My desktop machine is running Fedora 23:

[~$:999] uname -a
Linux localhost.localdomain 4.4.9-300.fc23.x86_64 #1 SMP Wed May 4 23:56:27
UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

It's also using libqmi-1.16.0, and a slightly different version of dhclient:

[~$:1017] dhclient --version
isc-dhclient-4.3.3-P1

When I plug the modem into this machine and run the same script, it emits
the following:

[~$:1014] sudo ./start-net.sh
[sudo] password for demo:
[/dev/cdc-wdm0] Network started
        Packet data handle: '1143422144'
[/dev/cdc-wdm0] Client ID not released:
        Service: 'wds'
            CID: '3'
[/dev/cdc-wdm0] Current settings retrieved:
           IP Family: IPv4
        IPv4 address: 26.173.92.29
    IPv4 subnet mask: 255.255.255.252
IPv4 gateway address: 26.173.92.30
    IPv4 primary DNS: 10.177.0.34
  IPv4 secondary DNS: 10.177.0.210
                 MTU: 1430
             Domains: none
dhclient: no process found
dhclient: no process found
Internet Systems Consortium DHCP Client 4.3.3-P1
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/wwp0s26u1u2i8/7a:b0:a0:37:07:94
Sending on   LPF/wwp0s26u1u2i8/7a:b0:a0:37:07:94
Sending on   Socket/fallback
DHCPDISCOVER on wwp0s26u1u2i8 to 255.255.255.255 port 67 interval 5
(xid=0xc4f9f664)
DHCPREQUEST on wwp0s26u1u2i8 to 255.255.255.255 port 67 (xid=0xc4f9f664)
DHCPOFFER from 26.173.92.30
DHCPACK from 26.173.92.30 (xid=0xc4f9f664)
bound to 26.173.92.29 -- renewal in 3212 seconds.

After that, I have a glorious LTE connection to the Interwebs! But I've had
no luck getting it to work on the embedded device. Can anybody recommend
steps to troubleshoot this?

Some things I've tried so far include:

1. Upgrading from libqmi-1.12.2 to 1.16.0. This allowed me to use
--wds-get-current-settings, but dhclient still failed to obtain an IP
address.

2. Manually configure the connection based on the settings reported by qmicli
-p -d /dev/cdc-wdm0 --wds-get-current-settings. I was unable to get this to
work, neither on the target, nor on my desktop machine. The IP address,
routing table and /etc/resolv.conf *looked *correct to me, but... I'm not
very familiar with the commands ip addr, ip route, ip link, etc, so I
probably made some mistakes. When other posts on this mailing list
suggested using dhclient, for similar situations, I didn't pursue manual
configuration any further. If somebody can tell me the correct commands
needed to manually configure the connection, I can check this, if it helps.

3. Applying the patches mentioned in this mailing list thread:
https://lists.freedesktop.org/archives/libqmi-devel/2015-December/001477.html

I'm about out of ideas at this point. I've seen other posts on this mailing
list that mention using tcpdump to sniff packets, but I'm not sure I'd know
which interface to capture on, or how to interpret the traces. Any
hints/tips along those lines will be much appreciated!

One other thing that may be worth mentioning is that the kernel log output
upon inserting the modem into my desktop machine is more-or-less *identical*,
except for a few errors that get emitted:

[83474.891190] usb 1-1.2: new high-speed USB device number 13 using ehci-pci
[83474.977240] usb 1-1.2: config 1 has an invalid interface number: 9 but
max is 0
[83474.977247] usb 1-1.2: config 1 has no interface number 0
[83474.978607] usb 1-1.2: New USB device found, idVendor=1199,
idProduct=0fff
[83474.978616] usb 1-1.2: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[83474.978622] usb 1-1.2: Product: AirCard 340U
[83474.978627] usb 1-1.2: Manufacturer: Sierra Wireless, Incorporated
[83474.978631] usb 1-1.2: SerialNumber: 013323000518432
[83474.980975] usb-storage 1-1.2:1.9: USB Mass Storage device detected
[83474.982028] usb-storage: probe of 1-1.2:1.9 failed with error -5
[83478.556940] usb 1-1.2: USB disconnect, device number 13
[83478.811958] usb 1-1.2: new high-speed USB device number 14 using ehci-pci
[83478.898017] usb 1-1.2: config 1 has an invalid interface number: 8 but
max is 4
[83478.898024] usb 1-1.2: config 1 has an invalid interface number: 9 but
max is 4
[83478.898027] usb 1-1.2: config 1 has no interface number 1
[83478.898030] usb 1-1.2: config 1 has no interface number 4
[83478.899477] usb 1-1.2: New USB device found, idVendor=1199,
idProduct=9051
[83478.899483] usb 1-1.2: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[83478.899487] usb 1-1.2: Product: AirCard 340U
[83478.899490] usb 1-1.2: Manufacturer: Sierra Wireless, Incorporated
[83478.899492] usb 1-1.2: SerialNumber: 013323000518432
[83478.901929] qcserial 1-1.2:1.2: Qualcomm USB modem converter detected
[83478.902109] usb 1-1.2: Qualcomm USB modem converter now attached to
ttyUSB0
[83478.902571] qcserial 1-1.2:1.3: Qualcomm USB modem converter detected
[83478.902718] usb 1-1.2: Qualcomm USB modem converter now attached to
ttyUSB1
[83478.903582] qmi_wwan 1-1.2:1.8: cdc-wdm0: USB WDM device
[83478.903957] qmi_wwan 1-1.2:1.8 wwan0: register 'qmi_wwan' at
usb-0000:00:1a.0-1.2, WWAN/QMI device, 32:5b:78:6c:82:3a
[83478.904613] usb-storage 1-1.2:1.9: USB Mass Storage device detected
[83478.905929] scsi host16: usb-storage 1-1.2:1.9
[83478.906604] qcserial 1-1.2:1.0: Qualcomm USB modem converter detected
[83478.906769] usb 1-1.2: Qualcomm USB modem converter now attached to
ttyUSB2
[83478.984865] qmi_wwan 1-1.2:1.8 wwp0s26u1u2i8: renamed from wwan0
[83479.455637] qcserial ttyUSB2: usb_wwan_indat_callback: resubmit read urb
failed. (-2)
[83479.455655] qcserial ttyUSB2: usb_wwan_indat_callback: resubmit read urb
failed. (-2)
[83479.455660] qcserial ttyUSB2: usb_wwan_indat_callback: resubmit read urb
failed. (-2)
[83479.455941] qcserial ttyUSB2: Qualcomm USB modem converter now
disconnected from ttyUSB2
[83479.455974] qcserial 1-1.2:1.0: device disconnected
[83479.911726] scsi 16:0:0:0: Direct-Access     Aircard  Disk Drive
1.00 PQ: 0 ANSI: 2
[83479.912912] sd 16:0:0:0: Attached scsi generic sg2 type 0
[83479.917020] sd 16:0:0:0: [sdb] Attached SCSI removable disk

Perhaps those resubmit read urb failed errors provide a clue as to why this
device works on my desktop, but not the embedded device?

Thanks for your consideration, this has been driving me nuts for two weeks
now... `:-]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/libqmi-devel/attachments/20160815/7c1be1ef/attachment-0001.html>


More information about the libqmi-devel mailing list