这是一台 HP 15-BS576TX 笔记本电脑,配备 Realtek RTL8723DE 无线/蓝牙模块。老实说,尽管固件都可用,但我找不到启动蓝牙的方法。RTL8723DE 固件最近在内核 linux-firmware.git 树中可用,我也已将其复制到 /lib/firmware/rtl_bt 目录中。
错误是,它要求提供不可用的 rtl8723b_config.bin 文件。此外,根据内核日志,这台笔记本电脑的蓝牙部分被检测为 RTL8723B。固件维护人员的回复是:“并非所有设备都需要配置文件 - rtl8723be 不需要。”
# dmesg |grep -i bluetooth
[ 11.325095] Bluetooth: Core ver 2.22
[ 11.325111] Bluetooth: HCI device and connection manager initialized
[ 11.325113] Bluetooth: HCI socket layer initialized
[ 11.325115] Bluetooth: L2CAP socket layer initialized
[ 11.325118] Bluetooth: SCO socket layer initialized
[ 11.414774] Bluetooth: hci0: rtl: examining hci_ver=08 hci_rev=000d lmp_ver=08 lmp_subver=8723
[ 11.414775] Bluetooth: hci0: rtl: loading rtl_bt/rtl8723b_config.bin
[ 11.466838] bluetooth hci0: Direct firmware load for rtl_bt/rtl8723b_config.bin failed with error -2
[ 11.466840] Bluetooth: hci0: rtl: loading rtl_bt/rtl8723b_fw.bin
[ 11.478765] Bluetooth: hci0: rom_version status=0 version=2
[ 11.478767] Bluetooth: hci0: didn't find patch for chip id 2
[ 21.410553] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 21.410555] Bluetooth: BNEP filters: protocol multicast
[ 21.410557] Bluetooth: BNEP socket layer initialized
我的目录中有 rtl8723D 固件,但内核仍然将该设备检测为 RTL8723B,我无法启动它。
hci0: Type: Primary Bus: USB
BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0
DOWN
RX bytes:63 acl:0 sco:0 events:6 errors:0
TX bytes:18 acl:0 sco:0 commands:6 errors:0
Features: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Packet type: DM1 DH1 HV1
Link policy:
Link mode: SLAVE ACCEPT
当我尝试的时候,
hciconfig hci0 启动
无法初始化设备 hci0:参数无效(22)
tail -f /var/log/kern.log 显示以下内容:
Mar 8 01:51:21 HP-LAPTOP-15-BS00X kernel: [ 3116.853960] Bluetooth: hci0: rtl: examining hci_ver=08 hci_rev=000d lmp_ver=08 lmp_subver=8723
Mar 8 01:51:21 HP-LAPTOP-15-BS00X kernel: [ 3116.853970] Bluetooth: hci0: rtl: loading rtl_bt/rtl8723b_config.bin
Mar 8 01:51:21 HP-LAPTOP-15-BS00X kernel: [ 3116.854019] bluetooth hci0: Direct firmware load for rtl_bt/rtl8723b_config.bin failed with error -2
Mar 8 01:51:21 HP-LAPTOP-15-BS00X kernel: [ 3116.854024] Bluetooth: hci0: rtl: loading rtl_bt/rtl8723b_fw.bin
Mar 8 01:51:21 HP-LAPTOP-15-BS00X kernel: [ 3116.855913] Bluetooth: hci0: rom_version status=0 version=2
Mar 8 01:51:21 HP-LAPTOP-15-BS00X kernel: [ 3116.855920] Bluetooth: hci0: didn't find patch for chip id 2
/lib/firmware/rtl_bt 的样子如下。它还复制了 RTL8723D 的最新固件:
rtl8192ee_fw.bin
rtl8192eu_fw.bin
rtl8723a_fw.bin
rtl8723b_fw.bin
rtl8723d_config.bin
rtl8723d_fw.bin
rtl8761a_fw.bin
rtl8812ae_fw.bin
rtl8821a_fw.bin
rtl8821c_config.bin
rtl8821c_fw.bin
rtl8822b_config.bin
rtl8822b_fw.bin
我不知道哪里出了问题。系统检测到蓝牙硬件为 RTL8723B,而无线模块肯定是 RTL8723DE,正如笔记本电脑背面所写。驱动程序维护者评论说 RTL8723B 和 RTL8723D 的蓝牙部分相似。那么,正确的做法是什么?有没有办法加载 rtl8723d 固件和配置文件而不是 rtl8723b 固件,这样可以解决问题吗?
答案1
解决方案需要一些手工操作。首先,您必须从 linux-firmware git 存储库下载最新的 RTL8723D 固件。固件由 rtlwifi-new git 的 Larry Fingers 推送: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/commit/?id=6d5131107f2ba67a13f469ac770a55f101ba654d
使用终端中的 git 工具将 linux-firmware 目录克隆到您喜欢的任何目录 (~/Downloads)。我假设您正在下载到 ~/Downloads 目录:
git 克隆 git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
固件位于:~/Downloads/linux-firmware/rtlwifi/rtl8723defw.bin ~/Downloads/linux-firmware/rtl_bt/rtl8723d_config.bin ~/Downloads/linux-firmware/rtl_bt/rtl8723d_fw.bin
第一个是WiFi固件,第二个、第三个是蓝牙固件。
这些固件需要分别复制到以下目录:/lib/firmware/rtlwifi/rtl8723defw.bin /lib/firmware/rtl_bt/rtl8723d_fw.bin /lib/firmware/rtl_bt/rtl8723d_config.bin
您可以打开终端并使用它(sudo:输入您的密码):
sudo cp ~/Downloads/linux-firmware/rtlwifi/rtl8723defw.bin /lib/firmware/rtlwifi/
sudo cp ~/Downloads/linux-firmware/rtl_bt/rtl8723d_fw.bin /lib/firmware/rtl_bt/
sudo cp ~/Downloads/linux-firmware/rtl_bt/rtl8723d_config.bin /lib/firmware/rtl_bt/
- 现在,您必须将最新的 Linux 内核 (>= 4.17) 和内核头文件安装到您的 Linux 系统中。对于 Ubuntu,您可以从以下位置下载http://kernel.ubuntu.com/~kernel-ppa/mainline/。下载通用内核,包括 amd64(相关架构)和标头。您可以下载到目录并使用“dpkg -i *.deb”命令进行安装。重启后,蓝牙即可正常工作。
答案2
对此蓝牙设备 rtl8723de 的支持刚刚添加到 4.17rc 内核。
该代码可以轻松反向移植到内核 4.4 - 4.15。有一个 PPA,其中包含用于 bionic 和 xenial 的 DKMS 软件包以及更新的 btrtl 模块。
可以通过以下方式安装
sudo add-apt-repository ppa:hanipouspilot/bluetooth
sudo apt update
sudo apt install btrtl-rtl8723de-dkms
重启
蓝牙将正常工作