Skip to contentSkip to conversation

0bda:b812 USB "3.0" WLAN devices only report a maximum of 480 Mbps

DISCUSSION Fabian Melzow 3 participants 12 messages Nov 5, 2023 – Nov 6, 2023 USB

lore
Share & tools
lore
#0 lore raw

Hello,

I have three USB "3.0" WLAN sticks (https://i.imgur.com/zSg5s0d.jpg)
which are all based on the Realtek RTW8822BU (<=780 Mbps with IEEE 802.11ac) and use the same vendor and product ID 0bda:b812 and have the exact same output of "lsusb -vd 0bda:b812".

These devices should report 5 Gbps for USB 3.0 in the Binary Object Store Descriptor, but don't do so.

Maybe it is possible to add a software fix for this hardware problem, so I report it here.

Output of lsusb from usbutils 017 on x86_64 with kernel 6.6.0:

Bus 001 Device 003: ID 0bda:b812 Realtek Semiconductor Corp. RTL88x2bu [AC1200 Techkey] Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.10

  bDeviceClass            0 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0bda Realtek Semiconductor Corp.
  idProduct          0xb812 RTL88x2bu [AC1200 Techkey]
  bcdDevice            2.10
  iManufacturer           1 Realtek
  iProduct                2 USB3.0 802.11ac 1200M Adapter
  iSerial                 3 123456
  bNumConfigurations      1

Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0035
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 5
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 2 USB3.0 802.11ac 1200M Adapter
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 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 0x05 EP 5 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 0x06 EP 6 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 0x87 EP 7 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 3
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x08 EP 8 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 0x0016
bNumDeviceCaps 2
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x00000002
HIRD Link Power Management (LPM) Supported
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
wSpeedsSupported 0x0006
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
bFunctionalitySupport 1
Lowest fully-functional device speed is Full Speed (12Mbps)
bU1DevExitLat 10 micro seconds
bU2DevExitLat 1023 micro seconds
Device Status: 0x0000
(Bus Powered)

maintainer
#1 lore raw
Quoted 9 lines · Fabian Melzow

Hello,

I have three USB "3.0" WLAN sticks (https://i.imgur.com/zSg5s0d.jpg)
which are all based on the Realtek RTW8822BU (<=780 Mbps with IEEE 802.11ac) and use the same vendor and product ID 0bda:b812 and have the exact same output of "lsusb -vd 0bda:b812".

These devices should report 5 Gbps for USB 3.0 in the Binary Object Store Descriptor, but don't do so.

Why do you think these should report 5 Gbps? If the device descriptor does not show it, there's nothing that we can do about it in the operating system, sorry.

Quoted 2 lines

Maybe it is possible to add a software fix for this hardware problem, so I report it here.

What exactly is the hardware problem? What is not working "properly" for them?

thanks,

greg k-h

#2 lore raw

Am Sun, 5 Nov 2023 13:20:38 +0100
schrieb Greg KH <[email protected]>:

Quoted 7 lines · Fabian Melzow
Quoted 2 lines

These devices should report 5 Gbps for USB 3.0 in the Binary Object Store Descriptor, but don't do so.

Why do you think these should report 5 Gbps? If the device descriptor does not show it, there's nothing that we can do about it in the operating system, sorry.

Thanks. I don't look at the USB specification for USB >2.0, which was long times ago and then only for a user space program and thought that it at least theoretically could be possible to set the device speed at some kind of initialization.

Quoted 5 lines
Quoted 2 lines

Maybe it is possible to add a software fix for this hardware problem, so I report it here.

What exactly is the hardware problem? What is not working "properly" for them?

All 0bda:b812 USB-WLAN-devices seems to only operate at 480 Mbps, but have a WLAN-chip which supports 780 Mbps at maximum.

maintainer
#3 lore raw
Quoted 7 lines · Fabian Melzow

Am Sun, 5 Nov 2023 13:20:38 +0100
schrieb Greg KH <[email protected]>:

Quoted 4 lines · Fabian Melzow
Quoted 2 lines

These devices should report 5 Gbps for USB 3.0 in the Binary Object Store Descriptor, but don't do so.

Quoted 8 lines
Quoted 3 lines

Why do you think these should report 5 Gbps? If the device descriptor does not show it, there's nothing that we can do about it in the operating system, sorry.

Thanks. I don't look at the USB specification for USB >2.0, which was long times ago and then only for a user space program and thought that it at least theoretically could be possible to set the device speed at some kind of initialization.

There might be some vendor-specific way of doing this, and then the device resets itself, but other than that, no, descriptors are a static description of the device's capabilities.

Quoted 8 lines
Quoted 5 lines
Quoted 2 lines

Maybe it is possible to add a software fix for this hardware problem, so I report it here.

What exactly is the hardware problem? What is not working "properly" for them?

All 0bda:b812 USB-WLAN-devices seems to only operate at 480 Mbps, but have a WLAN-chip which supports 780 Mbps at maximum.

Are you sure that those devices really can run at 480 Mbps? Perhaps the chip can support higher, but the firmware on the device, and the other stuff in the device does not?

thanks,

greg k-h

#4 lore raw

Am Sun, 5 Nov 2023 14:11:02 +0100
schrieb Greg KH <[email protected]>:

Quoted 12 lines · Fabian Melzow
Quoted 11 lines

Am Sun, 5 Nov 2023 13:20:38 +0100
schrieb Greg KH <[email protected]>:

Quoted 7 lines · Fabian Melzow
Quoted 2 lines

These devices should report 5 Gbps for USB 3.0 in the Binary Object Store Descriptor, but don't do so.

Why do you think these should report 5 Gbps? If the device descriptor does not show it, there's nothing that we can do about it in the operating system, sorry.

Quoted 8 lines
Quoted 4 lines

Thanks. I don't look at the USB specification for USB >2.0, which was long times ago and then only for a user space program and thought that it at least theoretically could be possible to set the device speed at some kind of initialization.

There might be some vendor-specific way of doing this, and then the device resets itself, but other than that, no, descriptors are a static description of the device's capabilities.

When this static description is also used by the host controller to set the device speed, then these WLAN devices are limited to 480 Mbps. If these descriptor are more a information for programmers, even if some descriptors are uses to configure the device, but the hardware supports more then 480 Mbps, as which in this case, then these devices are not limited, but provide wrong information.

Quoted 9 lines
Quoted 5 lines
Quoted 2 lines

What exactly is the hardware problem? What is not working "properly" for them?

All 0bda:b812 USB-WLAN-devices seems to only operate at 480 Mbps, but have a WLAN-chip which supports 780 Mbps at maximum.

Are you sure that those devices really can run at 480 Mbps? Perhaps the chip can support higher, but the firmware on the device, and the other stuff in the device does not?

The used WLAN chipset should support more then 480 Mbps in hardware, but I don't known whether the host controller limits the speed based on the wrong descriptor of the device.

#5 lore raw
Quoted 20 lines · Fabian Melzow

Am Sun, 5 Nov 2023 14:11:02 +0100
schrieb Greg KH <[email protected]>:

Quoted 17 lines · Fabian Melzow
Quoted 15 lines

Am Sun, 5 Nov 2023 13:20:38 +0100
schrieb Greg KH <[email protected]>:

Quoted 7 lines · Fabian Melzow
Quoted 2 lines

These devices should report 5 Gbps for USB 3.0 in the Binary Object Store Descriptor, but don't do so.

Why do you think these should report 5 Gbps? If the device descriptor does not show it, there's nothing that we can do about it in the operating system, sorry.

Thanks. I don't look at the USB specification for USB >2.0, which was long times ago and then only for a user space program and thought that it at least theoretically could be possible to set the device speed at some kind of initialization.

Quoted 6 lines
Quoted 3 lines

There might be some vendor-specific way of doing this, and then the device resets itself, but other than that, no, descriptors are a static description of the device's capabilities.

When this static description is also used by the host controller to set the device speed, then these WLAN devices are limited to 480 Mbps. If

The speed is not set by the host controller; it is set by the device.

If the device is capable of running at a higher speed than 480 Mbps then it should do so. Have you checked the actual connection speed, as reported in the "speed" file in the device's sysfs directory or in the output from "lsusb -t"?

Quoted 4 lines

these descriptor are more a information for programmers, even if some descriptors are uses to configure the device, but the hardware supports more then 480 Mbps, as which in this case, then these devices are not limited, but provide wrong information.

How do you know that the device's USB hardware supports more than 480 Mbps? And even if the hardware does, maybe the firmware doesn't.

(Note: Just because the device's WLAN interface can run at 780 Mbps, it does not follow that the USB interface can run that fast.)

Quoted 6 lines
Quoted 6 lines
Quoted 5 lines
Quoted 2 lines

What exactly is the hardware problem? What is not working "properly" for them?

All 0bda:b812 USB-WLAN-devices seems to only operate at 480 Mbps, but have a WLAN-chip which supports 780 Mbps at maximum.

Quoted 7 lines
Quoted 3 lines

Are you sure that those devices really can run at 480 Mbps? Perhaps the chip can support higher, but the firmware on the device, and the other stuff in the device does not?

The used WLAN chipset should support more then 480 Mbps in hardware, but I don't known whether the host controller limits the speed based on the wrong descriptor of the device.

The speed is not determined by the device's descriptors; it is negotiated at the hardware level between the device and the upstream hub when the USB port is reset, which happens shortly after the device is plugged in, as part of initialization.

Another thing to watch out for: Even a 10-Gbps-capable device will be forced to run at a measly 480 Mbps if it is connected via a USB-2 cable rather than a USB-3 cable.

Alan Stern

#6 lore raw

Am Sun, 5 Nov 2023 09:56:06 -0500
schrieb Alan Stern <[email protected]>:

Quoted 30 lines · Fabian Melzow
Quoted 21 lines

Am Sun, 5 Nov 2023 14:11:02 +0100
schrieb Greg KH <[email protected]>:

Quoted 18 lines · Fabian Melzow
Quoted 16 lines

Am Sun, 5 Nov 2023 13:20:38 +0100
schrieb Greg KH <[email protected]>:

Quoted 8 lines
Quoted 2 lines · Fabian Melzow

These devices should report 5 Gbps for USB 3.0 in the Binary Object Store Descriptor, but don't do so.

Why do you think these should report 5 Gbps? If the device descriptor does not show it, there's nothing that we can do about it in the operating system, sorry.

Thanks. I don't look at the USB specification for USB >2.0, which was long times ago and then only for a user space program and thought that it at least theoretically could be possible to set the device speed at some kind of initialization.

Quoted 7 lines
Quoted 3 lines

There might be some vendor-specific way of doing this, and then the device resets itself, but other than that, no, descriptors are a static description of the device's capabilities.

When this static description is also used by the host controller to set the device speed, then these WLAN devices are limited to 480 Mbps. If

Quoted 6 lines

The speed is not set by the host controller; it is set by the device.

If the device is capable of running at a higher speed than 480 Mbps then it should do so. Have you checked the actual connection speed, as reported in the "speed" file in the device's sysfs directory or in the output from "lsusb -t"?

$ lsusb -t (only relevant output)
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/14p, 480M
    |__ Port 004: Dev 003, If 0, Class=Vendor Specific Class, Driver=rtw_8822bu, 480M
Quoted 6 lines

How do you know that the device's USB hardware supports more than 480 Mbps? And even if the hardware does, maybe the firmware doesn't.

(Note: Just because the device's WLAN interface can run at 780 Mbps, it does not follow that the USB interface can run that fast.)

These USB WLAN sticks are sold as "USB 3.0", and also have a blue USB-3.0-A-plug. I don't really know the speed, but 480 Mbps is reported by "lsusb -t" or in the descriptor. I did not open these devices, but have assumed that they only use a single chip to handle everything, WLAN and USB.

Quoted 15 lines
Quoted 7 lines
Quoted 7 lines
Quoted 6 lines
Quoted 2 lines

What exactly is the hardware problem? What is not working "properly" for them?

All 0bda:b812 USB-WLAN-devices seems to only operate at 480 Mbps, but have a WLAN-chip which supports 780 Mbps at maximum.

Quoted 7 lines
Quoted 3 lines

Are you sure that those devices really can run at 480 Mbps? Perhaps the chip can support higher, but the firmware on the device, and the other stuff in the device does not?

The used WLAN chipset should support more then 480 Mbps in hardware, but I don't known whether the host controller limits the speed based on the wrong descriptor of the device.

Quoted 8 lines

The speed is not determined by the device's descriptors; it is negotiated at the hardware level between the device and the upstream hub when the USB port is reset, which happens shortly after the device is plugged in, as part of initialization.

Another thing to watch out for: Even a 10-Gbps-capable device will be forced to run at a measly 480 Mbps if it is connected via a USB-2 cable rather than a USB-3 cable.

The above lsusb-output, is from plugging the stick direct into a 10 Gbps-USB 3.1-A-port, with it's A-plug in the case.

#7 lore raw
Quoted 47 lines · Fabian Melzow

Am Sun, 5 Nov 2023 09:56:06 -0500
schrieb Alan Stern <[email protected]>:

Quoted 30 lines · Fabian Melzow
Quoted 21 lines

Am Sun, 5 Nov 2023 14:11:02 +0100
schrieb Greg KH <[email protected]>:

Quoted 18 lines · Fabian Melzow
Quoted 16 lines

Am Sun, 5 Nov 2023 13:20:38 +0100
schrieb Greg KH <[email protected]>:

Quoted 8 lines
Quoted 2 lines · Fabian Melzow

These devices should report 5 Gbps for USB 3.0 in the Binary Object Store Descriptor, but don't do so.

Why do you think these should report 5 Gbps? If the device descriptor does not show it, there's nothing that we can do about it in the operating system, sorry.

Thanks. I don't look at the USB specification for USB >2.0, which was long times ago and then only for a user space program and thought that it at least theoretically could be possible to set the device speed at some kind of initialization.

Quoted 7 lines
Quoted 3 lines

There might be some vendor-specific way of doing this, and then the device resets itself, but other than that, no, descriptors are a static description of the device's capabilities.

When this static description is also used by the host controller to set the device speed, then these WLAN devices are limited to 480 Mbps. If

Quoted 6 lines

The speed is not set by the host controller; it is set by the device.

If the device is capable of running at a higher speed than 480 Mbps then it should do so. Have you checked the actual connection speed, as reported in the "speed" file in the device's sysfs directory or in the output from "lsusb -t"?

$ lsusb -t (only relevant output)
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/14p, 480M
    |__ Port 004: Dev 003, If 0, Class=Vendor Specific Class, Driver=rtw_8822bu, 480M
Quoted 4 lines

How do you know that the device's USB hardware supports more than 480 Mbps? And even if the hardware does, maybe the firmware doesn't.

Quoted 8 lines
Quoted 2 lines

(Note: Just because the device's WLAN interface can run at 780 Mbps, it does not follow that the USB interface can run that fast.)

These USB WLAN sticks are sold as "USB 3.0", and also have a blue USB-3.0-A-plug. I don't really know the speed, but 480 Mbps is reported by "lsusb -t" or in the descriptor. I did not open these devices, but have assumed that they only use a single chip to handle everything, WLAN and USB.

Have you tried plugging the device into a system running a different OS (Windows or MacOS-X)? Or even a different Linux system?

Alan Stern

#8 lore raw

Am Sun, 5 Nov 2023 14:16:18 -0500
schrieb Alan Stern <[email protected]>:

Quoted 12 lines · Fabian Melzow
Quoted 11 lines

Am Sun, 5 Nov 2023 09:56:06 -0500
schrieb Alan Stern <[email protected]>:

Quoted 7 lines

How do you know that the device's USB hardware supports more than 480 Mbps? And even if the hardware does, maybe the firmware doesn't.

(Note: Just because the device's WLAN interface can run at 780 Mbps, it does not follow that the USB interface can run that fast.)

Quoted 8 lines
Quoted 5 lines

These USB WLAN sticks are sold as "USB 3.0", and also have a blue USB-3.0-A-plug. I don't really know the speed, but 480 Mbps is reported by "lsusb -t" or in the descriptor. I did not open these devices, but have assumed that they only use a single chip to handle everything, WLAN and USB.

Have you tried plugging the device into a system running a different OS (Windows or MacOS-X)? Or even a different Linux system?

Yes, I also made a short test with the lsusb of an old Debian 11 Live-DVD. I got these devices for testing from the Amazon Vine program and after the third Monday-Hardware WLAN-device with the same problem I thought I should report this problem, to maybe help real users.

(Forgot to send the mail also to this list.)

#9 lore raw
Quoted 10 lines · Fabian Melzow

Am Sun, 5 Nov 2023 14:16:18 -0500
schrieb Alan Stern <[email protected]>:

Quoted 2 lines

Have you tried plugging the device into a system running a different OS (Windows or MacOS-X)? Or even a different Linux system?

Yes, I also made a short test with the lsusb of an old Debian 11 Live-DVD. I got these devices for testing from the Amazon Vine program and after the third Monday-Hardware WLAN-device with the same problem I thought I should report this problem, to maybe help real users.

A test with Windows might be more informative, if you can manage to do one. Perhaps the Windows driver knows how to configure the device to run at higher speed.

Also, curiously enough, when I did a web search for reports of problems with this chip, the vast majority of messages were about it not working with Linux at all because Debian/Ubuntu did not include sufficiently up-to-date drivers. People had to download driver source code from a github project and build and install it for themselves in order to get the device to function. They didn't mention what speed it used on the USB bus.

Alan Stern

#10 lore raw

Am Sun, 5 Nov 2023 21:10:47 -0500
schrieb Alan Stern <[email protected]>:

Quoted 18 lines · Fabian Melzow
Quoted 7 lines

Am Sun, 5 Nov 2023 14:16:18 -0500
schrieb Alan Stern <[email protected]>:

Quoted 3 lines

Have you tried plugging the device into a system running a different OS (Windows or MacOS-X)? Or even a different Linux system?

Quoted 5 lines

Yes, I also made a short test with the lsusb of an old Debian 11 Live-DVD. I got these devices for testing from the Amazon Vine program and after the third Monday-Hardware WLAN-device with the same problem I thought I should report this problem, to maybe help real users.

A test with Windows might be more informative, if you can manage to do one. Perhaps the Windows driver knows how to configure the device to run at higher speed.

Quoted 7 lines

Also, curiously enough, when I did a web search for reports of problems with this chip, the vast majority of messages were about it not working with Linux at all because Debian/Ubuntu did not include sufficiently up-to-date drivers. People had to download driver source code from a github project and build and install it for themselves in order to get the device to function. They didn't mention what speed it used on the USB bus.

The Linux rtw88 driver is maintained by Realtek and, if my searching is right, first appeared in Linux 5.18, so it's a newer one. I could trigger an Oops, which I also reported yesterday. According to the Debian backport https://github.com/lwfinger/rtw88 some versions of the chipset are still unsupported.

The rwt8822bu driver has also a non-USB version rwt8822b, so the chip for the USB support can also be separate from the main chip, but until now don't want to destroy one of the plastic cases.

Fabian Melzow

#11 lore raw
Quoted 35 lines · Fabian Melzow

Am Sun, 5 Nov 2023 21:10:47 -0500
schrieb Alan Stern <[email protected]>:

Quoted 18 lines · Fabian Melzow
Quoted 7 lines

Am Sun, 5 Nov 2023 14:16:18 -0500
schrieb Alan Stern <[email protected]>:

Quoted 3 lines

Have you tried plugging the device into a system running a different OS (Windows or MacOS-X)? Or even a different Linux system?

Quoted 5 lines

Yes, I also made a short test with the lsusb of an old Debian 11 Live-DVD. I got these devices for testing from the Amazon Vine program and after the third Monday-Hardware WLAN-device with the same problem I thought I should report this problem, to maybe help real users.

A test with Windows might be more informative, if you can manage to do one. Perhaps the Windows driver knows how to configure the device to run at higher speed.

Quoted 7 lines

Also, curiously enough, when I did a web search for reports of problems with this chip, the vast majority of messages were about it not working with Linux at all because Debian/Ubuntu did not include sufficiently up-to-date drivers. People had to download driver source code from a github project and build and install it for themselves in order to get the device to function. They didn't mention what speed it used on the USB bus.

The Linux rtw88 driver is maintained by Realtek and, if my searching is right, first appeared in Linux 5.18, so it's a newer one. I could trigger an Oops, which I also reported yesterday. According to the Debian backport https://github.com/lwfinger/rtw88 some versions of the chipset are still unsupported.

Quoted 3 lines

The rwt8822bu driver has also a non-USB version rwt8822b, so the chip for the USB support can also be separate from the main chip, but until now don't want to destroy one of the plastic cases.

The driver that many people have been using is the one in
https://github.com/cilynx/rtl88x2bu. The driver module is named 88x2bu.ko; it is a replacement for the rtw88_8822bu driver.

Apparently this has not been merged into the standard Linux kernel because Realtek's vendor drivers are not acceptable to the kernel's network maintainers. You might be able to get more information about this if you ask on a WLAN mailing list rather than a USB mailing list.

Alan Stern