Bug 955426 - Network Manager detects WWAN card(Dell Wireless 5804) as a Wired(Ethernet) device
Summary: Network Manager detects WWAN card(Dell Wireless 5804) as a Wired(Ethernet) de...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: kernel
Version: 18
Hardware: x86_64
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Kernel Maintainer List
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-04-23 03:12 UTC by Sam P
Modified: 2013-07-30 18:42 UTC (History)
7 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2013-07-30 18:42:52 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Sam P 2013-04-23 03:12:36 UTC
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.

Comment 1 Sam P 2013-04-23 13:56:16 UTC
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.

Comment 2 Dan Williams 2013-04-26 21:51:31 UTC
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.

Comment 3 Sam P 2013-04-26 22:14:03 UTC
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.

Comment 4 Dan Williams 2013-07-30 18:42:52 UTC
Device added to qmi_wwan upstream on 2013-05-06 as commit 7fdb7846.


Note You need to log in before you can comment on or make changes to this bug.