View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0008216||Kali Linux||[All Projects] General Bug||public||2023-03-13 01:56||2023-03-15 16:03|
|Target Version||Fixed in Version|
|Summary||0008216: Wrong Driver (or nonworking driver) loads for Realtek USB Bluetooth adaptor|
|Description||When Plugging a "popular" and commonly available Realtek USB5 adaptor, system loads incorrect driver. |
When plugging idVendor=0bda, idProduct=8771
firmware rtl_bt/rtl8761bu_fw.bin and associated config is loaded
This results in a non-working driver.
From what I have read it should be loading rtl_bt/rtl8761b_fw.bin instead.
If I rename the rtl_bt/rtl8761b_fw.bin and config files to the "bu" version it loads a working driver.
[81435.017653] usb 2-5: new full-speed USB device number 14 using ohci-pci
[81435.257246] usb 2-5: New USB device found, idVendor=0bda, idProduct=8771, bcdDevice= 2.00
[81435.257264] usb 2-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[81435.257272] usb 2-5: Product: Bluetooth Radio
[81435.257278] usb 2-5: Manufacturer: Realtek
[81435.257283] usb 2-5: SerialNumber: 00E04C239987
[81435.267263] Bluetooth: hci0: RTL: examining hci_ver=0a hci_rev=000b lmp_ver=0a lmp_subver=8761
[81435.270241] Bluetooth: hci0: RTL: rom_version status=0 version=1
[81435.270253] Bluetooth: hci0: RTL: loading rtl_bt/rtl8761bu_fw.bin
[81435.270391] bluetooth hci0: firmware: direct-loading firmware rtl_bt/rtl8761bu_fw.bin
[81435.270459] Bluetooth: hci0: RTL: loading rtl_bt/rtl8761bu_config.bin
[81435.270509] bluetooth hci0: firmware: direct-loading firmware rtl_bt/rtl8761bu_config.bin
[81435.270567] Bluetooth: hci0: RTL: cfg_sz 25, total sz 29949
[81435.656295] Bluetooth: hci0: RTL: fw version 0x0ca98a6b
[81435.795713] Bluetooth: MGMT ver 1.22
|Steps To Reproduce||Plug in said device to any up to date Kali system and get a driver loaded that is not working properly. |
|Additional Information||By not working properly I mean NO ble functions appear to work. |
hcitool -i hci- lescan
If I rename the files so it load the "b" named driver it works.
There are some post out there leading to me trying to rename the files to load a different driver.
Also I am new enough to Linux an do not really understand how the detect device and load driver process works.
I get it that when you insert the device that idVendor=0bda, idProduct=8771 somehow tells the system what it is
But I don't understand where the lookup table to match idVendor=0bda, idProduct=8771 and what drive to load.
It's simple things like this that I have problem googling for an answer on and find anything useful.
If you have any pointers where I should be looking to how this works I'd be very appreciative.
Meanwhile this does appear to be bug that has been around for awhile and possibly not reported or worked on.
Thanks for the detailed bug report. I did a bit of research on my side, apparently it's been broken for a long time,
Earlier report I can see is from 2021-09-02: https://bugzilla.kernel.org/show_bug.cgi?id=214287
Then in the Ubuntu bug tracker, 2022-04-11: https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1968604
Looking at the linux-firmware Git repo, the pair of firmware rtl8761b and rtl8761bu were added in 2021-05-29, and then updated on 2021-11-25, as can be seen with:
cd linux-firmware gitk -- 'rtl_bt/rtl8761b*'
||I sent a message to the `linux-bluetooth` maliing list: https://www.spinics.net/lists/linux-bluetooth/msg103399.html|
This probably not the right place to ask.
And this question is outside of the report.
But can you tell me how does Linux/Kernel "know" which driver/filename to load?
Where is the lookup table (when you plug in a device) idVendor=0bda, idProduct=8771 in this case-
How does Linux get the information on what filename/driver to load?
I am going in circles with google searches trying to get an answer to this.
> How does Linux get the information on what filename/driver to load?
It's really something in the kernel. This commit https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9fd2e294. As you can see there, there's a mapping between firmware files, and the information that the kernel has about the device.
I'm no kernel specialist so I can't explain more in detail, sorry :)