Bug 1822831 - rtl8761b mis-identified as rtl8761a
Summary: rtl8761b mis-identified as rtl8761a
Keywords:
Status: CLOSED UPSTREAM
Alias: None
Product: Fedora
Classification: Fedora
Component: linux-firmware
Version: 31
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: David Woodhouse
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-04-10 03:23 UTC by Zamir SUN
Modified: 2020-08-11 14:33 UTC (History)
8 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-04-10 12:02:08 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Zamir SUN 2020-04-10 03:23:06 UTC
Description of problem:
USB Bluetooth dongle rtl8761a do not work and dmesg shows fail to load firmware

bluetooth hci0: Direct firmware load for rtl_bt/rtl8761a_config.bin failed with error -2

However, this rtl8761a_config.bin is actually not found on linux-firmware

Version-Release number of selected component (if applicable):
linux-firmware-20200316-106.fc31.noarch
kernel-5.5.15-200.fc31.x86_64

How reproducible:
Always

Steps to Reproduce:
1. Plug in the bluetooth dongle
2. dmesg | tail
3.

Actual results:
$ dmesg | tail
[39408.994299] usb 3-3.1.1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[39408.994301] usb 3-3.1.1.1: Product: Bluetooth Radio
[39408.994303] usb 3-3.1.1.1: Manufacturer: Realtek
[39408.994306] usb 3-3.1.1.1: SerialNumber: XXXXXXXXXXXX
[39409.003335] Bluetooth: hci0: RTL: examining hci_ver=0a hci_rev=000b lmp_ver=0a lmp_subver=8761
[39409.004329] Bluetooth: hci0: RTL: rom_version status=0 version=1
[39409.004334] Bluetooth: hci0: RTL: loading rtl_bt/rtl8761a_fw.bin
[39409.004783] Bluetooth: hci0: RTL: loading rtl_bt/rtl8761a_config.bin
[39409.004823] bluetooth hci0: Direct firmware load for rtl_bt/rtl8761a_config.bin failed with error -2
[39409.004833] Bluetooth: hci0: RTL: cfg_sz -2, total sz 20204
$ blueman-manager 
blueman-manager version 2.1.2 starting
blueman-manager 10.33.40 ERROR    Manager:118 on_dbus_name_appeared: Default adapter not found, trying first available.
blueman-manager 10.33.40 ERROR    Manager:122 on_dbus_name_appeared: No adapter(s) found, exiting

Expected results:
Bluetooth should work

Additional info:

$ lsusb -vvv -d 0bda:8771

Bus 003 Device 009: ID 0bda:8771 Realtek Semiconductor Corp. 
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0bda Realtek Semiconductor Corp.
  idProduct          0x8771 
  bcdDevice            2.00
  iManufacturer           1 
  iProduct                2 
  iSerial                 3 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              4 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              4 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0000  1x 0 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0000  1x 0 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              4 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0009  1x 9 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0009  1x 9 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       2
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              4 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0011  1x 17 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0011  1x 17 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       3
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              4 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0019  1x 25 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0019  1x 25 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       4
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              4 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0021  1x 33 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0021  1x 33 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       5
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              4 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
$ sudo dnf provides */rtl8761a*
[sudo] password for zsun: 
Last metadata expiration check: 2:59:18 ago on Fri 10 Apr 2020 07:32:42 AM HKT.
linux-firmware-20190923-102.fc31.noarch : Firmware files used by the Linux kernel
Repo        : fedora
Matched from:
Filename    : /usr/lib/firmware/rtl_bt/rtl8761a_fw.bin

linux-firmware-20200316-106.fc31.noarch : Firmware files used by the Linux kernel
Repo        : @System
Matched from:
Filename    : /usr/lib/firmware/rtl_bt/rtl8761a_fw.bin

linux-firmware-20200316-106.fc31.noarch : Firmware files used by the Linux kernel
Repo        : updates
Matched from:
Filename    : /usr/lib/firmware/rtl_bt/rtl8761a_fw.bin

I even tried to copy rtl8761a_fw.bin as rtl8761a_config.bin, but with that the userspace application still detects no device

$ sudo bluetoothctl devices
No default controller available

Comment 1 Peter Robinson 2020-04-10 12:02:08 UTC
This needs to be fixed by the hardware vendor in the upstream linux-firmware repository following the upstream process, once that is done Fedora will get it in the next upstream monthly release.

Comment 2 Zamir SUN 2020-04-10 12:32:16 UTC
Thanks.

In the mean time, with the help from my friend, I've managed to get it working by hacking into the btrtl kernel module. I'll work with my friend to see if this can go upstream or not.

Comment 3 Zamir SUN 2020-04-10 12:35:01 UTC
Oh to be clear, missing *_config.bin is *not* the actual issue. The actual issue is that this not actually rtl8761a. The Linux kernel detect this as rtl8761a but it is actually different.

Comment 4 Peter Robinson 2020-04-10 13:01:29 UTC
So it's a kernel fix required.

Comment 5 Zamir SUN 2020-04-10 15:48:58 UTC
I've sent out the patch.
https://patchwork.kernel.org/patch/11483367/

As the firmware comes from the Windows driver CD, I don't know if I can share the firmware or not, so I've send email to linux-firmware. If they say I can share it, I'll also share the patch here for reference.

In the mean time, I'm changing the bug summary to denote what's really going on and in case it helps the other users.

HTH.

Comment 6 Antonio Petrelli 2020-08-11 13:19:27 UTC
Hello
sorry for the stupid question, but was the real firmware put in the firmware package?

Comment 7 Zamir SUN 2020-08-11 13:28:13 UTC
(In reply to Antonio Petrelli from comment #6)
> Hello
> sorry for the stupid question, but was the real firmware put in the firmware
> package?

No, the firmware do not have a clear license so I cannot share it publicly, and that also means I cannot send it to the linux-firmware. We tried to contact Realtek but no feedback till now.

For future reference, the kernel part is merged in 5.8.0 already.

Comment 8 Antonio Petrelli 2020-08-11 14:30:10 UTC
Thanks Zamir, but I just managed to make it work by downloading a package online that contained the rtl8761b firmware, with kernel 5.8.0. I don't know if I am permitted to share it here, though (only the procedure, not the actual files).

Comment 9 Peter Robinson 2020-08-11 14:33:32 UTC
(In reply to Antonio Petrelli from comment #8)
> Thanks Zamir, but I just managed to make it work by downloading a package
> online that contained the rtl8761b firmware, with kernel 5.8.0. I don't know
> if I am permitted to share it here, though (only the procedure, not the
> actual files).

Please don't we can't take it form here to include upstream. Ideally it would be realtek submitting it upstream to linux-firmware for inclusion.


Note You need to log in before you can comment on or make changes to this bug.