Using LG G3 as 4G NDIS device ak USB Tethering



  • Can this device used as ndis network controler ? And do i need to modeswitch, and how ?

    usbconfig -d ugen4.3
    ugen4.3: <LG Electronics Inc. LGE Android Phone> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
    
    usbconfig -d ugen4.3  dump_all_config_desc
    ugen4.3: <LG Electronics Inc. LGE Android Phone> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
    
    
     Configuration index 0
    
        bLength = 0x0009
        bDescriptorType = 0x0002
        wTotalLength = 0x00bb
        bNumInterfaces = 0x0006
        bConfigurationValue = 0x0001
        iConfiguration = 0x0000  <no string>
        bmAttributes = 0x0080
        bMaxPower = 0x00fa
    
        Additional Descriptor
    
        bLength = 0x08
        bDescriptorType = 0x0b
        bDescriptorSubType = 0x00
         RAW dump:
         0x00 | 0x08, 0x0b, 0x00, 0x02, 0xe0, 0x01, 0x03, 0x0c
    
    
        Interface 0
          bLength = 0x0009
          bDescriptorType = 0x0004
          bInterfaceNumber = 0x0000
          bAlternateSetting = 0x0000
          bNumEndpoints = 0x0001
          bInterfaceClass = 0x00e0  <Wireless controller>
          bInterfaceSubClass = 0x0001
          bInterfaceProtocol = 0x0003
          iInterface = 0x000a  <RNDIS Communications Control>
    
          Additional Descriptor
    
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x00
           RAW dump:
           0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
    
    
          Additional Descriptor
    
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x01
           RAW dump:
           0x00 | 0x05, 0x24, 0x01, 0x00, 0x01
    
    
          Additional Descriptor
    
          bLength = 0x04
          bDescriptorType = 0x24
          bDescriptorSubType = 0x02
           RAW dump:
           0x00 | 0x04, 0x24, 0x02, 0x00
    
    
          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 = 0x0008
            bInterval = 0x0009
            bRefresh = 0x0000
            bSynchAddress = 0x0000
    
    
        Interface 1
          bLength = 0x0009
          bDescriptorType = 0x0004
          bInterfaceNumber = 0x0001
          bAlternateSetting = 0x0000
          bNumEndpoints = 0x0002
          bInterfaceClass = 0x000a  <CDC-data>
          bInterfaceSubClass = 0x0000
          bInterfaceProtocol = 0x0000
          iInterface = 0x000b  <RNDIS 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
    
          Additional Descriptor
    
          bLength = 0x08
          bDescriptorType = 0x0b
          bDescriptorSubType = 0x02
           RAW dump:
           0x00 | 0x08, 0x0b, 0x02, 0x02, 0x02, 0x02, 0x01, 0x09
    
    
    
        Interface 2
          bLength = 0x0009
          bDescriptorType = 0x0004
          bInterfaceNumber = 0x0002
          bAlternateSetting = 0x0000
          bNumEndpoints = 0x0001
          bInterfaceClass = 0x00ff  <Vendor specific>
          bInterfaceSubClass = 0x0002
          bInterfaceProtocol = 0x0001
          iInterface = 0x0007  <CDC Abstract Control Model (ACM)>
    
          Additional Descriptor
    
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x00
           RAW dump:
           0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
    
    
          Additional Descriptor
    
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x01
           RAW dump:
           0x00 | 0x05, 0x24, 0x01, 0x00, 0x03
    
    
          Additional Descriptor
    
          bLength = 0x04
          bDescriptorType = 0x24
          bDescriptorSubType = 0x02
           RAW dump:
           0x00 | 0x04, 0x24, 0x02, 0x02
    
    
          Additional Descriptor
    
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x06
           RAW dump:
           0x00 | 0x05, 0x24, 0x06, 0x02, 0x03
    
    
         Endpoint 0
            bLength = 0x0007
            bDescriptorType = 0x0005
            bEndpointAddress = 0x0084  <IN>
            bmAttributes = 0x0003  <INTERRUPT>
            wMaxPacketSize = 0x0040
            bInterval = 0x0009
            bRefresh = 0x0000
            bSynchAddress = 0x0000
    
    
        Interface 3
          bLength = 0x0009
          bDescriptorType = 0x0004
          bInterfaceNumber = 0x0003
          bAlternateSetting = 0x0000
          bNumEndpoints = 0x0002
          bInterfaceClass = 0x000a  <CDC-data>
          bInterfaceSubClass = 0x0000
          bInterfaceProtocol = 0x0000
          iInterface = 0x0008  <CDC ACM Data>
    
         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 4
          bLength = 0x0009
          bDescriptorType = 0x0004
          bInterfaceNumber = 0x0004
          bAlternateSetting = 0x0000
          bNumEndpoints = 0x0002
          bInterfaceClass = 0x00ff  <Vendor specific>
          bInterfaceSubClass = 0x00ff
          bInterfaceProtocol = 0x00ff
          iInterface = 0x0000  <no string>
    
         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 5
          bLength = 0x0009
          bDescriptorType = 0x0004
          bInterfaceNumber = 0x0005
          bAlternateSetting = 0x0000
          bNumEndpoints = 0x0002
          bInterfaceClass = 0x00ff  <Vendor specific>
          bInterfaceSubClass = 0x0042
          bInterfaceProtocol = 0x0001
          iInterface = 0x0000  <no string>
    
         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
    

  • Rebel Alliance Developer Netgate

    If it doesn't show up as an interface already (e.g. ue0) then probably not.

    We don't include all of the necessary drivers for tethering: https://redmine.pfsense.org/issues/7467



  • Thanks for help

    i copied if_urndis.ko from freebsd 11 release 1 ISO to my pfsense /boot/modules and /boot/kernel folder and run command

    kldload if_urndis
    

    ref : https://forums.freebsd.org/threads/if_urndis-ko.61979/



  • Most of the android phones should work that way, you just need to turn on the connection sharing via USB on the phone and the urndis driver will pick it up as an ethernet connection that uses standard DHCP for configuration.


  • Netgate Administrator

    You can load that automatically at boot by including in /boot/loader.conf.local:
    if_urndis_load='yes'

    You will still hit the old issues of failing to boot if that interface is assigned and the phone gets disconnected though.

    Steve


 

© Copyright 2002 - 2018 Rubicon Communications, LLC | Privacy Policy