📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の7版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
LinuxでBluetoothデバイスを制御する場合、Realtek社等のBluetoothドライバを手動でのインストールが必要な可能性がある。<br> | |||
<br> | <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 | == Realtek RTL8761BUモジュールの署名 (セキュアブートが有効の場合) == | ||
セキュアブートが有効の場合、Realtek | セキュアブートが有効の場合、Realtek RTL8761BUモジュールの署名を登録する必要がある。<br> | ||
<u>また、ユーザが勝手にモジュールファイルをXZ形式等へ圧縮してはならない。(モジュールの署名に失敗するため)</u><br> | <u>また、ユーザが勝手にモジュールファイルをXZ形式等へ圧縮してはならない。(モジュールの署名に失敗するため)</u><br> | ||
<br> | <br> | ||
==== Realtek | ==== 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 | <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 | 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 | 必要であれば、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 | 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 | Realtek RTL8761BUモジュールが正常に読み込まれているかどうかを確認する。<br> | ||
lsmod | grep rtk_btusb # 正常に読み込まれたかどうかを確認する | lsmod | grep rtk_btusb # 正常に読み込まれたかどうかを確認する | ||
<br> | <br> | ||
Realtek | Realtek RTL8761BUモジュールが正しく署名されているかどうかを確認する。<br> | ||
正常に読み込まれている場合は、<u>"RTK_8761BU.der is already enrolled"</u>と表示される。<br> | 正常に読み込まれている場合は、<u>"RTK_8761BU.der is already enrolled"</u>と表示される。<br> | ||
cd <Realtek | cd <Realtek RTL8761BUモジュールの署名ファイルが存在するディレクトリ> | ||
sudo mokutil --test-key ./RTL8761BU.der | sudo mokutil --test-key ./RTL8761BU.der | ||
<br> | <br> | ||
| 193行目: | 209行目: | ||
<br> | <br> | ||
==== Realtek | ==== Realtek RTL8761BUモジュールの署名の削除 ==== | ||
Realtek | Realtek RTL8761BUモジュールの署名を削除する場合、以下のコマンドを実行して再起動する。<br> | ||
<code>--root-pw</code>オプションを付加することにより、再起動時のRealtek | <code>--root-pw</code>オプションを付加することにより、再起動時のRealtek RTL8761BUモジュールの署名の削除において、rootパスワードが必要となる。<br> | ||
cd <Realtek | 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 | ==== Realtek RTL8761BUモジュールの再署名 ==== | ||
Linuxカーネルをアップデートした場合、Realtek | Linuxカーネルをアップデートした場合、Realtek RTL8761BUモジュールを再署名する必要がある。<br> | ||
<br> | <br> | ||
Realtek | Realtek RTL8761BUモジュールの署名を削除する。 | ||
cd <Realtek | 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 | 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 RTL8761BUモジュールをXZ形式またはZstandard形式に圧縮する。(任意)<br> | |||
必要であれば、Realtek | |||
# XZ形式の場合 | # XZ形式の場合 | ||
cd /lib/modules/$(uname -r)/kernel/drivers/bluetooth | cd /lib/modules/$(uname -r)/kernel/drivers/bluetooth | ||
xz -f | 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 | 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 | Realtek RTL8761BUモジュールが正常に読み込まれているかどうかを確認する。<br> | ||
lsmod | grep rtk_btusb # 正常に読み込まれたかどうかを確認する | lsmod | grep rtk_btusb # 正常に読み込まれたかどうかを確認する | ||
<br> | <br> | ||
Realtek | Realtek RTL8761BUモジュールが正しく読み込まれているかどうかを確認する。<br> | ||
正常に読み込まれている場合は、<u>"RTL8761BU.der is already enrolled"</u>と表示される。<br> | 正常に読み込まれている場合は、<u>"RTL8761BU.der is already enrolled"</u>と表示される。<br> | ||
cd <Realtek | 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__ | ||
[[カテゴリ: | [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]] | ||