これは、Realtek RTL8723DE ワイヤレス/Bluetooth モジュールを搭載した HP 15-BS576TX ラップトップです。ファームウェアはすべて入手可能であるにもかかわらず、Bluetooth を起動する方法が見つかりません。RTL8723DE ファームウェアは最近カーネル linux-firmware.git ツリーで入手可能になり、/lib/firmware/rtl_bt ディレクトリにもコピーしました。
エラーは、利用できない rtl8723b_config.bin ファイルを要求していることです。また、カーネル ログによると、このラップトップの Bluetooth 部分は 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
何が間違っているのか、わかりません。システムは Bluetooth ハードウェアを RTL8723B として検出しますが、ワイヤレス モジュールは、ラップトップの背面に記載されているように、間違いなく RTL8723DE です。ドライバーのメンテナーは、RTL8723B と RTL8723D の Bluetooth 部分は似ているとコメントしています。では、何を試してみるのが正しいのでしょうか。rtl8723b ファームウェアの代わりに rtl8723d ファームウェアと構成ファイルをロードする方法はありますか。これで問題は解決しますか。
答え1
この解決には、多少の手間が必要です。まず、最新の RTL8723D ファームウェアを linux-firmware git リポジトリからダウンロードする必要があります。ファームウェアは、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
1 番目は WiFi ファームウェア、2、3 番目は Bluetooth ファームウェアです。
これらのファームウェアは、それぞれ以下のディレクトリにコピーする必要があります: /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」コマンドでインストールできます。再起動すると、Bluetooth が動作します。
答え2
この Bluetooth デバイス rtl8723de のサポートが 4.17rc カーネルに追加されました。
コードはカーネル 4.4 - 4.15 に簡単にバックポートできます。更新された btrtl モジュールを備えた bionic および xenial 用の DKMS パッケージを含む PPA があります。
インストールできるのは
sudo add-apt-repository ppa:hanipouspilot/bluetooth
sudo apt update
sudo apt install btrtl-rtl8723de-dkms
リブート
それ以降はBluetoothが正常に動作します