RTL8761B搭載Bluetooth 5.0 USBドングルをUbuntuで動かす

Amazonで1,000円ほどで売られているRTL8761B搭載Bluetooth 5.0 USB ドングル(技適印付き)を現行のUbuntu(Ubuntu Server 20.04.3 LTS)で動かしました。あまり情報がなくて試行錯誤したので、一部の方にはお役に立てるかと思って紹介します。Ubuntu以外のLinuxディストリビューションでも動くと思います。

結論

結論から書いておきます。Ver. 5.8以降のカーネルならば、配布されている2個のファイルを取り寄せて、適切なディレクトリに置くだけで、Bluetooth 5用USBドングルが動くようです。

RTL8710とLinuxというキーワードで検索したところ、色々な方法が紹介されていました。ただ少し古い内容も多いようです。今回は新しそうな、以下のサイトの方法にしたがって対応しました。

それによると、Linuxカーネルが5.8以上ならば、このチップに対応したドライバーが含まれているそうです。5.8未満の場合は、アップデートしてくださいとのことです。手元のマシンのバージョンをuname -rコマンドで確認したところ5.11でした。なのでドライバは対応しているはずです。でも、Bluetoothドンルグは認識されず動作しません。対応したファームウェアファイルと、設定ファイルが足りないそうです。これらのファイルをcurlコマンドで取り寄せるならば、以下のようにすれば良いです。

curl -O https://raw.githubusercontent.com/Realtek-OpenSource/android_hardware_realtek/rtk1395/bt/rtkbt/Firmware/BT/rtl8761b_fw
curl -O https://raw.githubusercontent.com/Realtek-OpenSource/android_hardware_realtek/rtk1395/bt/rtkbt/Firmware/BT/rtl8761b_config

次に、この2個のファイル

  • rtl8761b_fw
  • rtl8761b_config

の末尾に.binという拡張子を付加して、/lib/firmware/rtl_bt/以下、もしくは/usr/lib/firmware/rtl_bt/以下にコピーします。ちなみに/libは/usr/libへのシンボリックリンクなので、どちらにコピーしても同じです。コピーする前に、/lib/firmware/rtl_bt/にあるファイルを見ると、rtl1876a_fw.binというファイルはありますが、RTL1876Bに対応した名前のファイルは見つかりません。そこで、ダウンロードしたファイルを以下のように改名してコピーします。

sudo cp rtl8761b_fw /lib/firmware/rtl_bt/rtl8761b_fw.bin
sudo cp rtl8761b_config /lib/firmware/rtl_bt/rtl8761b_config.bin

これでドングルが動くようになりました。少し経てば、このファイルがディストリビューションに含まれるようになり、何もしなくても動くようになるのではと思います。動作しないようでしたら、上記のファイルが存在するかどうかを確認して、ダウンロードするのが良いと思います。

動作環境

この先はおまけです。お暇な方は読んでください。

使ったドングルはAmazonで1,000円程度で売っているBluetooth LE 5.0 (BLE 5.0) USBドングルです。技適マークも刻印されていて、立派なブリスターパックで届きますが、メーカー名はどこにも書いてなくて不詳です。AliExpressなら似た製品が300円程度で売られてますが、それらに技適マークは無いので、1,000円の価値はあると思います。

これを、初代Intel NUCにインストールしたUbuntu 20.04 LTS で動かそうとしました。こちらで紹介した機種です。

このIntel NUCでmacOSが問題なく動くのですが、CPUが古いので最新のmacOSへアップデートはできません。そういう事情もあって、ほとんど使っていなかったので、Homebridgeサーバにすべく、Ubuntuサーバをインストールしました。

このマシンのBluetoothとして、上記のBLE 5.0ドングルを使おうと考えました。SwitchBotのデバイス(有名なスイッチを押す箱の他に、カーテン開閉器、コンセント、温度計などがあります)をHomebridgeから使うためです。SwitchBotデバイスはBLEで通信しているようです。SwitchBot製品には、LANへ接続するゲートウェイもあります。しかし、HomeKitには対応していないので、いずれにしてもHomebridgeを使う必要があります。BLEが届く範囲なら、BLE通信で接続する方が構成が簡単です。

LinuxでBluetoothを使う場合、こなれた古い仕様のドングルを使えば苦労なく動くと思います。でもBLE対応になった4.0以降である必要があります。さらには5.0ではメッシュ通信もできるらしいので、将来はZigbeeみたいに使えるのかもと期待しました。今まで使っていたRaspberry pi 4も5.0でした。ということで、新しいBluetooth 5.0に挑戦しました。Raspberry piは、配布されているOSイメージにBluetooth環境がすでに設定済みだったので、何もしなくて動いていました。でも一般的なUbuntuマシンでは、前述のように設定に手間がかかりました。

動作確認

色々検索して、LinuxではbluetoothctlコマンドなどでBluetoothの設定をするようです。bluetoothctlは、標準のUbuntu Serverのインストール内容に含まれないので、aptやapt-getでインストールします。また同じパッケージに入っているhciconfig -aコマンドでも確認できます。

まずは標準のlsusbコマンドで、ドングルがUSBに接続していることを確認できます。IDが0x8771でRealtekのBluetooth無線と書いてあるので、USBデバイスとしては認識されていることが確認できます。

$ lsusb
Bus 002 Device 006: ID 0bda:8771 Realtek Semiconductor Corp. Bluetooth Radio
(他に見えているデバイスは除外しました)

さらに、Bluetoothドライバが動いていれば、hciconfig -aコマンドで確認できます。

$ hciconfig -a
hci0: Type: Primary Bus: USB
(省略)
Manufacturer: Realtek Semiconductor Corporation (93)

ちゃんと動作していれば、bluetoothctlコマンドの中で、scan onなどすると他のデバイスを探してくれます。

$ bluetoothctl
[bluetooth]# scan on
Discovery started
[CHG] Controller XX:XX:XX:XX:XX:xX Discovering: yes
[NEW] Device XX:XX:XX:XX:XX:XX iPhone

こんな感じで動作を確認できます。もしBluetoothドライバが機能していない状態だと、

No Default controller available

のようなメッセージで止まってしまいます。

2件のコメント

  1. すいませーん
    SpamFireWall is checking your browser and IP 202.225.81.135 for spam bots
    Please click the link below to pass the protection,
    http://bootmacos.com/?sfw=pass1632926318

    Or you will be automatically redirected to the requested page after 3 seconds.
    0

    The page was generated at Wed, 29 Sep 2021 14:38:41

    Browser time Wed, 29 Sep 2021 14:38:41 GMT

    がFireFoxで、機能せず。ループ表示されます。
    ご対応をお願いします。

    1. ログを確認したらどういうわけかスパムとされていたようでしたので解除しておきました。まだ不具合ありましたら教えてください。ご迷惑おかけしてすみません。

返信を残す

メールアドレスが公開されることはありません。