2022-12-19 13:37:12

by Ingo Saitz

[permalink] [raw]
Subject: [bug report] rtw88 / 8821cu driver missing firmware

Hi,

I saw the 8821cu chipset being merged for linus' next kernel release and
decided to give it a try. I have been running 8821cu from
https://github.com/morrownr/8821cu-20210118 succeffully, so I know my
hardware works.

The driver as merged in commit 07cef03b8d44dee7488de3d1585387e603c78676
to git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
can't find any firmware for the driver, and the card does not work. At
boot it repeatedly logged failures to my kernel.log:

2022-12-16T19:20:21.563669+01:00 pinguin kernel: [ 7.823614] rtw_8821cu 2-11:1.0: Firmware version 24.11.0, H2C version 12
2022-12-16T19:20:21.563670+01:00 pinguin kernel: [ 7.906497] usbcore: registered new interface driver rtw_8821cu
2022-12-16T19:20:21.563670+01:00 pinguin kernel: [ 7.930657] rtw_8821cu 2-11:1.0 wlx1cbfcefeb2a3: renamed from wlan0
2022-12-16T19:20:59.576907+01:00 pinguin kernel: [ 631.847796] rtw_8821cu 2-11:1.0: failed to download firmware
2022-12-16T19:20:59.576910+01:00 pinguin kernel: [ 631.849195] rtw_8821cu 2-11:1.0: leave idle state failed
2022-12-16T19:20:59.580239+01:00 pinguin kernel: [ 631.851635] rtw_8821cu 2-11:1.0: failed to leave ips state
2022-12-16T19:20:59.580241+01:00 pinguin kernel: [ 631.851636] rtw_8821cu 2-11:1.0: failed to leave idle state
2022-12-16T19:21:08.563579+01:00 pinguin kernel: [ 640.833372] rtw_8821cu 2-11:1.0: error beacon valid
2022-12-16T19:21:08.563590+01:00 pinguin kernel: [ 640.833480] rtw_8821cu 2-11:1.0: failed to download rsvd page
2022-12-16T19:21:08.563591+01:00 pinguin kernel: [ 640.833640] rtw_8821cu 2-11:1.0: failed to download firmware
2022-12-16T19:21:08.563591+01:00 pinguin kernel: [ 640.835040] rtw_8821cu 2-11:1.0: leave idle state failed
2022-12-16T19:21:08.566911+01:00 pinguin kernel: [ 640.837510] rtw_8821cu 2-11:1.0: failed to leave ips state
2022-12-16T19:21:08.566915+01:00 pinguin kernel: [ 640.837513] rtw_8821cu 2-11:1.0: failed to leave idle state
2022-12-16T19:21:17.550263+01:00 pinguin kernel: [ 649.820641] rtw_8821cu 2-11:1.0: error beacon valid
2022-12-16T19:21:17.550288+01:00 pinguin kernel: [ 649.820759] rtw_8821cu 2-11:1.0: failed to download rsvd page

There is no mention of what firmware would be needed in the source code
itself, yet the repository https://github.com/ulli-kroll/rtl8821cu
includes a file firmware/rtl8821cufw.bin.

I don't know whether this needs another big update before linus merge
window for 6.2 closes, so I chose to report it early.

My hardware:
* XVZ USB WiFi Dongle für PC 600Mbps Dual Band

shows up as:

Bus 002 Device 003: ID 0bda:c811 Realtek Semiconductor Corp. 802.11ac NIC

Bus 002 Device 003: ID 0bda:c811 Realtek Semiconductor Corp. 802.11ac NIC
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0bda Realtek Semiconductor Corp.
idProduct 0xc811
bcdDevice 2.00
iManufacturer 1 Realtek
iProduct 2 802.11ac NIC
iSerial 3 123456
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0035
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
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 802.11ac NIC
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
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)

Ingo
--
╭─╮ Kennedy's Lemma:
╭│───╮ If you can parse Perl, you can solve the Halting Problem.
│╰─│─╯
╰──╯ http://www.perlmonks.org/?node_id=663393


2022-12-19 23:00:36

by Larry Finger

[permalink] [raw]
Subject: Re: [bug report] rtw88 / 8821cu driver missing firmware

On 12/19/22 07:30, Ingo Saitz wrote:
> I saw the 8821cu chipset being merged for linus' next kernel release and
> decided to give it a try. I have been running 8821cu from
> https://github.com/morrownr/8821cu-20210118 succeffully, so I know my
> hardware works.
>
> The driver as merged in commit 07cef03b8d44dee7488de3d1585387e603c78676
> to git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> can't find any firmware for the driver, and the card does not work. At
> boot it repeatedly logged failures to my kernel.log:
>
> 2022-12-16T19:20:21.563669+01:00 pinguin kernel: [ 7.823614] rtw_8821cu 2-11:1.0: Firmware version 24.11.0, H2C version 12
> 2022-12-16T19:20:21.563670+01:00 pinguin kernel: [ 7.906497] usbcore: registered new interface driver rtw_8821cu
> 2022-12-16T19:20:21.563670+01:00 pinguin kernel: [ 7.930657] rtw_8821cu 2-11:1.0 wlx1cbfcefeb2a3: renamed from wlan0
> 2022-12-16T19:20:59.576907+01:00 pinguin kernel: [ 631.847796] rtw_8821cu 2-11:1.0: failed to download firmware
> 2022-12-16T19:20:59.576910+01:00 pinguin kernel: [ 631.849195] rtw_8821cu 2-11:1.0: leave idle state failed
> 2022-12-16T19:20:59.580239+01:00 pinguin kernel: [ 631.851635] rtw_8821cu 2-11:1.0: failed to leave ips state
> 2022-12-16T19:20:59.580241+01:00 pinguin kernel: [ 631.851636] rtw_8821cu 2-11:1.0: failed to leave idle state
> 2022-12-16T19:21:08.563579+01:00 pinguin kernel: [ 640.833372] rtw_8821cu 2-11:1.0: error beacon valid
> 2022-12-16T19:21:08.563590+01:00 pinguin kernel: [ 640.833480] rtw_8821cu 2-11:1.0: failed to download rsvd page
> 2022-12-16T19:21:08.563591+01:00 pinguin kernel: [ 640.833640] rtw_8821cu 2-11:1.0: failed to download firmware
> 2022-12-16T19:21:08.563591+01:00 pinguin kernel: [ 640.835040] rtw_8821cu 2-11:1.0: leave idle state failed
> 2022-12-16T19:21:08.566911+01:00 pinguin kernel: [ 640.837510] rtw_8821cu 2-11:1.0: failed to leave ips state
> 2022-12-16T19:21:08.566915+01:00 pinguin kernel: [ 640.837513] rtw_8821cu 2-11:1.0: failed to leave idle state
> 2022-12-16T19:21:17.550263+01:00 pinguin kernel: [ 649.820641] rtw_8821cu 2-11:1.0: error beacon valid
> 2022-12-16T19:21:17.550288+01:00 pinguin kernel: [ 649.820759] rtw_8821cu 2-11:1.0: failed to download rsvd page
>
> There is no mention of what firmware would be needed in the source code
> itself, yet the repositoryhttps://github.com/ulli-kroll/rtl8821cu
> includes a file firmware/rtl8821cufw.bin.

The firmware that is needed is the same as for the PCIe nersion, namely
/lib/firmware/rtw88/rtw8821c_fw.bin. Your distro should have that firmware in
package firmware-realtek, or in linux-firmware-realtek. If they do not, you can
get it by 'git clone
git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git. The
firware will be in directory rtw88.

Larry

2022-12-19 23:48:26

by Ingo Saitz

[permalink] [raw]
Subject: Re: [bug report] rtw88 / 8821cu driver missing firmware

On Mon, Dec 19, 2022 at 04:53:23PM -0600, Larry Finger wrote:
> The firmware that is needed is the same as for the PCIe nersion,
> namely /lib/firmware/rtw88/rtw8821c_fw.bin. Your distro should have
> that firmware in package firmware-realtek, or in
> linux-firmware-realtek. If they do not, you can get it by 'git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git.
> The firware will be in directory rtw88.

That file is installed on my system, yet I get the above error messages.

$ ls -l /lib/firmware/rtw88/rtw8821c_fw.bin
-rw-r--r-- 1 root root 139472 Dec 16 17:54 /lib/firmware/rtw88/rtw8821c_fw.bin
$ sha1sum /lib/firmware/rtw88/rtw8821c_fw.bin
69c087a1963953c2e0e8a8338237e0689b4d7c40 /lib/firmware/rtw88/rtw8821c_fw.bin

So something else must be broken. I'll try the rtw88 driver from ulli
krolls git repository later.

Ingo
--
╭─╮ Kennedy's Lemma:
╭│───╮ If you can parse Perl, you can solve the Halting Problem.
│╰─│─╯
╰──╯ http://www.perlmonks.org/?node_id=663393

2023-02-21 23:22:12

by Alexandru Gagniuc

[permalink] [raw]
Subject: Re: [bug report] rtw88 / 8821cu driver missing firmware

Hi,
On 12/19/22 16:53, Larry Finger wrote:
> On 12/19/22 07:30, Ingo Saitz wrote:
>> I saw the 8821cu chipset being merged for linus' next kernel release and
>> decided to give it a try. I have been running 8821cu from
>> https://github.com/morrownr/8821cu-20210118  succeffully, so I know my
>> hardware works.
>>
>> The driver as merged in commit 07cef03b8d44dee7488de3d1585387e603c78676
>> to git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>> can't find any firmware for the driver, and the card does not work. At
>> boot it repeatedly logged failures to my kernel.log:
>>
>> 2022-12-16T19:20:21.563669+01:00 pinguin kernel: [    7.823614] rtw_8821cu 2-11:1.0: Firmware version 24.11.0, H2C version 12

That means that firmware 24.11.0 was loaded, which is the latest in
linux-firmware as of this writing.

>> 2022-12-16T19:20:21.563670+01:00 pinguin kernel: [    7.906497] usbcore: registered new interface driver rtw_8821cu
>> 2022-12-16T19:20:21.563670+01:00 pinguin kernel: [    7.930657] rtw_8821cu 2-11:1.0 wlx1cbfcefeb2a3: renamed from wlan0
>> 2022-12-16T19:20:59.576907+01:00 pinguin kernel: [  631.847796] rtw_8821cu 2-11:1.0: failed to download firmware
>> 2022-12-16T19:20:59.576910+01:00 pinguin kernel: [  631.849195] rtw_8821cu 2-11:1.0: leave idle state failed
>> 2022-12-16T19:20:59.580239+01:00 pinguin kernel: [  631.851635] rtw_8821cu 2-11:1.0: failed to leave ips state
>> 2022-12-16T19:20:59.580241+01:00 pinguin kernel: [  631.851636] rtw_8821cu 2-11:1.0: failed to leave idle state
>> 2022-12-16T19:21:08.563579+01:00 pinguin kernel: [  640.833372] rtw_8821cu 2-11:1.0: error beacon valid
>> 2022-12-16T19:21:08.563590+01:00 pinguin kernel: [  640.833480] rtw_8821cu 2-11:1.0: failed to download rsvd page
>> 2022-12-16T19:21:08.563591+01:00 pinguin kernel: [  640.833640] rtw_8821cu 2-11:1.0: failed to download firmware
>> 2022-12-16T19:21:08.563591+01:00 pinguin kernel: [  640.835040] rtw_8821cu 2-11:1.0: leave idle state failed
>> 2022-12-16T19:21:08.566911+01:00 pinguin kernel: [  640.837510] rtw_8821cu 2-11:1.0: failed to leave ips state
>> 2022-12-16T19:21:08.566915+01:00 pinguin kernel: [  640.837513] rtw_8821cu 2-11:1.0: failed to leave idle state
>> 2022-12-16T19:21:17.550263+01:00 pinguin kernel: [  649.820641] rtw_8821cu 2-11:1.0: error beacon valid
>> 2022-12-16T19:21:17.550288+01:00 pinguin kernel: [  649.820759] rtw_8821cu 2-11:1.0: failed to download rsvd page
>>

I have noticed the same messages on an 8821cu based adapter. There is
something wrong with the driver as opposed to missing firmware.

Alex

>> There is no mention of what firmware would be needed in the source code
>> itself, yet the repositoryhttps://github.com/ulli-kroll/rtl8821cu
>> includes a file firmware/rtl8821cufw.bin.
>
> The firmware that is needed is the same as for the PCIe nersion, namely
> /lib/firmware/rtw88/rtw8821c_fw.bin. Your distro should have that
> firmware in package firmware-realtek, or in linux-firmware-realtek. If
> they do not, you can get it by 'git clone
> git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git.
> The firware will be in directory rtw88.
>
> Larry
>
>