「インストール - Bluetoothドライバ」の版間の差分

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
(同じ利用者による、間の7版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
LinuxでBluetoothデバイスを制御する場合、専用ドライバをインストールする必要がある可能性が高い。<br>
LinuxでBluetoothデバイスを制御する場合、Realtek社等のBluetoothドライバを手動でのインストールが必要な可能性がある。<br>
<br>
<br>
ここでは、Bluetoothデバイスの各チップにおいて、専用ドライバのインストール手順を記載する。<br>
ここでは、Bluetoothデバイスの各チップにおいて、各チップベンダの専用ドライバのインストール手順を記載する。<br>
<br><br>
<br><br>


8行目: 8行目:
==== パッケージ管理システムからインストール ====
==== パッケージ管理システムからインストール ====
BlueZをインストールする。<br>
BlueZをインストールする。<br>
  sudo zypper install bluez
  sudo zypper install bluez bluez-util
<br>
<br>
BlueZサービスを開始する。<br>
BlueZサービスを開始する。<br>
106行目: 106行目:
  # モジュール群のデプロイ
  # モジュール群のデプロイ
  sudo depmod -a $(uname -r)
  sudo depmod -a $(uname -r)
<br>
Bluetoothドングルと機器が正常に接続されている場合、ジャーナルを確認すると、以下に示すようなメッセージが出力される。<br>
sudo journalctl --unit=bluetooth -f
# 出力例
# Xの箇所には、任意の数字またはアルファベットが入ることに注意する
<タイムスタンプ> <ホスト名> bluetoothd[<プロセス番号>]: Endpoint registered: sender=:X.XX path=/MediaEndpoint/A2DPSource/sbc
<タイムスタンプ> <ホスト名> bluetoothd[<プロセス番号>]: Endpoint registered: sender=:X.XX path=/MediaEndpoint/A2DPSink/sbc_xq
<タイムスタンプ> <ホスト名> bluetoothd[<プロセス番号>]: Endpoint registered: sender=:X.XX path=/MediaEndpoint/A2DPSource/sbc_xq
<タイムスタンプ> <ホスト名> bluetoothd[<プロセス番号>]: Endpoint registered: sender=:X.XX path=/MediaEndpoint/A2DPSource/faststream
<タイムスタンプ> <ホスト名> bluetoothd[<プロセス番号>]: Endpoint registered: sender=:X.XX path=/MediaEndpoint/A2DPSource/faststream_duplex
<タイムスタンプ> <ホスト名> bluetoothd[<プロセス番号>]: Endpoint registered: sender=:X.XX path=/MediaEndpoint/A2DPSink/opus_05
<タイムスタンプ> <ホスト名> bluetoothd[<プロセス番号>]: Endpoint registered: sender=:X.XX path=/MediaEndpoint/A2DPSource/opus_05
<タイムスタンプ> <ホスト名> bluetoothd[<プロセス番号>]: Endpoint registered: sender=:X.XX path=/MediaEndpoint/A2DPSink/opus_05_duplex
<タイムスタンプ> <ホスト名> bluetoothd[<プロセス番号>]: Endpoint registered: sender=:X.XX path=/MediaEndpoint/A2DPSource/opus_05_duplex
<タイムスタンプ> <ホスト名> bluetoothd[<プロセス番号>]: /org/bluez/hciX/dev_XX_XX_XX_XX_XX_XX/sepX/fdX: fd(XX) ready
<br>
<br>


120行目: 136行目:
<br><br>
<br><br>


== Realtek BT8761BUモジュールの署名 (セキュアブートが有効の場合) ==
== Realtek RTL8761BUモジュールの署名 (セキュアブートが有効の場合) ==
セキュアブートが有効の場合、Realtek BT8761BUモジュールの署名を登録する必要がある。<br>
セキュアブートが有効の場合、Realtek RTL8761BUモジュールの署名を登録する必要がある。<br>
<u>また、ユーザが勝手にモジュールファイルをXZ形式等へ圧縮してはならない。(モジュールの署名に失敗するため)</u><br>
<u>また、ユーザが勝手にモジュールファイルをXZ形式等へ圧縮してはならない。(モジュールの署名に失敗するため)</u><br>
<br>
<br>
==== Realtek BT8761BUモジュールの署名 (初めて署名する場合) ====
==== Realtek RTL8761BUモジュールの署名 (初めて署名する場合) ====
署名を登録する手順を以下に示す。<br>
署名を登録する手順を以下に示す。<br>
<br>
<br>
157行目: 173行目:
<br>
<br>
次に、MOK(Module owned Key)にキーをインポートする。<br>
次に、MOK(Module owned Key)にキーをインポートする。<br>
<code>--root-pw</code>オプションを付加することにより、再起動時のRealtek BT8761BUモジュールの署名において、rootパスワードが必要となる。<br>
<code>--root-pw</code>オプションを付加することにより、再起動時のRealtek RTL8761BUモジュールの署名において、rootパスワードが必要となる。<br>
  sudo mokutil --import ./RTL8761BU.der --root-pw
  sudo mokutil --import ./RTL8761BU.der --root-pw
<br>
<br>
163行目: 179行目:
  sudo systemctl reboot
  sudo systemctl reboot
<br>
<br>
Realtek BT8761BUモジュール(rtk_btusb.ko)を署名する。<br>
Realtek RTL8761BUモジュール(rtk_btusb.ko)を署名する。<br>
  sudo /lib/modules/$(uname -r)/build/scripts/sign-file sha256 ./RTL8761BU.priv ./RTL8761BU.der /lib/modules/$(uname -r)/kernel/drivers/bluetooth/rtk_btusb.ko
  sudo /lib/modules/$(uname -r)/build/scripts/sign-file sha256 ./RTL8761BU.priv ./RTL8761BU.der /lib/modules/$(uname -r)/kernel/drivers/bluetooth/rtk_btusb.ko
<br>
<br>
必要であれば、Realtek BT8761BUモジュールをXZ形式またはZstandard形式に圧縮する。(任意)<br>
必要であれば、Realtek RTL8761BUモジュールをXZ形式またはZstandard形式に圧縮する。(任意)<br>
  # XZ形式の場合
  # XZ形式の場合
  cd /lib/modules/$(uname -r)/kernel/drivers/bluetooth
  cd /lib/modules/$(uname -r)/kernel/drivers/bluetooth
175行目: 191行目:
  zstd --rm rtk_btusb.ko
  zstd --rm rtk_btusb.ko
<br>
<br>
Realtek BT8761BUモジュールを読み込む。<br>
Realtek RTL8761BUモジュールを読み込む。<br>
  sudo depmod -a $(uname -r)  # モジュール依存リストを更新する
  sudo depmod -a $(uname -r)  # モジュール依存リストを更新する
  sudo modprobe -v rtk_btusb  # RTL8761BUモジュールをロードする
  sudo modprobe -v rtk_btusb  # RTL8761BUモジュールをロードする
<br>
<br>
Realtek BT8761BUモジュールが正常に読み込まれているかどうかを確認する。<br>
Realtek RTL8761BUモジュールが正常に読み込まれているかどうかを確認する。<br>
  lsmod | grep rtk_btusb      # 正常に読み込まれたかどうかを確認する
  lsmod | grep rtk_btusb      # 正常に読み込まれたかどうかを確認する
<br>
<br>
Realtek BT8761BUモジュールが正しく署名されているかどうかを確認する。<br>
Realtek RTL8761BUモジュールが正しく署名されているかどうかを確認する。<br>
正常に読み込まれている場合は、<u>"RTK_8761BU.der is already enrolled"</u>と表示される。<br>
正常に読み込まれている場合は、<u>"RTK_8761BU.der is already enrolled"</u>と表示される。<br>
  cd <Realtek BT8761BUモジュールの署名ファイルが存在するディレクトリ>
  cd <Realtek RTL8761BUモジュールの署名ファイルが存在するディレクトリ>
  sudo mokutil --test-key ./RTL8761BU.der
  sudo mokutil --test-key ./RTL8761BU.der
<br>
<br>
193行目: 209行目:
<br>
<br>


==== Realtek BT8761BUモジュールの署名の削除 ====
==== Realtek RTL8761BUモジュールの署名の削除 ====
Realtek BT8761BUモジュールの署名を削除する場合、以下のコマンドを実行して再起動する。<br>
Realtek RTL8761BUモジュールの署名を削除する場合、以下のコマンドを実行して再起動する。<br>
<code>--root-pw</code>オプションを付加することにより、再起動時のRealtek BT8761BUモジュールの署名の削除において、rootパスワードが必要となる。<br>
<code>--root-pw</code>オプションを付加することにより、再起動時のRealtek RTL8761BUモジュールの署名の削除において、rootパスワードが必要となる。<br>
  cd <Realtek BT8761BUモジュールの署名ファイルが存在するディレクトリ>
  cd <Realtek RTL8761BUモジュールの署名ファイルが存在するディレクトリ>
  sudo mokutil --delete ./RTL8761BU.der --root-pw
  sudo mokutil --delete ./RTL8761BU.der --root-pw
  sudo systemctl reboot
  sudo systemctl reboot
<br>
<br>
==== Realtek BT8761BUモジュールの再署名 ====
==== Realtek RTL8761BUモジュールの再署名 ====
Linuxカーネルをアップデートした場合、Realtek BT8761BUモジュールを再署名する必要がある。<br>
Linuxカーネルをアップデートした場合、Realtek RTL8761BUモジュールを再署名する必要がある。<br>
<br>
<br>
Realtek BT8761BUモジュールの署名を削除する。
Realtek RTL8761BUモジュールの署名を削除する。
  cd <Realtek BT8761BUモジュールの署名ファイルが存在するディレクトリ>
  cd <Realtek RTL8761BUモジュールの署名ファイルが存在するディレクトリ>
  sudo mokutil --delete ./RTL8761BU.der --root-pw
  sudo mokutil --delete ./RTL8761BU.der --root-pw
<br>
<br>
PCを再起動する。<br>
PCを再起動する。<br>
  sudo systemctl reboot
  sudo systemctl reboot
<br>
Realtek RTL8761BUモジュール(rtk_btusb)を署名する。<br>
sudo /lib/modules/$(uname -r)/build/scripts/sign-file sha256 ./RTL8761BU.priv ./RTL8761BU.der /lib/modules/$(uname -r)/kernel/drivers/bluetooth/rtk_btusb.ko
<br>
<br>
MOK(Module owned Key)にキーをインポートする。<br>
MOK(Module owned Key)にキーをインポートする。<br>
  cd <Realtek BT8761BUモジュールの署名ファイルが存在するディレクトリ>
  cd <Realtek RTL8761BUモジュールの署名ファイルが存在するディレクトリ>
  sudo mokutil --import ./RTL8761BU.der --root-pw
  sudo mokutil --import ./RTL8761BU.der --root-pw
<br>
<br>
217行目: 236行目:
  sudo systemctl reboot
  sudo systemctl reboot
<br>
<br>
Realtek BT8761BUモジュール(rtk_btusb)を署名する。<br>
必要であれば、Realtek RTL8761BUモジュールをXZ形式またはZstandard形式に圧縮する。(任意)<br>
sudo /lib/modules/$(uname -r)/build/scripts/sign-file sha256 ./RTL8761BU.priv ./RTL8761BU.der /lib/modules/$(uname -r)/kernel/drivers/bluetooth/rtk_btusb.ko
<br>
必要であれば、Realtek BT8761BUモジュールをXZ形式またはZstandard形式に圧縮する。(任意)<br>
  # XZ形式の場合
  # XZ形式の場合
  cd /lib/modules/$(uname -r)/kernel/drivers/bluetooth
  cd /lib/modules/$(uname -r)/kernel/drivers/bluetooth
  xz -f f2fs.ko
  sudo xz -f rtk_btusb.ko
   
   
  # Zstandard形式の場合
  # Zstandard形式の場合
  cd /lib/modules/$(uname -r)/kernel/drivers/bluetooth
  cd /lib/modules/$(uname -r)/kernel/drivers/bluetooth
  zstd --rm rtk_btusb.ko
  sudo zstd --rm rtk_btusb.ko
<br>
<br>
Realtek BT8761BUモジュールを読み込む。<br>
Realtek RTL8761BUモジュールを読み込む。<br>
  sudo depmod -a $(uname -r)  # モジュール依存リストを更新する
  sudo depmod -a $(uname -r)  # モジュール依存リストを更新する
  sudo modprobe -v rtk_btusb  # RTL8761BUモジュールをロードする
  sudo modprobe -v rtk_btusb  # RTL8761BUモジュールをロードする
<br>
<br>
Realtek BT8761BUモジュールが正常に読み込まれているかどうかを確認する。<br>
Realtek RTL8761BUモジュールが正常に読み込まれているかどうかを確認する。<br>
  lsmod | grep rtk_btusb      # 正常に読み込まれたかどうかを確認する
  lsmod | grep rtk_btusb      # 正常に読み込まれたかどうかを確認する
<br>
<br>
Realtek BT8761BUモジュールが正しく読み込まれているかどうかを確認する。<br>
Realtek RTL8761BUモジュールが正しく読み込まれているかどうかを確認する。<br>
正常に読み込まれている場合は、<u>"RTL8761BU.der is already enrolled"</u>と表示される。<br>
正常に読み込まれている場合は、<u>"RTL8761BU.der is already enrolled"</u>と表示される。<br>
  cd <Realtek BT8761BUモジュールの署名ファイルが存在するディレクトリ>
  cd <Realtek RTL8761BUモジュールの署名ファイルが存在するディレクトリ>
  sudo mokutil --test-key ./RTL8761BU.der
  sudo mokutil --test-key ./RTL8761BU.der
<br><br>
<br><br>
266行目: 282行目:
BluetoothデバイスのUSBドングルをPCに再接続して、リモートウェイクアップ機能が有効になっているかどうかを確認する。<br>
BluetoothデバイスのUSBドングルをPCに再接続して、リモートウェイクアップ機能が有効になっているかどうかを確認する。<br>
<br><br>
<br><br>
== エラー ==
==== 送受信エラー ====
Bluetoothを通してファイルを送受信する場合、以下に示すようなエラーが出力される場合がある。<br>
Failed to start org.bluez.obex service: Unit dbus-org.bluez.obex.service not found.
<br>
まず、Bluetooth向けObexライブラリをインストールする。<br>
sudo zypper install bluez-obexd
<br>
次に、Bluetooth向けObexを有効にする。<br>
sudo systemctl --global enable obex
# 出力
Created symlink /etc/systemd/user/dbus-org.bluez.obex.service → /usr/lib/systemd/user/obex.service.
<br>
最後に、Bluetooth向けObexを開始する。<br>
systemctl --user start obex
<br>
もし、上記の手順を実行してもデータの送受信が出来ない場合は、ジャーナルを確認する。<br>
sudo journalctl --unit=bluetooth -f
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]