OpenWrt Forum Archive

Topic: Novatel USB730L

The content of this topic has been archived on 29 Apr 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

Hey all,

I am working with a Novatel USB730L LTE modem on Barrier Breaker running on custom hardware, and long story short, I can't get it working. It shows up as a USB device just fine but seems to crash when enumerating the ethernet device. The previous model of the modem (USB620L) worked after I changed the bConfigurationValue to 4. However, when I try that with the new modem I get an "Invalid argument" message. Here is the dmesg for the old modem

[  228.480000] usb 1-1: new high-speed USB device number 2 using ehci-platform
[  255.030000] usb 1-1: USB disconnect, device number 2
[  277.870000] usb 1-1: new high-speed USB device number 3 using ehci-platform
[  278.060000] cdc_ether 1-1:1.0 eth2: register 'cdc_ether' at usb-ehci-platform-1, CDC Ethernet Device, 00:15:ff:16:28:90

228 is where I plugged the device in, 255 is when my script noticed it and changed the configurationValue, 277/278 is when it came back in the new mode and starts working.

And here is the dmesg for the new one:

[  553.920000] usb 1-1: USB disconnect, device number 3
[  581.600000] usb 1-1: new high-speed USB device number 4 using ehci-platform
[  591.590000] usb 1-1: USB disconnect, device number 4
[  592.220000] usb 1-1: new high-speed USB device number 5 using ehci-platform
[  592.400000] cdc_ether 1-1:1.0 usb0: register 'cdc_ether' at usb-ehci-platform-1, CDC Ethernet Device, 62:19:5f:2d:66:65
[  602.180000] usb 1-1: USB disconnect, device number 5
[  602.180000] cdc_ether 1-1:1.0 usb0: unregister 'cdc_ether' usb-ehci-platform-1, CDC Ethernet Device
[  602.840000] usb 1-1: new high-speed USB device number 6 using ehci-platform
[  612.800000] usb 1-1: USB disconnect, device number 6
[  613.440000] usb 1-1: new high-speed USB device number 7 using ehci-platform
[  613.630000] cdc_ether 1-1:1.0 usb0: register 'cdc_ether' at usb-ehci-platform-1, CDC Ethernet Device, 2e:fc:a9:5c:2f:fe
[  623.400000] usb 1-1: USB disconnect, device number 7
[  623.400000] cdc_ether 1-1:1.0 usb0: unregister 'cdc_ether' usb-ehci-platform-1, CDC Ethernet Device
[  624.060000] usb 1-1: new high-speed USB device number 8 using ehci-platform
[  634.010000] usb 1-1: USB disconnect, device number 8
[  634.650000] usb 1-1: new high-speed USB device number 9 using ehci-platform
[  634.860000] cdc_ether 1-1:1.0 usb0: register 'cdc_ether' at usb-ehci-platform-1, CDC Ethernet Device, c6:4c:39:91:8e:c2
[  644.600000] usb 1-1: USB disconnect, device number 9
[  644.610000] cdc_ether 1-1:1.0 usb0: unregister 'cdc_ether' usb-ehci-platform-1, CDC Ethernet Device
[  645.270000] usb 1-1: new high-speed USB device number 10 using ehci-platform
[  655.220000] usb 1-1: USB disconnect, device number 10
[  655.860000] usb 1-1: new high-speed USB device number 11 using ehci-platform
[  656.050000] cdc_ether 1-1:1.0 usb0: register 'cdc_ether' at usb-ehci-platform-1, CDC Ethernet Device, ae:56:ee:5a:2e:85
[  665.820000] usb 1-1: USB disconnect, device number 11
[  665.820000] cdc_ether 1-1:1.0 usb0: unregister 'cdc_ether' usb-ehci-platform-1, CDC Ethernet Device
[  666.480000] usb 1-1: new high-speed USB device number 12 using ehci-platform
[  676.430000] usb 1-1: USB disconnect, device number 12
[  677.070000] usb 1-1: new high-speed USB device number 13 using ehci-platform
[  677.260000] cdc_ether 1-1:1.0 usb0: register 'cdc_ether' at usb-ehci-platform-1, CDC Ethernet Device, 16:f0:9f:ea:f6:8c
[  687.030000] usb 1-1: USB disconnect, device number 13
[  687.030000] cdc_ether 1-1:1.0 usb0: unregister 'cdc_ether' usb-ehci-platform-1, CDC Ethernet Device
[  688.140000] usb 1-1: new high-speed USB device number 14 using ehci-platform

It iterates 5 times like this every time I plug it in and then just waits...

All drivers seem to be loaded, and I modded the option.ko drive to add some debug code and that doesn't seem to be crashing. Is there somewhere else I should look for a bug or some manual configuration I can do on the configuration/interface descriptors?

Thanks!

The configuration for enterprise mode in 730L is 3 and not 4 as in 620L.

It could be overloading the USB port's power supply when it turns on its radio transmitter to sign on the network.  Try connecting through a powered hub.

Jonny

root@OpenWrt:/sys/bus/usb/devices# echo 3 > 1-1/bConfigurationValue
ash: write error: Invalid argument
root@OpenWrt:/sys/bus/usb/devices#

Could it be writing it as an ascii value? I don't have to do anything special to send the 4 for the 620...

mk
good though! I'll track down a hub tomarow and let you know, thanks!

No luck on the powered hub. As I remember the routers usb power is actually connected directly the main power rain (bad design, I know). And the router is powered off a 2amp cellphone charger, so the modem should have plenty of power.

JPetersonVNL wrote:

the modem should have plenty of power.

Have you measured the current draw? Just to know, instead of believing.
The small "USB doctor" or "USB ammeter" devices are relatively cheap and useful.

"new high-speed USB device number x using ehci-platform"
"new high-speed USB device number x+1 using ehci-platform"
"new high-speed USB device number x+2 using ehci-platform"

and so on is a typical sign of not enough power for the device.
Voltage drop causes the device to reset itself thereby falling off the usb bus and then reappear a moment later.

I'd guess that USB730L draws 1 ampere or more just when connecting to the tower.

What make/model of router is it connected to?

(Last edited by JonnyM on 25 Nov 2017, 04:15)

Sorry guys, holidays have kept me out of the office. I hooked my fluke up to it and its only drawing 70ma, I saw it spike to 100 briefly. These measurements were taken on an Ubuntu box (which the modem does work on) during and after usb negotiation.

What make/model of router is it connected to?

Its custom hardware from China, I don't think it even has a name yet.

On the Ubuntu box, I noticed it was showing up as an HID device so I added HID support to the router and here is what dmesg looks like now:

[  322.740000] usb 1-1: new high-speed USB device number 23 using ehci-platform
[  322.910000] cdc_ether 1-1:1.0 usb0: register 'cdc_ether' at usb-ehci-platform-1, CDC Ethernet Device, 4e:ec:be:50:35:14
[  322.950000] hid-generic 0003:1410:9030.0016: hiddev0,hidraw0: USB HID v1.01 Device [Novatel Wireless MiFi USB730L] on usb-ehci-platform-1/input2
[  332.690000] usb 1-1: USB disconnect, device number 23
[  332.700000] cdc_ether 1-1:1.0 usb0: unregister 'cdc_ether' usb-ehci-platform-1, CDC Ethernet Device
[  333.810000] usb 1-1: new high-speed USB device number 24 using ehci-platform
[  334.010000] hid-generic 0003:1410:9030.0017: hiddev0,hidraw0: USB HID v1.01 Device [Novatel Wireless MiFi USB730L] on usb-ehci-platform-1/input2
[  450.200000] usb 1-1: USB disconnect, device number 24

I also noticed that the 620L  says "eth2" in the dmesg

cdc_ether 1-1:1.0 eth2: register 'cdc_ether' at usb-ehci-platform-1, CDC Ethernet Device, 00:15:ff:16:28:90

Where the 730L says "usb0"

 cdc_ether 1-1:1.0 usb0: register 'cdc_ether' at usb-ehci-platform-1, CDC Ethernet Device, 4e:ec:be:50:35:14

And on the ubuntu box, the ifconfig name looks weird:

enp0s20f0u2 Link encap:Ethernet  HWaddr 06:24:23:1e:f9:6d

if eno and eth are ethernet devices is enp something else? Maybe this modem isn't actually emulation an ethernet port but something else?

Anyways, Thanks!

enp is the new desktop Linux convention for naming interfaces.   So it is an Ethernet-like interface.  The name is supposed to stay consistent as you add and remove hardware from the system.

The repeated "USB disconnect" almost certainly means that some sort of hardware crash is occurring.  You would see the same "USB disconnect" then "unregister CDC" messages upon physically unplugging the device.

But I see the same disconnect reconnect with the 620 and also with the 730 on the ubuntu box. It only does it once, and it happens after I perform the modeswitch.

Most CDC devices do not even require modeswitch.  The ROMdisk and ethernet interfaces can stay active simultaneously.

Well to confirm it isn't a power issue, I powered the modem independent of the router, with a 10 amp PS... still the same sad

mk24 wrote:

Most CDC devices do not even require modeswitch.  The ROMdisk and ethernet interfaces can stay active simultaneously.

The majority of 3G dongles needs some kind of modeswitch, only a few does the switching automatically by themselves.

JPetersonVNL wrote:

But I see the same disconnect reconnect with the 620 and also with the 730 on the ubuntu box. It only does it once, and it happens after I perform the modeswitch.

One disconnect-reconnect is expected when a dongle is morphing into another usb id.
You will se the same if you remove the dongle and then reinsert it.
Many disconnect-reconnect should not happen.


JPetersonVNL wrote:

Well to confirm it isn't a power issue, I powered the modem independent of the router, with a 10 amp PS... still the same sad

Is the USB730 stable on the bus if you don't do the configuration select?

Is the USB730 stable on the bus if you don't do the configuration select?

No it starts the connect/disconnect as soon as I plug it in. I've tried setting the configurationValue while it is in that cycle, as well as waiting for it finish after 5 iterations. Neither have any effect.

Ok guys, got a big update and I think I'm close.
In a last ditch effort I powered the the USB730 externally, plugged it into the regular ubuntu box and gave it a minute to start working. Then, without removing power, I unplugged the USB from the ubuntu box and plugged it into the OpenWRT router. And wouldn't you know, it worked!

So it seems it just need the correct modeswitch maybe? Or something else. Any help would be great!!

usb0      Link encap:Ethernet  HWaddr 92:A5:8F:7F:8D:2E
          inet addr:100.66.121.3  Bcast:100.66.121.7  Mask:255.255.255.248
          inet6 addr: fe80::90a5:8fff:fe7f:8d2e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:72 errors:0 dropped:0 overruns:0 frame:0
          TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6253 (6.1 KiB)  TX bytes:5432 (5.3 KiB)

DMESG: (excuse all the 'test's)

[  475.840000] usb 1-1: new high-speed USB device number 2 using ehci-platform
[  476.020000] test8testtest4testtest1testtest2testtest3testUSB_CDC_HEADER_TYPEUSB_CDC_UNION_TYPEUSB_CDC_ETHERNET_TYPEtest8atesttest8btest(null)test8ctest
[  476.040000] cdc_ether 1-1:1.0 usb0: register 'cdc_ether' at usb-ehci-platform-1, CDC Ethernet Device, 92:a5:8f:7f:8d:2e

lsusb -v

Bus 001 Device 002: ID 1410:9030 Novatel Wireless
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x1410 Novatel Wireless
  idProduct          0x9030
  bcdDevice            3.10
  iManufacturer           1 Novatel Wireless
  iProduct                2 MiFi USB730L
  iSerial                 3 0123456789ABCDEF
  bNumConfigurations      3
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          105
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass      6 Ethernet Networking
      bInterfaceProtocol      0
      iInterface             13 CDC Ethernet Control Model (ECM)
      CDC Header:
        bcdCDC               1.10
      CDC Union:
        bMasterInterface        0
        bSlaveInterface         1
      CDC Ethernet:
        iMacAddress                     15 92A58F7F8D2E
        bmEthernetStatistics    0x00000000
        wMaxSegmentSize               1514
        wNumberMCFilters            0x0000
        bNumberPowerFilters              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               9
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0
      iInterface              0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0
      iInterface             14 CDC Ethernet Data
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      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               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              7 HID Interface
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.01
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      34
          Report Descriptor: (length is 34)
            Item(Global): Usage Page, data= [ 0xa0 0xff ] 65440
                            (null)
            Item(Local ): Usage, data= [ 0xa5 ] 165
                            (null)
            Item(Main  ): Collection, data= [ 0x01 ] 1
                            Application
            Item(Local ): Usage, data= [ 0xa6 ] 166
                            (null)
            Item(Local ): Usage, data= [ 0xa7 ] 167
                            (null)
            Item(Global): Logical Minimum, data= [ 0x80 ] 128
            Item(Global): Logical Maximum, data= [ 0x7f ] 127
            Item(Global): Report Size, data= [ 0x08 ] 8
            Item(Global): Report Count, data= [ 0x04 ] 4
            Item(Main  ): Input, data= [ 0x04 ] 4
                            Data Array Relative No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Local ): Usage, data= [ 0xa9 ] 169
                            (null)
            Item(Global): Logical Minimum, data= [ 0x80 ] 128
            Item(Global): Logical Maximum, data= [ 0x7f ] 127
            Item(Global): Report Size, data= [ 0x08 ] 8
            Item(Global): Report Count, data= [ 0x04 ] 4
            Item(Main  ): Output, data= [ 0x04 ] 4
                            Data Array Relative No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Main  ): End Collection, data=none
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               4
Couldn't get configuration descriptor 1, some information will be missing
Couldn't get configuration descriptor 2, some information will be missing
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  bNumConfigurations      3
Device Status:     0x0000
  (Bus Powered)
JPetersonVNL wrote:

Ok guys, got a big update and I think I'm close.
In a last ditch effort I powered the the USB730 externally, plugged it into the regular ubuntu box and gave it a minute to start working. Then, without removing power, I unplugged the USB from the ubuntu box and plugged it into the OpenWRT router. And wouldn't you know, it worked!

So it seems it just need the correct modeswitch maybe? Or something else. Any help would be great!!

usb0      Link encap:Ethernet  HWaddr 92:A5:8F:7F:8D:2E
          inet addr:100.66.121.3  Bcast:100.66.121.7  Mask:255.255.255.248
          inet6 addr: fe80::90a5:8fff:fe7f:8d2e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:72 errors:0 dropped:0 overruns:0 frame:0
          TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6253 (6.1 KiB)  TX bytes:5432 (5.3 KiB)

Closer but still problems.
Your lsusb does only display config #1 , the other two errors out for some reason but config #3 is the virtual cdrom with windows drivers and windows connection manager.
Selecting config #3 will auto-switch USB730 into enterprise mode and the usb id will change to 1410:9032
Enterprise mode is cdc_ether but with a public IP,  you got it working in config #1 which is cdc_ether with private IP (CGNAT) which your ifconfig also show.

What chipset is used in this Chinese noname router?
Was the neutered lsusb listing taken from this router?

(Last edited by JonnyM on 14 Dec 2017, 04:05)

JonnyM wrote:

What chipset is used in this Chinese noname router?

Its core is an AR9331-AL3A

JonnyM wrote:

Was the neutered lsusb listing taken from this router?

Yes that lsusb was taken from the router in question

Another interesting discovery: After getting it working initially using the weird external power setup, I can unplug everything and plug the modem directly into the router and it works now. This makes me think there was some road block on the modem that I took down when I got it working the first time. Problem is, this is supposed to be a deployable solution so its not good enough that I got this one working sad

JPetersonVNL wrote:
JonnyM wrote:

What chipset is used in this Chinese noname router?

Its core is an AR9331-AL3A

JonnyM wrote:

Was the neutered lsusb listing taken from this router?

Yes that lsusb was taken from the router in question

Another interesting discovery: After getting it working initially using the weird external power setup, I can unplug everything and plug the modem directly into the router and it works now. This makes me think there was some road block on the modem that I took down when I got it working the first time. Problem is, this is supposed to be a deployable solution so its not good enough that I got this one working sad

Plugging it into your Ubuntu rig can't have solved anything, it is just a coincidence that it works after that.
I guess that your USB host/roothub driver is flaky there was problem with AR9331 USB for a long time in the past.
Why do you use such old release as Barrier Breaker?
If it is the router mfgr providing it then it is he who should solve your problem, he has obviously made his own private build based on OpenWRT but not sent in patches to the developers so that the router can be included in OpenWRT for public builds.
If he had sent in patches then there would had been a modern OpenWRT build for download here, Chaos Calmer, Designated Driver, or trunk build.

(Last edited by JonnyM on 15 Dec 2017, 13:38)

Barrier Breaker is what this was developed on and we've just built off it. I have tried the latest firmware but it has the same results. As for coincidence I have three more of these modems coming next week so I can confirm/deny that for sure. But I've tested this with multiple routers and the only router that the modem works on is the one I switched to from Ubuntu. Maybe the roadblock was on the router side of things? Something very very strange is going on.

The discussion might have continued from here.