Administrator
发布于 2026-01-12 / 125 阅读
0
0

Linux中更新RTL8761BUE-CG固件

最近在1688上以85元价格下单了5只蓝牙适配器,商品图片如下:

卖家宣称其芯片为瑞昱 RTL8761BUE-CG ,支持蓝牙5.4标准,还带了一条可以旋转的外置天线,看起来不错。电商平台零售版5.4蓝牙适配器一般都在30元之上,而且许多没有天线。下面来测试实际效果如何。

Windows平台

支持 Windows 7 至 Windows 11系统,测试在Windows 11中即插即用,直接支持5.4标准。链接耳机、手柄等设备没有任何问题。

Windows 7需要手动安装驱动,地址为 https://www.dropbox.com/scl/fi/pyamt447ysvmj4xg73aa1/Bluetooth-Driver.rar?dl=0&e=2&rlkey=rxin88df59zcr5rdubvw52099&st=mchc07ue

Linux平台

实测在银河麒麟V10 SP1系统中即插即用,可惜仅能支持到5.1:

$ ls /lib/firmware/rtl_bt/
rtl8192ee_fw.bin  rtl8723bs_config-OBDA8723.bin  rtl8761a_fw.bin       rtl8821a_fw.bin      rtl8822b_fw.bin       rtl8822cu_fw.bin      rtl8852au_fw.bin       rtl8852bu_fw.bin
rtl8192eu_fw.bin  rtl8723bs_fw.bin               rtl8761bu_config.bin  rtl8821c_config.bin  rtl8822cs_config.bin  rtl8851bu_config.bin  rtl8852btu_config.bin  rtl8852cu_config.bin
rtl8723a_fw.bin   rtl8723d_config.bin            rtl8761bu_fw.bin      rtl8821c_fw.bin      rtl8822cs_fw.bin      rtl8851bu_fw.bin      rtl8852btu_fw.bin      rtl8852cu_fw.bin
rtl8723b_fw.bin   rtl8723d_fw.bin                rtl8812ae_fw.bin      rtl8822b_config.bin  rtl8822cu_config.bin  rtl8852au_config.bin  rtl8852bu_config.bin
$ dmesg | grep -i bluetooth
[   68.633922] usb 1-4.1: Product: Bluetooth 5.4 Radio
[   68.716649] Bluetooth: Core ver 2.22
[   68.716668] Bluetooth: HCI device and connection manager initialized
[   68.716673] Bluetooth: HCI socket layer initialized
[   68.716675] Bluetooth: L2CAP socket layer initialized
[   68.716678] Bluetooth: SCO socket layer initialized
[   68.737805] Bluetooth: hci0: RTL: examining hci_ver=0a hci_rev=000b lmp_ver=0a lmp_subver=8761
[   68.738808] Bluetooth: hci0: RTL: rom_version status=0 version=1
[   68.738812] Bluetooth: hci0: RTL: loading rtl_bt/rtl8761bu_fw.bin
[   68.739124] Bluetooth: hci0: RTL: loading rtl_bt/rtl8761bu_config.bin
[   68.739213] Bluetooth: hci0: RTL: cfg_sz 14, total sz 30218
[   68.779974] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   68.779976] Bluetooth: BNEP filters: protocol multicast
[   68.779980] Bluetooth: BNEP socket layer initialized
[   69.007796] Bluetooth: hci0: RTL: fw version 0xdfc6d922
[   69.111424] Bluetooth: RFCOMM TTY layer initialized
[   69.111428] Bluetooth: RFCOMM socket layer initialized
[   69.111436] Bluetooth: RFCOMM ver 1.11
$ hciconfig hci0 -a
hci0:	Type: Primary  Bus: USB
	BD Address: 8C:68:[省略]  ACL MTU: 1021:6  SCO MTU: 255:12
	UP RUNNING PSCAN ISCAN INQUIRY 
	RX bytes:57395 acl:0 sco:0 events:1242 errors:0
	TX bytes:35338 acl:0 sco:0 commands:518 errors:0
	Features: 0xff 0xff 0xff 0xfa 0xdb 0xbf 0x7b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link policy: RSWITCH HOLD SNIFF PARK 
	Link mode: PERIPHERAL ACCEPT 
	Name: '[省略]'
	Class: 0x7c0104
	Service Classes: Rendering, Capturing, Object Transfer, Audio, Telephony
	Device Class: Computer, Desktop workstation
	HCI Version: 5.1 (0xa)  Revision: 0xdfc6
	LMP Version: 5.1 (0xa)  Subversion: 0xd922
	Manufacturer: Realtek Semiconductor Corporation (93)
$ lsusb | grep 5.4
Bus 001 Device 008: ID 0bda:a728 Realtek Semiconductor Corp. Bluetooth 5.4 Radio

上述信息摘要如下:

  1. 硬件ID 为 0bda:a728

  2. HCI和LMP支持到5.1

  3. 固件版本为0xdfc6d922

  4. 加载rtl8761bu_fw.bin固件,系统自带版本号为0xdfc6d922

可见系统自带的rtl8761bu_fw.bin最高只支持蓝牙5.1协议。

更新固件

首先下载微软发布的驱动:

https://catalog.s.download.windowsupdate.com/d/msdownload/update/driver/drvs/2024/04/c1f14a17-4aed-40ff-85cb-7710d0244f42_4433154fbd9a4a8173ee994d24ee7eb640714562.cab

这个cab文件实际上是一个压缩包,解压后内容如下:

$ ls -lh
总用量 944K
-rw-rw-r-- 1 pico pico 5.4K 3月  20  2024 PidVid_List.dat
-rw-rw-r-- 1 pico pico 870K 3月  20  2024 RtkBtfilter.sys
-rw-rw-r-- 1 pico pico  13K 3月  20  2024 rtkfilter.cat
-rw-rw-r-- 1 pico pico 2.9K 3月  20  2024 Rtkfilter.inf
-rw-rw-r-- 1 pico pico  43K 3月  20  2024 rtl8761b_mp_chip_bt40_fw_asic_rom_patch_new.dat

rtl8761b_mp_chip_bt40_fw_asic_rom_patch_new.dat 重命名为 rtl8761bu_fw.bin ,然后替换掉原有的 /lib/firmware/rtl_bt/rtl8761bu_fw.bin,重启后生效:

$ hciconfig hci0 -a
hci0:	Type: Primary  Bus: USB
	BD Address: 8C:68:[省略]  ACL MTU: 1021:6  SCO MTU: 255:12
	UP RUNNING PSCAN ISCAN INQUIRY 
	RX bytes:84218 acl:0 sco:0 events:1527 errors:0
	TX bytes:35008 acl:0 sco:0 commands:554 errors:0
	Features: 0xff 0xff 0xff 0xfe 0xdb 0xfd 0x7b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link policy: RSWITCH HOLD SNIFF PARK 
	Link mode: PERIPHERAL ACCEPT 
	Name: '[省略]'
	Class: 0x7c0104
	Service Classes: Rendering, Capturing, Object Transfer, Audio, Telephony
	Device Class: Computer, Desktop workstation
	HCI Version:  (0xd)  Revision: 0xddd5
	LMP Version:  (0xd)  Subversion: 0xc761
	Manufacturer: Realtek Semiconductor Corporation (93)
$ dmesg | grep -i bluetooth
[    1.942406] usb 1-2.1: Product: Bluetooth 5.4 Radio
[    2.911499] Bluetooth: Core ver 2.22
[    2.911519] Bluetooth: HCI device and connection manager initialized
[    2.911523] Bluetooth: HCI socket layer initialized
[    2.911525] Bluetooth: L2CAP socket layer initialized
[    2.911530] Bluetooth: SCO socket layer initialized
[    2.923973] Bluetooth: hci0: RTL: examining hci_ver=0a hci_rev=000b lmp_ver=0a lmp_subver=8761
[    2.926252] Bluetooth: hci0: RTL: rom_version status=0 version=1
[    2.926255] Bluetooth: hci0: RTL: loading rtl_bt/rtl8761bu_fw.bin
[    2.927742] Bluetooth: hci0: RTL: loading rtl_bt/rtl8761bu_config.bin
[    2.927936] Bluetooth: hci0: RTL: cfg_sz 14, total sz 29138
[    3.194815] Bluetooth: hci0: RTL: fw version 0xddd5c761
[    3.240853] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    3.240855] Bluetooth: BNEP filters: protocol multicast
[    3.240860] Bluetooth: BNEP socket layer initialized
[    3.671429] Bluetooth: RFCOMM TTY layer initialized
[    3.671434] Bluetooth: RFCOMM socket layer initialized
[    3.671441] Bluetooth: RFCOMM ver 1.11

可见更新后的固件版本号为0xddd5c761,HCI和LMP版本也随之更新为13(0xd) ,对应蓝牙5.4 。

参考讨论:

  1. https://www.reddit.com/r/linuxhardware/comments/ynjvkx/bluetooth_53_linux_support/ ,提出了提取并替换固件文件方法;

  2. https://gist.github.com/peteristhegreat/b48da772167f86f43decbd34edbd0849 ,上述cab文件来源。


评论