hciconfig hci0 启动

hciconfig hci0 启动

这是一台 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

  1. 使用终端中的 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/
  1. 现在,您必须将最新的 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

重启

蓝牙将正常工作

相关内容