Troubles with rndis_host and Redmi 10 5G

Hi.

I'm using OpenWRT or derivatives since the stone age, and over the years I never had major problems, until the last week.

In short I decided to upgrade to 5G my connectivity, and I tested various devices, notably a Fibocom FM350, a One plus Nord and a Redmi 10 5G.

I got working all of them w/o much troubles except for the Redmi 10 5G

With that device, the connection over USB is limited to something like 5/10Mbps, while with the Oneplus Nord 5G I got over 300Mbps.

Also I got 300+ Mbps connecting the affected Redmi to Windows.

In short

AR750s <------>One plus nord 5G = Good
AR750s<------->Any 4G device I own = Good
AR750s<------->Redmi 10 5G = Bad (slow)
Windows<------>Any of the above = Good

The only clue I have comes from the result of lsusb -vvv


    Interface Descriptor:                                                               
      bLength                 9                                                         
      bDescriptorType         4                                                         
      bInterfaceNumber        0                                                         
      bAlternateSetting       0                                                         
      bNumEndpoints           1                                                         
      bInterfaceClass       224 Wireless                                                
      bInterfaceSubClass      1 Radio Frequency                                         
      bInterfaceProtocol      3 RNDIS                                                   
      iInterface              5 RNDIS Communications Control                            
      ** UNRECOGNIZED:  05 24 00 10 01                                                  
      ** UNRECOGNIZED:  05 24 01 00 01                                                  
      ** UNRECOGNIZED:  04 24 02 00                                                     
      ** UNRECOGNIZED:  05 24 06 00 01           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               9

That UNRECOGNIZED part look souspicious to me, but I'm not a coder.

Any Idea?

P.S. that Redmi 10 5G is also the first android phone since 2009 I'm unable to root, so I cant't experiment on the Android side of the matter

Maybe show ubus call system board and restore cut pieces from lsusb -vv - device identifiers and power steps.
Can you explain whats so suspicious about unrecognized attributes? They are in usermode tool without any influence on kernel.

Can you explain whats so suspicious about unrecognized attributes?

I didn't mean it's "so suspicious" I mean is the only thing that to my (not so trained) eye looked different from other devices, say my personal phone, which is a Galaxy A8 2018 (4G device).

I stripped the log just because (for some reasons) the board engine didn't let me to post the whole thing, I'll try again ASAP, given I'm not at home right now.

tl;dr; unrecognized by lsusb but recognized by the drivers if necessary

Those are "communication" class functional descriptors, which are obviously invalid on a "wireless" class funtion. But that's a deliberate and expected breakage. RNDIS is a mess invented by people who ignored the USB class definitions to create their buggy non-standard proprietary USB devices.

So lsusb respects the USB-IF class specs and ignores those descriptors, but the Linux drivers will still interpret the descriptors which make sense. Like that

05 24 06 00 01  

which is a CDC Union descriptor tying interface 0 and 1 to this function. Which is necessary since the control interface you're showing only has an interrupt enpoint. We need the two bulk endpoints which I assume are included in interface 1.

This is all completely unrelated to the described issue.

OK that's the whole output of lsusb -vv

Bus 001 Device 001: ID 1d6b:0002 Linux 6.6.90 ehci_hcd EHCI Host Controller
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         1
  bMaxPacketSize0        64
  idVendor           0x1d6b Linux 6.6.90 ehci_hcd
  idProduct          0x0002 EHCI Host Controller
  bcdDevice            6.06
  iManufacturer           3 Linux 6.6.90 ehci_hcd
  iProduct                2 EHCI Host Controller
  iSerial                 1 1b000000.usb
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0019
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 [unknown]
      bInterfaceSubClass      0 [unknown]
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             1
  wHubCharacteristic 0x0009
    Per-port power switching
    Per-port overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood       10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0000.0503 highspeed power enable connect
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0001
  Self Powered

Bus 001 Device 002: ID 2717:ff88 Xiaomi Redmi 10 5G
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x2717 Xiaomi
  idProduct          0xff88 Redmi 10 5G
  bcdDevice            4.04
  iManufacturer           1 Xiaomi
  iProduct                2 Redmi 10 5G
  iSerial                 3 *******snip*********
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0062
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          4 rndis_adb
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass        224 [unknown]
      bFunctionSubClass       1 [unknown]
      bFunctionProtocol       3
      iFunction               7 RNDIS
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass       224 [unknown]
      bInterfaceSubClass      1 [unknown]
      bInterfaceProtocol      3
      iInterface              5 RNDIS Communications Control
      ** UNRECOGNIZED:  05 24 00 10 01
      ** UNRECOGNIZED:  05 24 01 00 01
      ** UNRECOGNIZED:  04 24 02 00
      ** UNRECOGNIZED:  05 24 06 00 01
      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               9
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass        10 [unknown]
      bInterfaceSubClass      0 [unknown]
      bInterfaceProtocol      0
      iInterface              6 RNDIS 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           2
      bInterfaceClass       255 [unknown]
      bInterfaceSubClass     66 [unknown]
      bInterfaceProtocol      1
      iInterface              9 ADB Interface
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         0
  bMaxPacketSize0        64
  bNumConfigurations      1
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)

Bus 002 Device 001: ID 1d6b:0002 Linux 6.6.90 ehci_hcd EHCI Host Controller
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         1
  bMaxPacketSize0        64
  idVendor           0x1d6b Linux 6.6.90 ehci_hcd
  idProduct          0x0002 EHCI Host Controller
  bcdDevice            6.06
  iManufacturer           3 Linux 6.6.90 ehci_hcd
  iProduct                2 EHCI Host Controller
  iSerial                 1 1b400000.usb
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0019
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 [unknown]
      bInterfaceSubClass      0 [unknown]
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             1
  wHubCharacteristic 0x0009
    Per-port power switching
    Per-port overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood       10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0000.0503 highspeed power enable connect
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0001
  Self Powered

Bus 002 Device 002: ID 05e3:0618  USB2.0 Hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         1
  bMaxPacketSize0        64
  idVendor           0x05e3
  idProduct          0x0618 USB2.0 Hub
  bcdDevice           87.54
  iManufacturer           0
  iProduct                1 USB2.0 Hub
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0019
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 [unknown]
      bInterfaceSubClass      0 [unknown]
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0001  1x 1 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             4
  wHubCharacteristic 0x00e4
    Ganged power switching
    Compound device
    Ganged overcurrent protection
    TT think time 32 FS bits
    Port indicators
  bPwrOn2PwrGood       50 * 2 milli seconds
  bHubContrCurrent    100 milli Ampere
  DeviceRemovable    0x02
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0000.0503 highspeed power enable connect
   Port 2: 0000.0100 power
   Port 3: 0000.0100 power
   Port 4: 0000.0100 power
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            9 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         0
  bMaxPacketSize0        64
  bNumConfigurations      1
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0001
  Self Powered

Bus 002 Device 003: ID 05e3:0752 Generic USB Storage
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x05e3 Generic
  idProduct          0x0752 USB Storage
  bcdDevice            2.33
  iManufacturer           3 Generic
  iProduct                4 USB Storage
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0020
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower               98mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 [unknown]
      bInterfaceSubClass      6 [unknown]
      bInterfaceProtocol     80
      iInterface              0
      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     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         0
  bMaxPacketSize0        64
  bNumConfigurations      1
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)

and that's ubus call system board

root@OpenWrt:~# ubus call system board
{
        "kernel": "6.6.90",
        "hostname": "OpenWrt",
        "system": "Qualcomm Atheros QCA956X ver 1 rev 0",
        "model": "GL.iNet GL-AR750S (NOR)",
        "board_name": "glinet,gl-ar750s-nor",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "SNAPSHOT",
                "firmware_url": "https://downloads.openwrt.org/",
                "revision": "r29741-f23ad96e47",
                "target": "ath79/nand",
                "description": "OpenWrt SNAPSHOT r29741-f23ad96e47",
                "builddate": "1748024451"
        }
}

Those are "communication" class functional descriptors, which are obviously invalid on a "wireless" class functions.

Well what you're saying makes sense in theory. But practice tells me that if only one device over four wireless ones shows those urnecognized "things", the matter doesn't look so "obvious"...

To mee that smells more like as an exception rather than a rule.

Below you can read what lsusb has to say about my A8-2018, for comparison.

Bus 001 Device 007: ID 04e8:6860 Samsung Electronics Co., Ltd Galaxy (MTP)          
Device Descriptor:                                                                  
  bLength                18                                                         
  bDescriptorType         1                                                         
  bcdUSB               2.00                                                         
  bDeviceClass            0 (Defined at Interface level)                            
  bDeviceSubClass         0                                                         
  bDeviceProtocol         0                                                         
  bMaxPacketSize0        64                                                         
  idVendor           0x04e8 Samsung Electronics Co., Ltd                            
  idProduct          0x6860 Galaxy (MTP)                                            
  bcdDevice            4.00                                                         
  iManufacturer           1 SAMSUNG                                                 
  iProduct                2 SAMSUNG_Android                                         
  iSerial                 3 ******snip*******                                       
  bNumConfigurations      2                                                         
  Configuration Descriptor:                                                         
    bLength                 9                                                       
    bDescriptorType         2                                                       
    wTotalLength           39                                                       
    bNumInterfaces          1                                                       
    bConfigurationValue     1                                                       
    iConfiguration          4 mtp                                                   
    bmAttributes         0x80                                                       
      (Bus Powered)                                                                 
    MaxPower              500mA                                                     
    Interface Descriptor:                                                           
      bLength                 9                                                     
      bDescriptorType         4                                                     
      bInterfaceNumber        0                                                     
      bAlternateSetting       0                                                     
      bNumEndpoints           3                                                     
      bInterfaceClass       255 Vendor Specific Class                               
      bInterfaceSubClass    255 Vendor Specific Subclass                            
      bInterfaceProtocol      0                                                     
      iInterface              5 MTP                                                 
      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                                                   
      Endpoint Descriptor:                                                          
        bLength                 7                                                   
        bDescriptorType         5                                                   
        bEndpointAddress     0x82  EP 2 IN                                          
        bmAttributes            3                                                   
          Transfer Type            Interrupt                                        
          Synch Type               None                                             
          Usage Type               Data                                             
        wMaxPacketSize     0x001c  1x 28 bytes                                      
        bInterval               6                                                   
  Configuration Descriptor:                                                         
    bLength                 9                                                       
    bDescriptorType         2                                                       
    wTotalLength          105                                                       
    bNumInterfaces          3                                                       
    bConfigurationValue     2                                                       
    iConfiguration          4 mtp                                                   
    bmAttributes         0x80                                                       
      (Bus Powered)                                                                 
    MaxPower              500mA                                                     
    Interface Descriptor:                                                           
      bLength                 9                                                     
      bDescriptorType         4                                                     
      bInterfaceNumber        0                                                     
      bAlternateSetting       0                                                     
      bNumEndpoints           3                                                     
      bInterfaceClass       255 Vendor Specific Class                               
      bInterfaceSubClass    255 Vendor Specific Subclass                            
      bInterfaceProtocol      0                                                     
      iInterface              5 MTP                                                 
      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                                                   
      Endpoint Descriptor:                                                          
        bLength                 7                                                   
        bDescriptorType         5                                                   
        bEndpointAddress     0x82  EP 2 IN                                          
        bmAttributes            3                                                   
          Transfer Type            Interrupt                                        
          Synch Type               None                                             
          Usage Type               Data                                             
        wMaxPacketSize     0x001c  1x 28 bytes                                      
        bInterval               6                                                   
    Interface Association:                                                          
      bLength                 8                                                     
      bDescriptorType        11                                                     
      bFirstInterface         1                                                     
      bInterfaceCount         2                                                     
      bFunctionClass          2 Communications                                      
      bFunctionSubClass       2 Abstract (modem)                                    
      bFunctionProtocol       1 AT-commands (v.25ter)                               
      iFunction               8 CDC Serial                                          
    Interface Descriptor:                                                           
      bLength                 9                                                     
      bDescriptorType         4                                                     
      bInterfaceNumber        1                                                     
      bAlternateSetting       0                                                     
      bNumEndpoints           1                                                     
      bInterfaceClass         2 Communications                                      
      bInterfaceSubClass      2 Abstract (modem)                                    
      bInterfaceProtocol      1 AT-commands (v.25ter)                               
      iInterface              6 CDC Abstract Control Model (ACM)                    
      CDC Header:                                                                   
        bcdCDC               1.10                                                   
      CDC Call Management:                                                          
        bmCapabilities       0x00                                                   
        bDataInterface          2                                                   
      CDC ACM:                                                                      
        bmCapabilities       0x02                                                   
          line coding and serial state                                              
      CDC Union:                                                                    
        bMasterInterface        1                                                   
        bSlaveInterface         2                                                   
      Endpoint Descriptor:                                                          
        bLength                 7                                                   
        bDescriptorType         5                                                   
        bEndpointAddress     0x84  EP 4 IN                                          
        bmAttributes            3                                                   
          Transfer Type            Interrupt                                        
          Synch Type               None                                             
          Usage Type               Data                                             
        wMaxPacketSize     0x000a  1x 10 bytes                                      
        bInterval               9                                                   
    Interface Descriptor:                                                           
      bLength                 9                                                     
      bDescriptorType         4                                                     
      bInterfaceNumber        2                                                     
      bAlternateSetting       0                                                     
      bNumEndpoints           2                                                     
      bInterfaceClass        10 CDC Data                                            
      bInterfaceSubClass      0 Unused                                              
      bInterfaceProtocol      0                                                     
      iInterface              7 CDC ACM Data                                        
      Endpoint Descriptor:                                                          
        bLength                 7                                                   
        bDescriptorType         5                                                   
        bEndpointAddress     0x83  EP 3 IN                                          
        bmAttributes            2                                                   
          Transfer Type            Bulk                                             
          Synch Type               None                                             
          Usage Type               Data                                             
        wMaxPacketSize     0x0200  1x 512 bytes                                     
        bInterval               0                                                   
      Endpoint Descriptor:                                                          
        bLength                 7                                                   
        bDescriptorType         5                                                   
        bEndpointAddress     0x02  EP 2 OUT                                         
        bmAttributes            2                                                   
          Transfer Type            Bulk                                             
          Synch Type               None                                             
          Usage Type               Data                                             
        wMaxPacketSize     0x0200  1x 512 bytes                                     
        bInterval               0                                                   
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      2                                                         
Device Status:     0x0000                                                           
  (Bus Powered)                                                             

P.S. I forgot to say that I tested the affected phone also on a virtual router I use often (a Hyper-V or VMware VM running x86 or x86_64 OpenWRT) using Windows as host. And the situation looks the same, so I tend to exclude problems related to the power supply.

The phone is fast if connected to host, the phone is slow if connected to the VM.

boot openwrt off a flash drive, to bypass the VM layer ...

boot openwrt off a flash drive, to bypass the VM layer ...

Given I have native devices that don't work, the point of testing that under virtualization was to check if Windows did some magic initialization that then survived after the device was routed to the VM.

Which is exactly the opposite of what you're suggesting

It wasn't the case.

If I want to test natively on x86 all I have to do is to boot a random linux distro (for the record I did that test as well and the connection was still slow)

Give looks like no one is able to help, I add something that may be useful for other people who land in this thread.

Out of curiosity I tested a FreeBSD VM to see it is slow as Linux and...

It doesn't, I got 100+ mbps, which isn't bad at all for a VM and, while not as fast as a native Windows install, it's still 10x/15x faster than Linux.

So, I guess, I have no hope, the Linux driver must have something broken, and I doubt that the "genius" at kernel.org, who decided to deprecate that driver (used by thousands,if not millions, of people) would care of that problem at all.

You know that VMs work at 10 and 100Gbps just fine?

I use virtualization since the first beta of vmware, when the current year started by 1 and not 2. So Yes I have half an idea of what virtualization can do.

But the point is, what your sentence has to do with the topic?

The point is the speed of the usb0 connection, not the actual speed of the Host <--->Guest connection.
Unless the latter was limited to a very low speed, say 5/10Mbps, it's irrelevant if I have 100 or 300 Mbps on eth0 if Linux cant get past 10Mbps over usb0

I hoped in a quick solution from people that possibly faced the same problem.

Something like say, "yes sure just do rmmod rndis_host && modprobe rndis_host --force-something"

But I see that's not the case.

For now my phone is in the hand of RRAS, and Openwrt does just the hotspot part. Not what I wanted but It works.

Does it work well directly with host?
With cdc-ether driver?
USB passthrough for example cannot sustain webcams

I already explained in the previous messages, but I summarize again.

It works perfectly with windows host
I assume it works perfectly with FreeBSD host

It works poorly with OpenWRT and Linux x86 (both physical or virtualized)

It works poorly with the stock FW

It works poorly with Golden ORB as well

On the other hand the very same router worked decently using a different 5G smartphone using OpenWRT, (around 150Mbps) and perfectly with GoldenORB (around 300Mbps).

USB passthrough for example cannot sustain webcams

Sure... you must explain that to my (virtualized) TVheadend server that manages 4K TV w/o a sweat, using an USB tuner. It used to serve fullHD TV since the day the digital switch happened in my country (2012 IIRC), and does that using USB2 not USB3. :slight_smile:

So something isissing in rndis driver, if cdc driver is supported you could try that.
Formore generic usb test try up/downloading huge file.

I'm not that skilled in understanding the relationship between the various USB protocols/sub protocols and related drivers, but I believe cdc_ethernet is loaded anyway using rndis, it's a sort of parent driver.

The last phones I remember working with cdc_ethernet alone were the [Sony]Ericsson smartphones and featurephones that are (sadly) matter of the past.

Whatever, like I said there isn't much I can do from the phone side given it's my first not rooted Android in 16 years, so rndis is what I have.

Formore generic usb test try up/downloading huge file.

Speaking of upload... I missed to mention another "funny" fact....
Upload is fine, my provider limits it to 20Mbps and I got 20Mbps transfer on the affected setup. (which is twice the download speed).