Huawei K5150 LTE modem not showing as ethernet device



  • Hi

    I have a Huawei K5150 LTE modem that I am trying to use on pfSense but it doesn't seem to activate the cdc_ncm and cdc_wdm (or similar) drivers when the device is plugged.

    When I plug the device on Linux it is detected correctly and made available as a mobile broadband ethernet connection.

    I tried using different usb_modeswitch options and parameters (with no luck) and compared the results and configurations with that of my Linux machine and they appear to be similar. The only difference seems to be that Linux sees the device as a USB ethernet device.

    Here is my Linux dmesg output:

    kern  :info  : [We Jun 26 20:30:36 2019] usb 2-2: new high-speed USB device number 6 using xhci_hcd
    kern  :info  : [We Jun 26 20:30:36 2019] usb 2-2: New USB device found, idVendor=12d1, idProduct=1f16, bcdDevice= 1.02
    kern  :info  : [We Jun 26 20:30:36 2019] usb 2-2: New USB device strings: Mfr=6, Product=5, SerialNumber=8
    kern  :info  : [We Jun 26 20:30:36 2019] usb 2-2: Product: K5150
    kern  :info  : [We Jun 26 20:30:36 2019] usb 2-2: Manufacturer: Vodafone (Huawei)
    kern  :info  : [We Jun 26 20:30:36 2019] usb 2-2: SerialNumber: FFFFFFFFFFFFFFFF
    kern  :info  : [We Jun 26 20:30:37 2019] usb-storage 2-2:1.0: USB Mass Storage device detected
    kern  :info  : [We Jun 26 20:30:37 2019] scsi host6: usb-storage 2-2:1.0
    kern  :info  : [We Jun 26 20:30:37 2019] usbcore: registered new interface driver usb-storage
    kern  :info  : [We Jun 26 20:30:37 2019] usbcore: registered new interface driver uas
    kern  :info  : [We Jun 26 20:30:37 2019] usb-storage 2-2:2.2: USB Mass Storage device detected
    kern  :info  : [We Jun 26 20:30:37 2019] scsi host6: usb-storage 2-2:2.2
    kern  :info  : [We Jun 26 20:30:37 2019] usbcore: registered new interface driver cdc_ncm
    kern  :info  : [We Jun 26 20:30:37 2019] usbcore: registered new interface driver cdc_wdm
    kern  :info  : [We Jun 26 20:30:37 2019] cdc_mbim 2-2:2.0: setting rx_max = 16384
    kern  :info  : [We Jun 26 20:30:37 2019] cdc_mbim 2-2:2.0: setting tx_max = 16384
    kern  :info  : [We Jun 26 20:30:37 2019] cdc_mbim 2-2:2.0: NDP will be placed at end of frame for this device.
    kern  :info  : [We Jun 26 20:30:37 2019] cdc_mbim 2-2:2.0: cdc-wdm0: USB WDM device
    kern  :info  : [We Jun 26 20:30:37 2019] cdc_mbim 2-2:2.0 wwan0: register 'cdc_mbim' at usb-0000:00:14.0-2, CDC MBIM, 5a:af:db:92:d2:56
    kern  :info  : [We Jun 26 20:30:37 2019] usbcore: registered new interface driver cdc_mbim
    kern  :info  : [We Jun 26 20:30:37 2019] cdc_mbim 2-2:2.0 wwp0s20u2c2: renamed from wwan0
    kern  :notice: [We Jun 26 20:30:38 2019] scsi 6:0:0:0: Direct-Access     Vodafone Storage(Huawei)  2.31 PQ: 0 ANSI: 2
    kern  :notice: [We Jun 26 20:30:38 2019] sd 6:0:0:0: Attached scsi generic sg1 type 0
    kern  :notice: [We Jun 26 20:30:38 2019] sd 6:0:0:0: [sdb] Attached SCSI removable disk
    

    and here is the output of pfSense' dmesg and usbconfig:

    ugen4.2: <Vodafone Huawei K5150> at usbus4
    umass0 on uhub0
    umass0: <Vodafone Huawei K5150, class 0/0, rev 2.00/1.02, addr 2> on usbus4
    da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
    da0: <Vodafone Storage(Huawei) 2.31> Removable Direct Access SCSI-2 device
    da0: 40.000MB/s transfers
    da0: Attempt to query device size failed: NOT READY, Medium not present
    da0: quirks=0x2<NO_6_BYTE>
    

    usbconfig -d ugen4.2 dump_device_desc

    ugen4.2: <Vodafone Huawei K5150> at usbus4, cfg=1 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
      bLength = 0x0012 
      bDescriptorType = 0x0001 
      bcdUSB = 0x0200 
      bDeviceClass = 0x0000  <Probed by interface class>
      bDeviceSubClass = 0x0000 
      bDeviceProtocol = 0x00ff 
      bMaxPacketSize0 = 0x0040 
      idVendor = 0x12d1 
      idProduct = 0x1f16 
      bcdDevice = 0x0102 
      iManufacturer = 0x0006  <Vodafone (Huawei)>
      iProduct = 0x0005  <K5150>
      iSerialNumber = 0x0008  <FFFFFFFFFFFFFFFF>
      bNumConfigurations = 0x0002
    

    usbconfig -d ugen4.2 dump_all_desc

    ugen4.2: <Vodafone Huawei K5150> at usbus4, cfg=1 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
      bLength = 0x0012 
      bDescriptorType = 0x0001 
      bcdUSB = 0x0200 
      bDeviceClass = 0x0000  <Probed by interface class>
      bDeviceSubClass = 0x0000 
      bDeviceProtocol = 0x00ff 
      bMaxPacketSize0 = 0x0040 
      idVendor = 0x12d1 
      idProduct = 0x1f16 
      bcdDevice = 0x0102 
      iManufacturer = 0x0006  <Vodafone (Huawei)>
      iProduct = 0x0005  <K5150>
      iSerialNumber = 0x0008  <FFFFFFFFFFFFFFFF>
      bNumConfigurations = 0x0002 
     Configuration index 0
        bLength = 0x0009 
        bDescriptorType = 0x0002 
        wTotalLength = 0x0020 
        bNumInterfaces = 0x0001 
        bConfigurationValue = 0x0001 
        iConfiguration = 0x0001  <configuration 0>
        bmAttributes = 0x00a0 
        bMaxPower = 0x00fa 
        Interface 0
          bLength = 0x0009 
          bDescriptorType = 0x0004 
          bInterfaceNumber = 0x0000 
          bAlternateSetting = 0x0000 
          bNumEndpoints = 0x0002 
          bInterfaceClass = 0x0008  <Mass storage>
          bInterfaceSubClass = 0x0006 
          bInterfaceProtocol = 0x0050 
          iInterface = 0x0000  <no string>
         Endpoint 0
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0001  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
         Endpoint 1
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0081  <IN>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
     Configuration index 1
        bLength = 0x0009 
        bDescriptorType = 0x0002 
        wTotalLength = 0x0076 
        bNumInterfaces = 0x0003 
        bConfigurationValue = 0x0002 
        iConfiguration = 0x0009  <configuration 1>
        bmAttributes = 0x00a0 
        bMaxPower = 0x00fa 
        Additional Descriptor
        bLength = 0x08
        bDescriptorType = 0x0b
        bDescriptorSubType = 0x00
         RAW dump: 
         0x00 | 0x08, 0x0b, 0x00, 0x02, 0x02, 0x0e, 0x00, 0x03
        Interface 0
          bLength = 0x0009 
          bDescriptorType = 0x0004 
          bInterfaceNumber = 0x0000 
          bAlternateSetting = 0x0000 
          bNumEndpoints = 0x0001 
          bInterfaceClass = 0x0002  <Communication device>
          bInterfaceSubClass = 0x000e 
          bInterfaceProtocol = 0x0000 
          iInterface = 0x0000  <no string>
          Additional Descriptor
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x00
           RAW dump: 
           0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
          Additional Descriptor
          bLength = 0x0c
          bDescriptorType = 0x24
          bDescriptorSubType = 0x1b
           RAW dump: 
           0x00 | 0x0c, 0x24, 0x1b, 0x00, 0x01, 0x00, 0x04, 0x10, 
           0x08 | 0x14, 0xdc, 0x05, 0x20
          Additional Descriptor
          bLength = 0x08
          bDescriptorType = 0x24
          bDescriptorSubType = 0x1c
           RAW dump: 
           0x00 | 0x08, 0x24, 0x1c, 0x00, 0x01, 0x10, 0xdc, 0x05
          Additional Descriptor
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x06
           RAW dump: 
           0x00 | 0x05, 0x24, 0x06, 0x00, 0x01
         Endpoint 0
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0082  <IN>
            bmAttributes = 0x0003  <INTERRUPT>
            wMaxPacketSize = 0x0040 
            bInterval = 0x0005 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
        Interface 1
          bLength = 0x0009 
          bDescriptorType = 0x0004 
          bInterfaceNumber = 0x0001 
          bAlternateSetting = 0x0000 
          bNumEndpoints = 0x0000 
          bInterfaceClass = 0x000a  <CDC-data>
          bInterfaceSubClass = 0x0000 
          bInterfaceProtocol = 0x0002 
          iInterface = 0x0000  <no string>
        Interface 1 Alt 1
          bLength = 0x0009 
          bDescriptorType = 0x0004 
          bInterfaceNumber = 0x0001 
          bAlternateSetting = 0x0001 
          bNumEndpoints = 0x0002 
          bInterfaceClass = 0x000a  <CDC-data>
          bInterfaceSubClass = 0x0000 
          bInterfaceProtocol = 0x0002 
          iInterface = 0x0000  <no string>
         Endpoint 0
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0083  <IN>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0020 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
         Endpoint 1
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0002  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0020 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
        Interface 2
          bLength = 0x0009 
          bDescriptorType = 0x0004 
          bInterfaceNumber = 0x0002 
          bAlternateSetting = 0x0000 
          bNumEndpoints = 0x0002 
          bInterfaceClass = 0x0008  <Mass storage>
          bInterfaceSubClass = 0x0006 
          bInterfaceProtocol = 0x0050 
          iInterface = 0x0000  <no string>
         Endpoint 0
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0003  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
         Endpoint 1
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0084  <IN>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    

    Thanks, I appreciate any help or assistance with this.


  • Netgate Administrator

    Try running usbconfig -d ugen4.2 set_config 1.

    If that works you can add a loader usb quirk to make it do that every time.

    Steve



  • Thanks

    I tried the command and I can see that it changes the device's configuration but it still isn't detected as a USB ethernet device.


  • Netgate Administrator

    What is it detected as? I assume the storage device detaches?

    You might need the urndis driver for example if that's what it appears as.

    Steve


  • LAYER 8

    You need usb_modeswitch
    https://monach.us/operations/usb_modeswitch_on_pfsense/

    well, not all the instruction there was working for me so after you have installed usb_modeswitch you need to launch

    usb_modeswitch -c /usr/local/share/usb_modeswitch/12d1:1f16

    where 12d1:1f16 is a file you need to modify, add

    DefaultVendor=0x12d1
    DefaultProduct=0x1f16

    something like this should come out
    Immagine.jpg



  • @stephenw10
    When I insert the device dmesg reports the following

    ugen4.2: <Vodafone Huawei K5150> at usbus4
    umass0 on uhub0
    umass0: <Vodafone Huawei K5150, class 0/0, rev 2.00/1.02, addr 2> on usbus4
    da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
    da0: <Vodafone Storage(Huawei) 2.31> Removable Direct Access SCSI-2 device
    da0: 40.000MB/s transfers
    da0: Attempt to query device size failed: NOT READY, Medium not present
    da0: quirks=0x2<NO_6_BYTE>
    

    usbconfig -d ugen4.2 show_ifdrv

    ugen4.2: <Vodafone Huawei K5150> at usbus4, cfg=1 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
    ugen4.2.2: umass0: <Vodafone Huawei K5150, class 0/0, rev 2.00/1.02, addr 2>
    

    I then run the usbconfig command
    usbconfig -d ugen4.2 set_config 1

    usbconfig -d ugen4.2 show_ifdrv

    ugen4.2: <Vodafone Huawei K5150> at usbus4, cfg=1 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
    ugen4.2.2: umass0: <Vodafone Huawei K5150, class 0/0, rev 2.00/1.02, addr 2>
    

    No additional information was logged in dmesg

    If I run
    usbconfig -d ugen4.2 set_config 2

    I can see that the device configuration changed
    usbconfig -d ugen4.2 show_ifdrv

    ugen4.2: <Vodafone Huawei K5150> at usbus4, cfg=255 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
    

    dmesg

    umass0: at uhub0, port 5, addr 2 (disconnected)
    da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
    da0: <Vodafone Storage(Huawei) 2.31> detached
    (da0:umass-sim0:0:0:0): Periph destroyed
    umass0: detached
    

    Using usbconfig set_config does change the configuration but despite this it still isn't detected correctly.



  • @kiokoman
    I modified the /usr/local/share/usb_modeswitch/12d1:1f16 file accordingly

    # Vodafone K5150
    TargetVendor=0x12d1
    TargetProductList="14f8,1575"
    HuaweiNewMode=1
    DefaultVendor=0x12d1
    DefaultProduct=0x1f16
    

    I replugged the device and then ran
    usb_modeswitch -c /usr/local/share/usb_modeswitch/12d1:1f16

    Look for target devices ...
     No devices in target mode or class found
    Look for default devices ...
     Found devices in default mode (1)
    Access device 002 on bus 004
    Get the current device configuration ...
    Current configuration number is 2
    Use interface number 0
     with class 2
    Error: can't use storage command in MessageContent with interface 0; interface class is 2, expected 8. Abort
    

    I encounter the same error with usb_modeswitch on Linux yet it still provides the USB ethernet interface.


  • Netgate Administrator

    What does usbconfig -d ugen4.2 dump_device_desc show? in either config mode?

    Steve


  • LAYER 8

    before that command, you had posted above
    Interface 0
    bLength = 0x0009
    bDescriptorType = 0x0004
    bInterfaceNumber = 0x0000
    bAlternateSetting = 0x0000
    bNumEndpoints = 0x0002
    bInterfaceClass = 0x0008 <Mass storage>

    error message say
    Error: can't use storage command in MessageContent with interface 0; interface class is 2, expected 8. Abort
    so the bInterfaceClass should have changed to 0x0002 <Communication device>

    pls confirm
    if so, it's strange that it's not creating the network interface
    it's possible that you need a specific driver not available on pfsense

    i found a different config to try if you want

    # Vodafone K5150
    TargetVendor=0x12d1
    TargetProductList="14f8,1575"
    #HuaweiNewMode=1
    MessageContent="55534243123456780002000080000a11062000000000000100000000000000"
    DefaultVendor=0x12d1
    DefaultProduct=0x1f16
    


  • @stephenw10
    Here are the results in the default mode as well as the different modes.

    dmesg after plugging the device

    ugen4.2: <Vodafone Huawei K5150> at usbus4
    umass0 on uhub0
    umass0: <Vodafone Huawei K5150, class 0/0, rev 2.00/1.02, addr 2> on usbus4
    da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
    da0: <Vodafone Storage(Huawei) 2.31> Removable Direct Access SCSI-2 device
    da0: 40.000MB/s transfers
    da0: Attempt to query device size failed: NOT READY, Medium not present
    da0: quirks=0x2<NO_6_BYTE>
    

    usbconfig -d ugen4.2 dump_device_desc after plugging the device

    ugen4.2: <Vodafone Huawei K5150> at usbus4, cfg=1 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
      bLength = 0x0012 
      bDescriptorType = 0x0001 
      bcdUSB = 0x0200 
      bDeviceClass = 0x0000  <Probed by interface class>
      bDeviceSubClass = 0x0000 
      bDeviceProtocol = 0x00ff 
      bMaxPacketSize0 = 0x0040 
      idVendor = 0x12d1 
      idProduct = 0x1f16 
      bcdDevice = 0x0102 
      iManufacturer = 0x0006  <Vodafone (Huawei)>
      iProduct = 0x0005  <K5150>
      iSerialNumber = 0x0008  <FFFFFFFFFFFFFFFF>
      bNumConfigurations = 0x0002 
    

    usbconfig -d ugen4.2 set_config 1

    usbconfig -d ugen4.2 dump_device_desc

    ugen4.2: <Vodafone Huawei K5150> at usbus4, cfg=1 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
      bLength = 0x0012 
      bDescriptorType = 0x0001 
      bcdUSB = 0x0200 
      bDeviceClass = 0x0000  <Probed by interface class>
      bDeviceSubClass = 0x0000 
      bDeviceProtocol = 0x00ff 
      bMaxPacketSize0 = 0x0040 
      idVendor = 0x12d1 
      idProduct = 0x1f16 
      bcdDevice = 0x0102 
      iManufacturer = 0x0006  <Vodafone (Huawei)>
      iProduct = 0x0005  <K5150>
      iSerialNumber = 0x0008  <FFFFFFFFFFFFFFFF>
      bNumConfigurations = 0x0002 
    

    usbconfig -d ugen4.2 set_config 2

    usbconfig -d ugen4.2 dump_device_desc

    ugen4.2: <Vodafone Huawei K5150> at usbus4, cfg=255 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
      bLength = 0x0012 
      bDescriptorType = 0x0001 
      bcdUSB = 0x0200 
      bDeviceClass = 0x0000  <Probed by interface class>
      bDeviceSubClass = 0x0000 
      bDeviceProtocol = 0x00ff 
      bMaxPacketSize0 = 0x0040 
      idVendor = 0x12d1 
      idProduct = 0x1f16 
      bcdDevice = 0x0102 
      iManufacturer = 0x0006  <Vodafone (Huawei)>
      iProduct = 0x0005  <K5150>
      iSerialNumber = 0x0008  <FFFFFFFFFFFFFFFF>
      bNumConfigurations = 0x0002
    

    dmesg

    umass0: at uhub0, port 5, addr 2 (disconnected)
    da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
    da0: <Vodafone Storage(Huawei) 2.31> detached
    (da0:umass-sim0:0:0:0): Periph destroyed
    umass0: detached
    


  • @kiokoman said in Huawei K5150 LTE modem not showing as ethernet device:

    error message say
    Error: can't use storage command in MessageContent with interface 0; interface class is 2, expected 8. Abort
    so the bInterfaceClass should have changed to 0x0002 <Communication device>
    pls confirm

    Yes, that is correct.

    I tried the new config with the MessageContent but the result is still the same.

    I also suspect that I require a specific driver.

    Unfortunately I don't know pfSense or FreeBSD well enough to dig further.



  • Thanks for the help everyone



  • I decided to compare the results of the Vodafone (Huawei) K5150 LTE to a Vodafone (ZTE) K4201-Z HSPA device.
    Both of them are ethernet over USB devices and the K4201-Z works fine but doesn't support LTE.

    Here is the K4201-Z's information
    dmesg

    cd0 at umass-sim0 bus 0 scbus4 target 0 lun 0
    cd0: <Vodafone USB SCSI CD-ROM 2.31> detached
    (cd0:umass-sim0:0:0:0): Periph destroyed
    umass0: detached
    ugen4.2: <Vodafone ZTE ZTE WCDMA Technologies MSM> at usbus4
    cdce0 on uhub0
    cdce0: <Vodafone ZTE ZTE WCDMA Technologies MSM, class 2/0, rev 2.00/f0.55, addr 2> on usbus4
    ue0: <USB Ethernet> on cdce0
    ue0: Ethernet address: 00:a0:c6:00:00:00
    umass0 on uhub0
    umass0: <Vodafone ZTE ZTE WCDMA Technologies MSM, class 2/0, rev 2.00/f0.55, addr 2> on usbus4
    umass0: Get Max Lun not supported (USB_ERR_TIMEOUT)
    cd0 at umass-sim0 bus 0 scbus4 target 0 lun 0
    cd0: <Vodafone USB SCSI CD-ROM 2.31> Removable CD-ROM SCSI-2 device
    cd0: 40.000MB/s transfers
    cd0: 45MB (23425 2048 byte sectors)
    cd0: quirks=0x10<10_BYTE_ONLY>
    

    usbconfig -d ugen4.2 dump_device_desc

    ugen4.2: <Vodafone ZTE ZTE WCDMA Technologies MSM> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
      bLength = 0x0012 
      bDescriptorType = 0x0001 
      bcdUSB = 0x0200 
      bDeviceClass = 0x0002  <Communication device>
      bDeviceSubClass = 0x0000 
      bDeviceProtocol = 0x0000 
      bMaxPacketSize0 = 0x0040 
      idVendor = 0x19d2 
      idProduct = 0x1024 
      bcdDevice = 0xf055 
      iManufacturer = 0x0004  <Vodafone (ZTE)>
      iProduct = 0x0003  <ZTE WCDMA Technologies MSM>
      iSerialNumber = 0x0005  <>
      bNumConfigurations = 0x0001 
    

    usbconfig -d ugen4.2 dump_all_desc

    ugen4.2: <Vodafone ZTE ZTE WCDMA Technologies MSM> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
      bLength = 0x0012 
      bDescriptorType = 0x0001 
      bcdUSB = 0x0200 
      bDeviceClass = 0x0002  <Communication device>
      bDeviceSubClass = 0x0000 
      bDeviceProtocol = 0x0000 
      bMaxPacketSize0 = 0x0040 
      idVendor = 0x19d2 
      idProduct = 0x1024 
      bcdDevice = 0xf055 
      iManufacturer = 0x0004  <Vodafone (ZTE)>
      iProduct = 0x0003  <ZTE WCDMA Technologies MSM>
      iSerialNumber = 0x0005  <>
      bNumConfigurations = 0x0001 
     Configuration index 0
        bLength = 0x0009 
        bDescriptorType = 0x0002 
        wTotalLength = 0x0067 
        bNumInterfaces = 0x0003 
        bConfigurationValue = 0x0001 
        iConfiguration = 0x0002  <ZTE Configuration>
        bmAttributes = 0x00c0 
        bMaxPower = 0x00fa 
        Interface 0
          bLength = 0x0009 
          bDescriptorType = 0x0004 
          bInterfaceNumber = 0x0000 
          bAlternateSetting = 0x0000 
          bNumEndpoints = 0x0001 
          bInterfaceClass = 0x0002  <Communication device>
          bInterfaceSubClass = 0x0006 
          bInterfaceProtocol = 0x0000 
          iInterface = 0x0000  <no string>
          Additional Descriptor
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x00
           RAW dump: 
           0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
          Additional Descriptor
          bLength = 0x0d
          bDescriptorType = 0x24
          bDescriptorSubType = 0x0f
           RAW dump: 
           0x00 | 0x0d, 0x24, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 
           0x08 | 0x00, 0x20, 0x01, 0x00, 0x00
          Additional Descriptor
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x06
           RAW dump: 
           0x00 | 0x05, 0x24, 0x06, 0x00, 0x01
         Endpoint 0
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0081  <IN>
            bmAttributes = 0x0003  <INTERRUPT>
            wMaxPacketSize = 0x0040 
            bInterval = 0x0005 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
        Interface 1
          bLength = 0x0009 
          bDescriptorType = 0x0004 
          bInterfaceNumber = 0x0001 
          bAlternateSetting = 0x0000 
          bNumEndpoints = 0x0000 
          bInterfaceClass = 0x000a  <CDC-data>
          bInterfaceSubClass = 0x0000 
          bInterfaceProtocol = 0x0000 
          iInterface = 0x0000  <no string>
        Interface 1 Alt 1
          bLength = 0x0009 
          bDescriptorType = 0x0004 
          bInterfaceNumber = 0x0001 
          bAlternateSetting = 0x0001 
          bNumEndpoints = 0x0002 
          bInterfaceClass = 0x000a  <CDC-data>
          bInterfaceSubClass = 0x0000 
          bInterfaceProtocol = 0x0000 
          iInterface = 0x0000  <no string>
         Endpoint 0
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0082  <IN>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0020 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
         Endpoint 1
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0001  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0020 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
        Interface 2
          bLength = 0x0009 
          bDescriptorType = 0x0004 
          bInterfaceNumber = 0x0002 
          bAlternateSetting = 0x0000 
          bNumEndpoints = 0x0002 
          bInterfaceClass = 0x0008  <Mass storage>
          bInterfaceSubClass = 0x0006 
          bInterfaceProtocol = 0x0050 
          iInterface = 0x0000  <no string>
         Endpoint 0
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0002  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
         Endpoint 1
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0083  <IN>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    

    usbconfig -d ugen4.2 show_ifdrv

    ugen4.2: <Vodafone ZTE ZTE WCDMA Technologies MSM> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
    ugen4.2.0: cdce0: <Vodafone ZTE ZTE WCDMA Technologies MSM, class 2/0, rev 2.00/f0.55, addr 2>
    ugen4.2.2: umass0: <Vodafone ZTE ZTE WCDMA Technologies MSM, class 2/0, rev 2.00/f0.55, addr 2>
    

    There is no /usr/local/share/usb_modeswitch/19d2:1024 file for usb_modeswitch

    ifconfig ue0

    ue0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
    	ether 00:a0:c6:00:00:00
    	hwaddr 00:a0:c6:00:00:00
    	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
    

    As you can see it is detected as a USB ethernet device and assigned an interface so it would seem that everything on the OS's side is fine.

    The question is, what do I need to do in order for the K5150 to be detected in the same manner?


  • Netgate Administrator

    Maybe try usbconfig -d ugen4.2 dump_curr_config_desc just to make sure it really is using config index 1 with the 3 available interfaces.

    Steve


  • LAYER 8

    it could be because it's still not defined here ? https://github.com/pfsense/FreeBSD-src/blob/RELENG_2_5/sys/dev/usb/usbdevs

    even on freebsd12 there are "only" this modem defined

    /* HUAWEI products */
    2284 	product HUAWEI MOBILE           0x1001  Huawei Mobile
    2285 	product HUAWEI E220             0x1003  HSDPA modem
    2286 	product HUAWEI E220BIS          0x1004  HSDPA modem
    2287 	product HUAWEI E1401            0x1401  3G modem
    2288 	product HUAWEI E1402            0x1402  3G modem
    2289 	product HUAWEI E1403            0x1403  3G modem
    2290 	product HUAWEI E1404            0x1404  3G modem
    2291 	product HUAWEI E1405            0x1405  3G modem
    2292 	product HUAWEI E1406            0x1406  3G modem
    2293 	product HUAWEI E1407            0x1407  3G modem
    2294 	product HUAWEI E1408            0x1408  3G modem
    2295 	product HUAWEI E1409            0x1409  3G modem
    2296 	product HUAWEI E140A            0x140a  3G modem
    2297 	product HUAWEI E140B            0x140b  3G modem
    2298 	product HUAWEI E180V            0x140c  E180V
    2299 	product HUAWEI E140D            0x140d  3G modem
    2300 	product HUAWEI E140E            0x140e  3G modem
    2301 	product HUAWEI E140F            0x140f  3G modem
    2302 	product HUAWEI E1410            0x1410  3G modem
    2303 	product HUAWEI E1411            0x1411  3G modem
    2304 	product HUAWEI E1412            0x1412  3G modem
    2305 	product HUAWEI E1413            0x1413  3G modem
    2306 	product HUAWEI E1414            0x1414  3G modem
    2307 	product HUAWEI E1415            0x1415  3G modem
    2308 	product HUAWEI E1416            0x1416  3G modem
    2309 	product HUAWEI E1417            0x1417  3G modem
    2310 	product HUAWEI E1418            0x1418  3G modem
    2311 	product HUAWEI E1419            0x1419  3G modem
    2312 	product HUAWEI E141A            0x141a  3G modem
    2313 	product HUAWEI E141B            0x141b  3G modem
    2314 	product HUAWEI E141C            0x141c  3G modem
    2315 	product HUAWEI E141D            0x141d  3G modem
    2316 	product HUAWEI E141E            0x141e  3G modem
    2317 	product HUAWEI E141F            0x141f  3G modem
    2318 	product HUAWEI E1420            0x1420  3G modem
    2319 	product HUAWEI E1421            0x1421  3G modem
    2320 	product HUAWEI E1422            0x1422  3G modem
    2321 	product HUAWEI E1423            0x1423  3G modem
    2322 	product HUAWEI E1424            0x1424  3G modem
    2323 	product HUAWEI E1425            0x1425  3G modem
    2324 	product HUAWEI E1426            0x1426  3G modem
    2325 	product HUAWEI E1427            0x1427  3G modem
    2326 	product HUAWEI E1428            0x1428  3G modem
    2327 	product HUAWEI E1429            0x1429  3G modem
    2328 	product HUAWEI E142A            0x142a  3G modem
    2329 	product HUAWEI E142B            0x142b  3G modem
    2330 	product HUAWEI E142C            0x142c  3G modem
    2331 	product HUAWEI E142D            0x142d  3G modem
    2332 	product HUAWEI E142E            0x142e  3G modem
    2333 	product HUAWEI E142F            0x142f  3G modem
    2334 	product HUAWEI E1430            0x1430  3G modem
    2335 	product HUAWEI E1431            0x1431  3G modem
    2336 	product HUAWEI E1432            0x1432  3G modem
    2337 	product HUAWEI E1433            0x1433  3G modem
    2338 	product HUAWEI E1434            0x1434  3G modem
    2339 	product HUAWEI E1435            0x1435  3G modem
    2340 	product HUAWEI E1436            0x1436  3G modem
    2341 	product HUAWEI E1437            0x1437  3G modem
    2342 	product HUAWEI E1438            0x1438  3G modem
    2343 	product HUAWEI E1439            0x1439  3G modem
    2344 	product HUAWEI E143A            0x143a  3G modem
    2345 	product HUAWEI E143B            0x143b  3G modem
    2346 	product HUAWEI E143C            0x143c  3G modem
    2347 	product HUAWEI E143D            0x143d  3G modem
    2348 	product HUAWEI E143E            0x143e  3G modem
    2349 	product HUAWEI E143F            0x143f  3G modem
    2350 	product HUAWEI E1752            0x1446  3G modem
    2351 	product HUAWEI K4505            0x1464  3G modem
    2352 	product HUAWEI K3765            0x1465  3G modem
    2353 	product HUAWEI E1820            0x14ac  E1820 HSPA+ USB Slider
    2354 	product HUAWEI K3770            0x14c9  3G modem
    2355 	product HUAWEI K3772            0x14cf  K3772
    2356 	product HUAWEI K3770_INIT       0x14d1  K3770 Initial
    2357 	product HUAWEI E3131_INIT       0x14fe  3G modem initial
    2358 	product HUAWEI E392             0x1505  LTE modem
    2359 	product HUAWEI E3131            0x1506  3G modem
    2360 	product HUAWEI K3765_INIT       0x1520  K3765 Initial
    2361 	product HUAWEI K4505_INIT       0x1521  K4505 Initial
    2362 	product HUAWEI K3772_INIT       0x1526  K3772 Initial
    2363 	product HUAWEI E3272_INIT       0x155b  LTE modem initial
    2364 	product HUAWEI R215_INIT        0x1582  LTE modem initial
    2365 	product HUAWEI R215             0x1588  LTE modem
    2366 	product HUAWEI ETS2055          0x1803  CDMA modem
    2367 	product HUAWEI E173             0x1c05  3G modem
    2368 	product HUAWEI E173_INIT        0x1c0b  3G modem initial
    2369 	product HUAWEI E3272            0x1c1e  LTE modem
    

    maybe it's better if you search for one of this modem and sell the one you have


  • Netgate Administrator

    Indeed it isn't but not all drivers need to have the device explicitly defined there. The ZTE device above also isn't in that file.

    Steve



  • Good day

    Fortunately I only borrowed the K5150 to test the failover and load balancing before I invest in proper hardware.

    It seems like there isn't a quick or easy solution to this so we might just as well close this issue.

    Thanks for the help everyone.


Log in to reply