Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Huawei 4G/LTE USB findings

    Scheduled Pinned Locked Moved Wireless
    15 Posts 3 Posters 2.9k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • stephenw10S
      stephenw10 Netgate Administrator @keyser
      last edited by

      Yes, there's only one config index shown so no change of selecting something different in pfSense. There are 5 interfaces shown but none is obviously a serial connection.

      Just as an example this is a modem that is supported by u3g:

      [22.01-RELEASE][admin@6100.stevew.lan]/root: usbconfig -d ugen0.2 dump_all_desc
      ugen0.2: <Huawei Technologies Co., Ltd. HUAWEI Mobile> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA)
      
        bLength = 0x0012 
        bDescriptorType = 0x0001 
        bcdUSB = 0x0210 
        bDeviceClass = 0x0000  <Probed by interface class>
        bDeviceSubClass = 0x0000 
        bDeviceProtocol = 0x00ff 
        bMaxPacketSize0 = 0x0040 
        idVendor = 0x12d1 
        idProduct = 0x15c1 
        bcdDevice = 0x0102 
        iManufacturer = 0x0001  <Huawei Technologies Co., Ltd.>
        iProduct = 0x0002  <HUAWEI Mobile>
        iSerialNumber = 0x0003  <0123456789ABCDEF>
        bNumConfigurations = 0x0003 
      
       Configuration index 0
      
          bLength = 0x0009 
          bDescriptorType = 0x0002 
          wTotalLength = 0x012d 
          bNumInterfaces = 0x0006 
          bConfigurationValue = 0x0001 
          iConfiguration = 0x0000  <no string>
          bmAttributes = 0x00a0 
          bMaxPower = 0x0001 
      
          Interface 0
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0000 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0003 
            bInterfaceClass = 0x00ff  <Vendor specific>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x0010 
            iInterface = 0x0007  <Huawei Mobile Connect - Modem>
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x00
             RAW dump: 
             0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x04
            bDescriptorType = 0x24
            bDescriptorSubType = 0x02
             RAW dump: 
             0x00 | 0x04, 0x24, 0x02, 0x02
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x01
             RAW dump: 
             0x00 | 0x05, 0x24, 0x01, 0x00, 0x00
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x06
             RAW dump: 
             0x00 | 0x05, 0x24, 0x06, 0x00, 0x00
      
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0082  <IN>
              bmAttributes = 0x0003  <INTERRUPT>
              wMaxPacketSize = 0x000a 
              bInterval = 0x0009 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 1
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0081  <IN>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 2
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0001  <OUT>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
          Interface 1
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0001 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0002 
            bInterfaceClass = 0x00ff  <Vendor specific>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x0013 
            iInterface = 0x0008  <Huawei Mobile Connect - Application>
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x00
             RAW dump: 
             0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x04
            bDescriptorType = 0x24
            bDescriptorSubType = 0x02
             RAW dump: 
             0x00 | 0x04, 0x24, 0x02, 0x02
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x01
             RAW dump: 
             0x00 | 0x05, 0x24, 0x01, 0x00, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x06
             RAW dump: 
             0x00 | 0x05, 0x24, 0x06, 0x00, 0x00
      
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0083  <IN>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 1
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0002  <OUT>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
          Interface 2
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0002 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0002 
            bInterfaceClass = 0x00ff  <Vendor specific>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x0012 
            iInterface = 0x0009  <Huawei Mobile Connect - Pcui>
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x00
             RAW dump: 
             0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x04
            bDescriptorType = 0x24
            bDescriptorSubType = 0x02
             RAW dump: 
             0x00 | 0x04, 0x24, 0x02, 0x02
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x01
             RAW dump: 
             0x00 | 0x05, 0x24, 0x01, 0x00, 0x02
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x06
             RAW dump: 
             0x00 | 0x05, 0x24, 0x06, 0x00, 0x00
      
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0084  <IN>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 1
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0003  <OUT>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
          Interface 3
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0003 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0001 
            bInterfaceClass = 0x00ff  <Vendor specific>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x0016 
            iInterface = 0x000a  <HUAWEI Mobile Connect - Network Card>
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x00
             RAW dump: 
             0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x06
            bDescriptorType = 0x24
            bDescriptorSubType = 0x1a
             RAW dump: 
             0x00 | 0x06, 0x24, 0x1a, 0x00, 0x01, 0x1f
      
      
            Additional Descriptor
      
            bLength = 0x0d
            bDescriptorType = 0x24
            bDescriptorSubType = 0x0f
             RAW dump: 
             0x00 | 0x0d, 0x24, 0x0f, 0x0c, 0x0f, 0x00, 0x00, 0x00, 
             0x08 | 0xea, 0x05, 0x03, 0x00, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x06
             RAW dump: 
             0x00 | 0x05, 0x24, 0x06, 0x03, 0x03
      
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0086  <IN>
              bmAttributes = 0x0003  <INTERRUPT>
              wMaxPacketSize = 0x0010 
              bInterval = 0x0005 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
          Interface 3 Alt 1
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0003 
            bAlternateSetting = 0x0001 
            bNumEndpoints = 0x0003 
            bInterfaceClass = 0x00ff  <Vendor specific>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x0016 
            iInterface = 0x000b  <CDC Network Data>
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0086  <IN>
              bmAttributes = 0x0003  <INTERRUPT>
              wMaxPacketSize = 0x0010 
              bInterval = 0x0005 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 1
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0085  <IN>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 2
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0004  <OUT>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
          Interface 4
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0004 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0002 
            bInterfaceClass = 0x00ff  <Vendor specific>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x0014 
            iInterface = 0x000e  <Huawei Mobile Connect - Gps>
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x00
             RAW dump: 
             0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x04
            bDescriptorType = 0x24
            bDescriptorSubType = 0x02
             RAW dump: 
             0x00 | 0x04, 0x24, 0x02, 0x02
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x01
             RAW dump: 
             0x00 | 0x05, 0x24, 0x01, 0x00, 0x04
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x06
             RAW dump: 
             0x00 | 0x05, 0x24, 0x06, 0x00, 0x00
      
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0087  <IN>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 1
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0005  <OUT>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
          Interface 5
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0005 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0002 
            bInterfaceClass = 0x00ff  <Vendor specific>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x001b 
            iInterface = 0x000f  <Huawei Mobile Connect - Serial B>
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x00
             RAW dump: 
             0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x04
            bDescriptorType = 0x24
            bDescriptorSubType = 0x02
             RAW dump: 
             0x00 | 0x04, 0x24, 0x02, 0x02
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x01
             RAW dump: 
             0x00 | 0x05, 0x24, 0x01, 0x00, 0x05
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x06
             RAW dump: 
             0x00 | 0x05, 0x24, 0x06, 0x00, 0x00
      
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0088  <IN>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 1
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0006  <OUT>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
      
       Configuration index 1
      
          bLength = 0x0009 
          bDescriptorType = 0x0002 
          wTotalLength = 0x0120 
          bNumInterfaces = 0x0007 
          bConfigurationValue = 0x0002 
          iConfiguration = 0x0000  <no string>
          bmAttributes = 0x00a0 
          bMaxPower = 0x0001 
      
          Interface 0
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0000 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0001 
            bInterfaceClass = 0x0002  <Communication device>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x0000 
            iInterface = 0x0010  <CDC Ethernet Control Model (ECM)>
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x00
             RAW dump: 
             0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x06
             RAW dump: 
             0x00 | 0x05, 0x24, 0x06, 0x00, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x0d
            bDescriptorType = 0x24
            bDescriptorSubType = 0x0f
             RAW dump: 
             0x00 | 0x0d, 0x24, 0x0f, 0x12, 0x00, 0x00, 0x00, 0x00, 
             0x08 | 0xea, 0x05, 0x00, 0x00, 0x00
      
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0082  <IN>
              bmAttributes = 0x0003  <INTERRUPT>
              wMaxPacketSize = 0x0010 
              bInterval = 0x0005 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
          Interface 1
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0001 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0002 
            bInterfaceClass = 0x000a  <CDC-data>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x0000 
            iInterface = 0x0011  <CDC Ethernet Data>
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0081  <IN>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 1
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0001  <OUT>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
          Interface 2
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0002 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0003 
            bInterfaceClass = 0x00ff  <Vendor specific>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x0010 
            iInterface = 0x0007  <Huawei Mobile Connect - Modem>
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x00
             RAW dump: 
             0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x04
            bDescriptorType = 0x24
            bDescriptorSubType = 0x02
             RAW dump: 
             0x00 | 0x04, 0x24, 0x02, 0x02
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x01
             RAW dump: 
             0x00 | 0x05, 0x24, 0x01, 0x00, 0x02
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x06
             RAW dump: 
             0x00 | 0x05, 0x24, 0x06, 0x00, 0x00
      
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0084  <IN>
              bmAttributes = 0x0003  <INTERRUPT>
              wMaxPacketSize = 0x000a 
              bInterval = 0x0009 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 1
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0083  <IN>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 2
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0002  <OUT>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
          Interface 3
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0003 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0002 
            bInterfaceClass = 0x00ff  <Vendor specific>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x0013 
            iInterface = 0x0008  <Huawei Mobile Connect - Application>
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x00
             RAW dump: 
             0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x04
            bDescriptorType = 0x24
            bDescriptorSubType = 0x02
             RAW dump: 
             0x00 | 0x04, 0x24, 0x02, 0x02
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x01
             RAW dump: 
             0x00 | 0x05, 0x24, 0x01, 0x00, 0x03
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x06
             RAW dump: 
             0x00 | 0x05, 0x24, 0x06, 0x00, 0x00
      
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0085  <IN>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 1
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0003  <OUT>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
          Interface 4
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0004 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0002 
            bInterfaceClass = 0x00ff  <Vendor specific>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x0012 
            iInterface = 0x0009  <Huawei Mobile Connect - Pcui>
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x00
             RAW dump: 
             0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x04
            bDescriptorType = 0x24
            bDescriptorSubType = 0x02
             RAW dump: 
             0x00 | 0x04, 0x24, 0x02, 0x02
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x01
             RAW dump: 
             0x00 | 0x05, 0x24, 0x01, 0x00, 0x04
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x06
             RAW dump: 
             0x00 | 0x05, 0x24, 0x06, 0x00, 0x00
      
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0086  <IN>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 1
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0004  <OUT>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
          Interface 5
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0005 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0002 
            bInterfaceClass = 0x00ff  <Vendor specific>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x0014 
            iInterface = 0x000e  <Huawei Mobile Connect - Gps>
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x00
             RAW dump: 
             0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x04
            bDescriptorType = 0x24
            bDescriptorSubType = 0x02
             RAW dump: 
             0x00 | 0x04, 0x24, 0x02, 0x02
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x01
             RAW dump: 
             0x00 | 0x05, 0x24, 0x01, 0x00, 0x05
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x06
             RAW dump: 
             0x00 | 0x05, 0x24, 0x06, 0x00, 0x00
      
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0087  <IN>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 1
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0005  <OUT>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
          Interface 6
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0006 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0002 
            bInterfaceClass = 0x00ff  <Vendor specific>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x001b 
            iInterface = 0x000f  <Huawei Mobile Connect - Serial B>
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x00
             RAW dump: 
             0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x04
            bDescriptorType = 0x24
            bDescriptorSubType = 0x02
             RAW dump: 
             0x00 | 0x04, 0x24, 0x02, 0x02
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x01
             RAW dump: 
             0x00 | 0x05, 0x24, 0x01, 0x00, 0x06
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x06
             RAW dump: 
             0x00 | 0x05, 0x24, 0x06, 0x00, 0x00
      
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0088  <IN>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 1
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0006  <OUT>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
      
       Configuration index 2
      
          bLength = 0x0009 
          bDescriptorType = 0x0002 
          wTotalLength = 0x0089 
          bNumInterfaces = 0x0003 
          bConfigurationValue = 0x0003 
          iConfiguration = 0x0000  <no string>
          bmAttributes = 0x00a0 
          bMaxPower = 0x0001 
      
          Additional Descriptor
      
          bLength = 0x08
          bDescriptorType = 0x0b
          bDescriptorSubType = 0x00
           RAW dump: 
           0x00 | 0x08, 0x0b, 0x00, 0x02, 0x02, 0x0e, 0x00, 0x0d
      
      
          Interface 0
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0000 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0001 
            bInterfaceClass = 0x0002  <Communication device>
            bInterfaceSubClass = 0x000e 
            bInterfaceProtocol = 0x0000 
            iInterface = 0x000a  <HUAWEI Mobile Connect - Network Card>
      
            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, 0x20, 
             0x08 | 0x80, 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 = 0x0010 
              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 = 0x000b  <CDC Network Data>
      
      
          Interface 1 Alt 1
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0001 
            bAlternateSetting = 0x0001 
            bNumEndpoints = 0x0002 
            bInterfaceClass = 0x000a  <CDC-data>
            bInterfaceSubClass = 0x0000 
            bInterfaceProtocol = 0x0002 
            iInterface = 0x000b  <CDC Network Data>
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0081  <IN>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 1
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0001  <OUT>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      
          Interface 2
            bLength = 0x0009 
            bDescriptorType = 0x0004 
            bInterfaceNumber = 0x0002 
            bAlternateSetting = 0x0000 
            bNumEndpoints = 0x0002 
            bInterfaceClass = 0x00ff  <Vendor specific>
            bInterfaceSubClass = 0x0006 
            bInterfaceProtocol = 0x0014 
            iInterface = 0x000e  <Huawei Mobile Connect - Gps>
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x00
             RAW dump: 
             0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
      
      
            Additional Descriptor
      
            bLength = 0x04
            bDescriptorType = 0x24
            bDescriptorSubType = 0x02
             RAW dump: 
             0x00 | 0x04, 0x24, 0x02, 0x02
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x01
             RAW dump: 
             0x00 | 0x05, 0x24, 0x01, 0x00, 0x02
      
      
            Additional Descriptor
      
            bLength = 0x05
            bDescriptorType = 0x24
            bDescriptorSubType = 0x06
             RAW dump: 
             0x00 | 0x05, 0x24, 0x06, 0x00, 0x00
      
      
           Endpoint 0
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0083  <IN>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
           Endpoint 1
              bLength = 0x0007 
              bDescriptorType = 0x0005 
              bEndpointAddress = 0x0002  <OUT>
              bmAttributes = 0x0002  <BULK>
              wMaxPacketSize = 0x0200 
              bInterval = 0x0000 
              bRefresh = 0x0000 
              bSynchAddress = 0x0000 
      
      

      Which shows in the boot log as:

      ugen0.2: <Huawei Technologies Co., Ltd. HUAWEI Mobile> at usbus0
      u3g0 on uhub0
      u3g0: <Huawei Mobile Connect - Modem> on usbus0
      u3g0: Found 5 ports.
      

      Resulting in:

      [22.01-RELEASE][admin@6100.stevew.lan]/dev: ls cuaU*
      cuaU0.0      cuaU0.0.lock cuaU0.1.init cuaU0.2      cuaU0.2.lock cuaU0.3.init cuaU0.4      cuaU0.4.lock
      cuaU0.0.init cuaU0.1      cuaU0.1.lock cuaU0.2.init cuaU0.3      cuaU0.3.lock cuaU0.4.init
      

      It finds the USB ethernet device on yoru modem because the cdce driver will attach to any cdc Ethernet device, it doesn't need to have the exact matching USB IDs.

      Steve

      keyserK 2 Replies Last reply Reply Quote 0
      • keyserK
        keyser Rebel Alliance @stephenw10
        last edited by

        @stephenw10 😒

        So no hope of getting that stick running? It is more or less he only stick you can buy these days, so it's a little difficult getting something else that will be supported.

        I'm guessing it's not so much a driver thing (likely the same drivers will work), but it's rather an issue where it doesn't recognize the ID/devices and then does not know which drivers to use to attach to the devices.
        Any chance I can low level edit something to make it attach the standard drivers to this 0x155e ID?

        Love the no fuss of using the official appliances :-)

        1 Reply Last reply Reply Quote 0
        • keyserK
          keyser Rebel Alliance @stephenw10
          last edited by

          @stephenw10 I should mention that It seems my Aruba AP’s use the CDC interface to make the 4G connection, so that is likely the interface to use. But whether that is the serial Interface or a API interface I don’t know. I can see your Huawei have the CDC as well, but also somthing called Serial B.

          Can you figure out which device number corresponds to the cuaUx.x interface you use to control the 4G connection with?

          Love the no fuss of using the official appliances :-)

          1 Reply Last reply Reply Quote 0
          • stephenw10S
            stephenw10 Netgate Administrator
            last edited by

            Mmm, it's unfortunately difficult to add devices to u3g to test because the values are tied into the OS. You need to recompile everything.

            I see there are a number of threads reporting similar or identical responses with that device and no good result.
            The immediate disconnect thing is odd. Doesn't look like anyone else has found a reason for that either. 😕

            keyserK 1 Reply Last reply Reply Quote 0
            • keyserK
              keyser Rebel Alliance @stephenw10
              last edited by keyser

              @stephenw10 said in Huawei 4G/LTE USB findings:

              Mmm, it's unfortunately difficult to add devices to u3g to test because the values are tied into the OS. You need to recompile everything.

              I see there are a number of threads reporting similar or identical responses with that device and no good result.
              The immediate disconnect thing is odd. Doesn't look like anyone else has found a reason for that either. 😕

              😞

              Since this is a bit outside netgate’s jurisdiction (base OS driver updates), I guess there is no need to get my hopes too high.
              Given BSD always had lackluster support in the cellular department, I’ll put this project on lifesupport until support for 4G dongles you can actually get is present.

              But Thanks for the insight

              Love the no fuss of using the official appliances :-)

              1 Reply Last reply Reply Quote 0
              • stephenw10S
                stephenw10 Netgate Administrator
                last edited by

                I have two here, both are internal m.2 cards but still USB connected. Neither are current though so it's hard to recommend for a new deployment.
                The only thing that will always work is an external Ethernet connected LTE modem.

                Steve

                1 Reply Last reply Reply Quote 0
                • R
                  randommen
                  last edited by randommen

                  Okay so after a lot of troubleshooting, I finally seem to have got this working, although I have got this working before on older pfsense versions.

                  Currently on a SG4860-1U running pfSense 23.05.1, I attached the Huawei E3372h-320 via USB.

                  Beforehand, please note that this worked on a previous version, somewhere last year (A older FreeBSD release, I think 12?), by just using usb_modeswitch and switching from Drive mode to USB Ethernet mode,
                  however, when currently doing that it doesn't recognize the device.

                  So after some digging I found out that it is now recognized in NCM mode, as described above in option 3, so with USB Product ID 0x155e.

                  Well, this made me want to just try using a PPP interface and one of the /dev/cuau ports, I tried them all.
                  Some responded, some didn't, the ones that responded however were still faulting:
                  CHAT: The modem responded with "ERROR" to the command "AT&F&C1&D2E0S0=0M1" at ModemCmd: label

                  Well, after a short amount of googling I found this topic:
                  https://forum.netgate.com/topic/53105/pfsense-and-huawei-e3276-4g/9

                  Which mentioned: "I found that running this manually and removing the S0=0 string it worked"

                  So, I did and put this in the init string field in the settings:
                  &F&C1&D2E0

                  And tadaaa, it worked, the interface is now correctly registered and received the WAN IP, no more double NAT, too, and no flashing at all :-)

                  Settings I configured in the PPP options:
                  /dev/cuaU0.0 (although, please try others too and see if the modem responds by reading the logs).
                  Phone number, #777, no idea if that is OK, although I think that I have to use a CDMA network, it works for my provider at least...
                  Sim pin,
                  Sim pin wait = 30, to be sure.
                  Init string with settings above.

                  That's it, then just assign it to an interface and be done with it.

                  No more usb_modeswitching, (I even removed the package), just working out of the box! (For now... hehe)

                  keyserK 1 Reply Last reply Reply Quote 3
                  • keyserK
                    keyser Rebel Alliance @randommen
                    last edited by

                    @randommen I’m not sure I understand. Does it switch automatically to NCM mode when inserted or after a reboot?
                    I assume pfSense still autodiscovers the Ethernet device side of the bridge when in NCM mode?

                    If it does, could you post a screenshot of your PPP/Serial port settings to actually control it/make it connect on the 4G side?

                    Love the no fuss of using the official appliances :-)

                    R 1 Reply Last reply Reply Quote 0
                    • R
                      randommen @keyser
                      last edited by

                      @keyser Yes it seems to switch to NCM mode automatically, no action taken, directly after plugging in and after reboot.
                      It does stil discover the ue0 device, too yes. Didn't try using it.

                      It is now working 20 hours concurrently.

                      See attachment, all the red things I configured, all the others I didn't really touch.

                      426f5cc3-c695-453c-bc5d-8185e585dc4e-image.png

                      Then just assign it to an interface and it is working.

                      I had to play around with the link interface, just try every single one and see what it does for you.

                      You can watch the PPP log under /var/log/ppp.log or system logs in the GUI.

                      keyserK 2 Replies Last reply Reply Quote 0
                      • keyserK
                        keyser Rebel Alliance @randommen
                        last edited by

                        @randommen Thanks - I’ll see if I can get time to play with it. I find it strange that you need to use serial interface as the actual datainterface. As far as I understand, the ue0 Ethernet interface should be a transparent bridge to the 4G connection and should be your WAN over Ethernet - just like any other Ethernet based WAN link.

                        Love the no fuss of using the official appliances :-)

                        1 Reply Last reply Reply Quote 0
                        • keyserK
                          keyser Rebel Alliance @randommen
                          last edited by

                          @randommen That would eliminate the PPP part with all its performance and throughput issues….

                          Love the no fuss of using the official appliances :-)

                          1 Reply Last reply Reply Quote 0
                          • T tompark referenced this topic on
                          • First post
                            Last post
                          Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.