hciconfig hci0 アップ

hciconfig hci0 アップ

これは、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

  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

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/
  1. 次に、最新の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が正常に動作します

関連情報