Description of problem: Very bizarre issue. I have a Dell Latitude E6530 laptop dual boot with Fedora 18 and Windows 7. I recently installed an internal PCIe Min Card WWAN adapter, specifically: Dell Wireless 5804(AT&T, the Verizon Model is the 5802) Novatel Expedite E371 PCI Express Mini Card Qualcomm MDM9200 Chipset In Windows it operates fine. In Fedora 18 it "detects" it but Network Manager lists it as a wired(ethernet) device with the name "Novatel Wireless HSPA". I tried adding a new WWAN(Mobile Broadband) connection under the connection manager but it said no wwan devices found. I get generic info when I run lsusb(couple of Dell devices) but -vvv reveals more info, for this specific device I get: Bus 002 Device 003: ID 413c:819b Dell Computer Corp. Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 ? bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 idVendor 0x413c Dell Computer Corp. idProduct 0x819b bcdDevice 0.00 iManufacturer 4 Novatel Wireless, Inc. iProduct 3 Novatel Wireless HSPA iSerial 5 012773000168391 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 254 bNumInterfaces 7 bConfigurationValue 1 iConfiguration 2 Novatel Configuration bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 5 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 4 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x86 EP 6 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x05 EP 5 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 6 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 0 bFunctionProtocol 0 iFunction 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 6 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 6 Ethernet Networking bInterfaceProtocol 0 iInterface 0 CDC Header: bcdCDC 1.10 CDC Ethernet: iMacAddress 1 00A0C6000000 bmEthernetStatistics 0x00000000 wMaxSegmentSize 1544 wNumberMCFilters 0x0001 bNumberPowerFilters 0 CDC Union: bMasterInterface 6 bSlaveInterface 7 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x87 EP 7 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 5 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 7 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 7 bAlternateSetting 1 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x88 EP 8 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x06 EP 6 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 ** UNRECOGNIZED: 2c ff 42 49 53 54 00 01 07 06 40 00 00 00 00 00 01 07 f4 01 02 08 f4 01 03 09 88 13 04 0a 10 27 05 0b 10 27 06 0c f4 01 07 0d f4 01 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 ? bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0000 (Bus Powered) and ifconfig shows: # ifconfig em1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether d4:be:d9:7a:c4:2a txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 20 memory 0xf7e00000-f7e20000 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::2a0:c6ff:fe00:0 prefixlen 64 scopeid 0x20<link> ether 00:a0:c6:00:00:00 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 24 bytes 3848 (3.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 40 bytes 3432 (3.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 40 bytes 3432 (3.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.10.141 netmask 255.255.255.0 broadcast 192.168.10.255 inet6 fe80::2677:3ff:fe10:376c prefixlen 64 scopeid 0x20<link> ether 24:77:03:10:37:6c txqueuelen 1000 (Ethernet) RX packets 14387 bytes 15796935 (15.0 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 9940 bytes 1921451 (1.8 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 Version-Release number of selected component (if applicable): Fedora 18(all updates applied, stock kernel) Linux insertgoodhostnamehere 3.8.8-202.fc18.x86_64 #1 SMP Wed Apr 17 23:25:17 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux Network Manager 0.9.8.1 How reproducible: Easily if hardware available Steps to Reproduce: 1. Install Card in Laptop 2. Check status in Network Manager 3. Compare with lsusb -vvv Actual results: WWAN card treated as ethernet device Expected results: WWAN card treated as expected device Additional info: Any help on this matter would be appreciated.
I was able to get it working with guidance from the following thread: http://ubuntuforums.org/showthread.php?t=1969322 I had to run: # modprobe option # echo 413c 819b > /sys/bus/usb-serial/drivers/option1/new_id # systemctl restart NetworkManager.service After this it began to work, although obviously after a restart it will break again usb-devices revealed that there are 6 components to this device, the last 2 were picked up as the wired network device NetworkManager wanted to use. The first 4 at first don't have any driver assigned, but the commands above resolve that. I think it's due to the WWAN card's product ID not being recognized and thus the driver isn't loaded unless it's done manually. I don't know what package needs to be patched to resolve this, guidance on that regard would be appreciated. Even while connected on the cell modem, the wired network device is still present in Network Manager(albeit vestigial). I'm not sure if this is supposed to be detected as a different device or if it's just a leftover component for a feature in the windows software; the device works fine with the "wired" connection disabled.
The device needs to be tagged as WWAN by the kernel drivers, and I think the serial ports for this device should be run by 'option', and the cdc-ether port should probably get run by 'qmi_wwan'. If the right kernel drivers claim the device, NM will stop showing it as a plain ethernet device. To test this theory out, don't upgrade your kernel. I'll build a test qmi_wwan.ko for you so we can see if it indeed speaks QMI or not. So: 1) grab http://people.redhat.com/dcbw/qmi_wwan.ko 2) rmmod cdc_ether 3) insmod /path/to/downloaded/qmi_wwan.ko 4) check 'dmesg' output to see if you now have a cdc-wdm0 and wwan0 device 5) grab http://people.redhat.com/dcbw/libqmi-glib.so.0 and drop it into /lib64/ 6) grab http://people.redhat.com/dcbw/qmicli 7) run 'sudo qmicli -d /dev/cdc-wdm0 --dms-get-capabilities' and if the device supports QMI, you should see output somewhat like this: [/dev/cdc-wdm0] Device capabilities retrieved: Max TX channel rate: '5742000' Max RX channel rate: '7200000' Data Service: 'simultaneous-cs-ps' SIM: 'supported' Networks: 'cdma20001x, evdo, gsm, umts, lte' and if that's the case, I'll submit the VID/PID upstream to the kernel.
After playing with the guys at usb_modeswitch(http://www.draisberghof.de/usb_modeswitch) I was able to get the right combination of drivers to get it working; You were right Dan with the combination of "option" and "qmi_wwan". This is from the output of usb-devices: T: Bus=02 Lev=02 Prnt=02 Port=05 Cnt=01 Dev#= 4 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=413c ProdID=819b Rev=00.00 S: Manufacturer=Novatel Wireless, Inc. S: Product=Novatel Wireless HSPA S: SerialNumber=012773000168391 C: #Ifs= 7 Cfg#= 1 Atr=e0 MxPwr=500mA I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#= 6 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=qmi_wwan I: If#= 7 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=qmi_wwan I had to custom compile libqmi to get the command line tools needed to get the connection. With the drivers like this and libqmi I was able to run: qmi-network /dev/cdc-wdm0 start ifup wwan0 And after which I got an IP and had LTE connectivity. The connection is stable and /var/log/messages isn't showing any errors. The version of NetworkManager in Fedora 18 doesn't understand QMI. So basically what I'd like to see is: - The VID/PID to get added to the drivers so it automatically loads the right drivers, cdc_ether needs to blacklist this VID/PID - libqmi to get an RPM in Fedora - NetworkManager in F18 to get qmi support backported Special note needs to be taken on the option driver. If you have no driver assigned to any of the interfaces on the card and try to add the driver with: echo 413c 819b > /sys/bus/usb-serial/drivers/option1/new_id it will try to add the driver to the interface at 2-1.6:1.6 which will cause fedora to lock up(as it's a serial driver trying to handle an ethernet interface). I'm not sure what needs to be added to option to keep it from doing this.
Device added to qmi_wwan upstream on 2013-05-06 as commit 7fdb7846.