「Bluetooth」の版間の差分
(→コンソール: 同期) |
(同期) |
||
1行目: | 1行目: | ||
[[Category:Bluetooth]] |
[[Category:Bluetooth]] |
||
− | [[cs:Bluetooth]] |
||
[[de:Bluetooth]] |
[[de:Bluetooth]] |
||
[[en:Bluetooth]] |
[[en:Bluetooth]] |
||
[[es:Bluetooth]] |
[[es:Bluetooth]] |
||
[[fr:Bluetooth]] |
[[fr:Bluetooth]] |
||
− | [[it:Bluetooth]] |
||
[[ru:Bluetooth]] |
[[ru:Bluetooth]] |
||
[[zh-hans:Bluetooth]] |
[[zh-hans:Bluetooth]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
− | {{Related|Bluez4}} |
||
{{Related|Bluetooth マウス}} |
{{Related|Bluetooth マウス}} |
||
{{Related|Bluetooth キーボード}} |
{{Related|Bluetooth キーボード}} |
||
16行目: | 13行目: | ||
{{Related|ObexFTP}} |
{{Related|ObexFTP}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | [ |
+ | [[Wikipedia:ja:Bluetooth|Bluetooth]] は携帯電話やコンピュータなどの電子デバイス用の近距離無線通信規格です。Linux においては、Bluetooth プロトコルスタックの実装として [http://www.bluez.org/ BlueZ] が標準的に使われています。 |
== インストール == |
== インストール == |
||
22行目: | 19行目: | ||
# Bluetooth プロトコロスタックを提供する、{{Pkg|bluez}} パッケージを[[インストール]]します。 |
# Bluetooth プロトコロスタックを提供する、{{Pkg|bluez}} パッケージを[[インストール]]します。 |
||
# {{ic|bluetoothctl}} ユーティリティを提供する、{{Pkg|bluez-utils}} を[[インストール]]します。または {{AUR|bluez-utils-compat}} を[[インストール]]して、[[#非推奨の BlueZ tools|非推奨の BlueZ tools]] を追加します。 |
# {{ic|bluetoothctl}} ユーティリティを提供する、{{Pkg|bluez-utils}} を[[インストール]]します。または {{AUR|bluez-utils-compat}} を[[インストール]]して、[[#非推奨の BlueZ tools|非推奨の BlueZ tools]] を追加します。 |
||
− | # 一般的な Bluetooth ドライバは、{{ic|btusb}} カーネルモジュールです。このモジュールがロードされているかどうかを[[カーネルモジュール# |
+ | # 一般的な Bluetooth ドライバは、{{ic|btusb}} カーネルモジュールです。このモジュールがロードされているかどうかを[[カーネルモジュール#情報を取得|確認]]してください。もしロードされていなければ、[[カーネルモジュール#手動でモジュールを扱う|モジュールをロード]]してください。 |
# {{ic|bluetooth.service}} を[[起動/有効化]]します。 |
# {{ic|bluetooth.service}} を[[起動/有効化]]します。 |
||
{{Note| |
{{Note| |
||
− | * デフォルトでは bluetooth デーモンは {{ic|lp}} グループのメンバーのユーザーだけに bnep0 デバイスを提供します。bluetooth で接続するときはユーザーをグループに追加しておいてください。必要なグループは {{ic|/etc/dbus-1/system.d/bluetooth.conf}} ファイルで変更することができます。 |
+ | * デフォルトでは bluetooth デーモンは {{ic|lp}} [[ユーザーとグループ#システムグループ|グループ]]のメンバーのユーザーだけに bnep0 デバイスを提供します。bluetooth で接続するときはユーザーをグループに追加しておいてください。必要なグループは {{ic|/etc/dbus-1/system.d/bluetooth.conf}} ファイルで変更することができます。 |
* Bluetooth アダプターには Wi-Fi カードがバンドルされているものもあります (例: [https://www.intel.com/content/www/us/en/wireless-products/centrino-advanced-n-6235.html Intel Centrino])。これらの Bluetooth アダプターをカーネルから見えるようにするには、まず Wi-Fi カードを有効にする必要があります (大体はラップトップ上のキーボードショートカットを使う)。 |
* Bluetooth アダプターには Wi-Fi カードがバンドルされているものもあります (例: [https://www.intel.com/content/www/us/en/wireless-products/centrino-advanced-n-6235.html Intel Centrino])。これらの Bluetooth アダプターをカーネルから見えるようにするには、まず Wi-Fi カードを有効にする必要があります (大体はラップトップ上のキーボードショートカットを使う)。 |
||
* Bluetooth カードによってはネットワークアダプタと衝突することがあります (例: Broadcom)。したがって、ネットワークサービスを起動する前に Bluetooth デバイスを接続するようにしてください。 |
* Bluetooth カードによってはネットワークアダプタと衝突することがあります (例: Broadcom)。したがって、ネットワークサービスを起動する前に Bluetooth デバイスを接続するようにしてください。 |
||
− | * hcitool や hciconfig などのツールは上流では非推奨となっており、{{Pkg|bluez-utils}} にはもはや含まれていません。アップデートされないことが決まっているため、スクリプトの中で使用している場合は使わないように書き換えることを推奨します。それでも使いたい場合は {{AUR|bluez-utils-compat}} をインストールしてください。詳しい情報は {{Bug|53110}} や [https:// |
+ | * hcitool や hciconfig などのツールは上流では非推奨となっており、{{Pkg|bluez-utils}} にはもはや含まれていません。アップデートされないことが決まっているため、スクリプトの中で使用している場合は使わないように書き換えることを推奨します。それでも使いたい場合は {{AUR|bluez-utils-compat}} をインストールしてください。詳しい情報は {{Bug|53110}} や [https://lore.kernel.org/linux-bluetooth/20170104133401.3636-1-luiz.dentz@gmail.com/ Bluez メーリングリスト] を参照。}} |
=== フロントエンド === |
=== フロントエンド === |
||
36行目: | 33行目: | ||
* {{App|bluetoothctl|シェルからデバイスをペアリングすることは、最も単純で信頼性の高いオプションの一つです。|http://www.bluez.org/|{{Pkg|bluez-utils}}}} |
* {{App|bluetoothctl|シェルからデバイスをペアリングすることは、最も単純で信頼性の高いオプションの一つです。|http://www.bluez.org/|{{Pkg|bluez-utils}}}} |
||
− | |||
* {{App|bluetuith|ターミナルユーザインターフェイスによる Bluetooth マネージャを提供します。OBEX ファイル転送とマウスのサポート付きで、デバイス/アダプタを簡単に管理できます。|https://www.github.com/darkhz/bluetuith|{{AUR|bluetuith}}}} |
* {{App|bluetuith|ターミナルユーザインターフェイスによる Bluetooth マネージャを提供します。OBEX ファイル転送とマウスのサポート付きで、デバイス/アダプタを簡単に管理できます。|https://www.github.com/darkhz/bluetuith|{{AUR|bluetuith}}}} |
||
54行目: | 50行目: | ||
** Thunar のファイルプロパティメニューの ''送信先'' メニューに Bluetooth エントリを追加するには、説明 [https://docs.xfce.org/xfce/thunar/send-to ここ] を参照してください。(設定が必要なコマンドは {{ic|bluetooth-sendto %F}} です) |
** Thunar のファイルプロパティメニューの ''送信先'' メニューに Bluetooth エントリを追加するには、説明 [https://docs.xfce.org/xfce/thunar/send-to ここ] を参照してください。(設定が必要なコマンドは {{ic|bluetooth-sendto %F}} です) |
||
|https://wiki.gnome.org/Projects/GnomeBluetooth|}} |
|https://wiki.gnome.org/Projects/GnomeBluetooth|}} |
||
− | * {{App|Bluedevil|[[KDE]] |
+ | * {{App|Bluedevil|[[KDE]] の Bluetooth ツール。 Dolphin やシステムトレイに Bluetooth のアイコンが表示されていない場合は、システムトレイオプションで有効にするか、ウィジェットを追加してください。アイコンをクリックすることで、Bluedevil の設定や Bluetooth デバイスの検出が可能です。KDE システム設定からもインターフェースが利用できます。|https://invent.kde.org/plasma/bluedevil|{{Pkg|bluedevil}}}} |
* {{App|Blueberry|GNOME Bluetooth から Linux Mint でスピンオフした ''Blueberry'' は全てのデスクトップ環境で動作します。Obex Object Push によるファイル受信をサポートしていません。|https://github.com/linuxmint/blueberry|{{Pkg|blueberry}}}} |
* {{App|Blueberry|GNOME Bluetooth から Linux Mint でスピンオフした ''Blueberry'' は全てのデスクトップ環境で動作します。Obex Object Push によるファイル受信をサポートしていません。|https://github.com/linuxmint/blueberry|{{Pkg|blueberry}}}} |
||
* {{App|[[Blueman]]|フル機能の Bluetooth マネージャー|https://github.com/blueman-project/blueman|{{Pkg|blueman}}}} |
* {{App|[[Blueman]]|フル機能の Bluetooth マネージャー|https://github.com/blueman-project/blueman|{{Pkg|blueman}}}} |
||
− | * {{App|[[ObexFTP]]|OBEX 対応のデバイスとの間でファイルを転送するツール|http://dev.zuckschwerdt.org/openobex/wiki/ObexFtp|{{AUR|obexftp}}}} |
+ | * {{App|[[ObexFTP]]|OBEX 対応のデバイスとの間でファイルを転送するツール。|http://dev.zuckschwerdt.org/openobex/wiki/ObexFtp|{{AUR|obexftp}}}} |
== ペアリング == |
== ペアリング == |
||
63行目: | 59行目: | ||
{{Note|Bluetooth デバイスを使用する前に、[[rfkill]] でブロックされていないことを確認してください。}} |
{{Note|Bluetooth デバイスを使用する前に、[[rfkill]] でブロックされていないことを確認してください。}} |
||
+ | このセクションでは、''bluetoothctl'' CLI を使って ''bluez5'' を直接設定する方法を説明しています。これは、代替のフロントエンドツール(例えば GNOME Bluetooth)を使用している場合は必要ないかもしれません。 |
||
− | シェルからデバイスをペアリングするのは最もシンプルで信頼性のある方法の1つです。正確な手順は利用するデバイスとその入力機能によります。以下は {{ic|/usr/bin/bluetoothctl}} を使ってデバイスをペアリングする一般的な説明です: |
||
+ | |||
+ | 正確な手順は、利用するデバイスとその入力機能によります。以下は {{ic|bluetoothctl}} を使ってデバイスをペアリングする一般的な説明です。 |
||
{{ic|bluetoothctl}} 対話コマンドを実行してください。{{ic|help}} と入力することで利用できるコマンドのリストを表示できます。 |
{{ic|bluetoothctl}} 対話コマンドを実行してください。{{ic|help}} と入力することで利用できるコマンドのリストを表示できます。 |
||
− | # {{ic|select ''MAC Address''}} と入力してデフォルトのコントローラを選択してください。 |
+ | # (任意) {{ic|select ''MAC Address''}} と入力してデフォルトのコントローラを選択してください。 |
− | # {{ic|power on}} と入力してコントローラの電源を入れて下さい。デフォルトではオフになって |
+ | # {{ic|power on}} と入力してコントローラの電源を入れて下さい。デフォルトではオフになっており、起動するたびにオフになります、[[#起動後/再開後に自動で有効にする]] を見てください。 |
− | # {{ic|devices}} と入力してペアリング |
+ | # {{ic|devices}} と入力して、ペアリングしたいデバイスの MAC アドレスを取得してください。 |
# デバイスが表示されないときは {{ic|scan on}} コマンドでデバイス検出モードにしてください。 |
# デバイスが表示されないときは {{ic|scan on}} コマンドでデバイス検出モードにしてください。 |
||
+ | # {{ic|agent on}} でエージェントをオンにするか、特定のエージェントを選択してください: {{ic|agent}} の後にタブキーを2回押すと、利用可能なエージェントのリストが表示されるはずです。Bluetooth エージェントとは、Bluetooth の 'ペアリングコード' を管理するもののことです。エージェントは、'ペアリングコード'の受信に応答したり、'ペアリングコード'を送信したりできます。ほとんどの場合、{{ic|default-agent}} を使うのが適切なはずです。[https://askubuntu.com/questions/763939/bluetoothctl-what-is-a-bluetooth-agent] |
||
− | # {{ic|agent on}} でエージェントをオンにしてください。 |
||
# {{ic|pair ''MAC Address''}} と入力することでペアリングを実行します (タブ補完が使えます)。 |
# {{ic|pair ''MAC Address''}} と入力することでペアリングを実行します (タブ補完が使えます)。 |
||
− | # PIN がないデバイスを使う場合は、手動でデバイスを信頼する必要があるかもしれません。{{ic|trust ''MAC Address''}} と入力してこれを行なって下さい。 |
+ | # PIN がないデバイスを使う場合は、手動でデバイスを信頼する必要があるかもしれません。{{ic|trust ''MAC Address''}} と入力してこれを行なって下さい。デバイスを信頼するには {{ic|trust ''MAC_address''}} と入力してください。 |
− | # |
+ | # {{ic|connect ''MAC_address''}} を使って接続を確立してください。 |
セッションの例は以下のようになります: |
セッションの例は以下のようになります: |
||
115行目: | 113行目: | ||
=== デュアルブートペアリング === |
=== デュアルブートペアリング === |
||
− | デュアルブート |
+ | デュアルブート環境でデバイスをペアリングするには、Linux インストール時にペアリング・キーを手動で変更し、両方のシステムで一致するようにする必要があります。 |
==== 設定方法 ==== |
==== 設定方法 ==== |
||
127行目: | 125行目: | ||
===== Windows での展開 ===== |
===== Windows での展開 ===== |
||
+ | {{Accuracy|BT5.1 マウスのキー構造は、ここで説明されているものと異なる場合があります。}} |
||
− | {{Accuracy|The key structure for a BT5.1 mouse may be different than described here.}} |
||
リンクキーを含むレジストリキーは、[https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/local-accounts#system SYSTEM アカウント] でしかアクセスできないため、ログインすることができません。そのため、{{ic|regedit.exe}} を {{ic|SYSTEM}} として実行するには、Windows Sysinternals 公式サイトにある Microsoft の [https://docs.microsoft.com/en-us/sysinternals/downloads/psexec PsExec] ツールが必要になります。 |
リンクキーを含むレジストリキーは、[https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/local-accounts#system SYSTEM アカウント] でしかアクセスできないため、ログインすることができません。そのため、{{ic|regedit.exe}} を {{ic|SYSTEM}} として実行するには、Windows Sysinternals 公式サイトにある Microsoft の [https://docs.microsoft.com/en-us/sysinternals/downloads/psexec PsExec] ツールが必要になります。 |
||
133行目: | 131行目: | ||
[https://download.sysinternals.com/files/PSTools.zip PsTools] をダウンロードし、{{ic|PsExe64.exe}} を解凍します。 |
[https://download.sysinternals.com/files/PSTools.zip PsTools] をダウンロードし、{{ic|PsExe64.exe}} を解凍します。 |
||
− | [https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands#command-shell-overview コマンドシェル] の管理者インスタンスで、解凍した EXE の場所から |
+ | [https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands#command-shell-overview コマンドシェル] の管理者インスタンスで、解凍した EXE の場所からレジストリエディタを起動してください: |
.\PsExec64.exe -s -i regedit.exe |
.\PsExec64.exe -s -i regedit.exe |
||
139行目: | 137行目: | ||
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys |
||
− | このキーの中に |
+ | このキーの中に各 Bluetooth アダプターの MAC アドレス別のキーがあります。複数のキーがあり、どれを使えばいいかわからない場合は、[https://www.addictivetips.com/windows-tips/find-bluetooth-mac-address-windows-10/ このガイド]に従って、目的の Bluetooth アダプタの MAC アドレスを検索してください。 |
目的のデバイス・アダプタ・キーの中に、同じように MAC アドレス別に、ペアリングされた各デバイスのバイナリ値があります。 |
目的のデバイス・アダプタ・キーの中に、同じように MAC アドレス別に、ペアリングされた各デバイスのバイナリ値があります。 |
||
− | インストール間で共有したい各ペアデバイスについて、キー全体を右クリックし、''.reg''ファイルとしてエクスポートしてください。 |
+ | インストール間で共有したい各ペアデバイスについて、キー全体を右クリックし、''.reg'' ファイルとしてエクスポートしてください。 |
{{ic|LTK}}, {{ic|ERand}}, {{ic|EDIV}} の値が存在する場合、これは Bluetooth 5.1 デバイスであり、これらのキーも保存する必要があります。これらを正しい形式に変換する方法は [[#Bluetooth 5.1キーの準備]] を見てください。 |
{{ic|LTK}}, {{ic|ERand}}, {{ic|EDIV}} の値が存在する場合、これは Bluetooth 5.1 デバイスであり、これらのキーも保存する必要があります。これらを正しい形式に変換する方法は [[#Bluetooth 5.1キーの準備]] を見てください。 |
||
169行目: | 167行目: | ||
> cd ''your-device's-mac-address'' |
> cd ''your-device's-mac-address'' |
||
− | ペアリングしているデバイスにも同じことをします |
+ | ペアリングしているデバイスにも同じことをします: |
{{hc|> ls| |
{{hc|> ls| |
||
202行目: | 200行目: | ||
これらの値のうち、{{ic|LTK}}、{{ic|ERand}}、{{ic|EDIV}} は必ず保存する必要があります。これらを正しい形式に変換する方法は [[#Bluetooth 5.1キーの準備]] を見てください。 |
これらの値のうち、{{ic|LTK}}、{{ic|ERand}}、{{ic|EDIV}} は必ず保存する必要があります。これらを正しい形式に変換する方法は [[#Bluetooth 5.1キーの準備]] を見てください。 |
||
+ | {{hc|> hex LTK| |
||
+ | :00000 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX (いくつかの他の文字) |
||
+ | }} |
||
+ | |||
+ | {{Note|MX Master 3 をペアリングしたい場合、キー {{ic|LTK}}、{{ic|ERand}}、{{ic|EDIV}} を展開するのではなく、{{ic|LTK}} と {{ic|IRK}} だけを展開する必要があります。}} |
||
最後に、キーを Linux 環境にインポートするために [[#終わりに]] へ進んでください。 |
最後に、キーを Linux 環境にインポートするために [[#終わりに]] へ進んでください。 |
||
207行目: | 210行目: | ||
===== Bluetooth 5.1キーの準備 ===== |
===== Bluetooth 5.1キーの準備 ===== |
||
− | {{Accuracy| |
+ | {{Accuracy|Logitech MX Master 3 では、{{ic|LTK}} は {{ic|SlaveLongTermKey.Key}} と {{ic|PeripheralLongTermKey.Key}} の両方にマッピングされる一方、{{ic|IRK}} は {{ic|IdentityResolvingKey.Key}} にマッピングされます。変換は必要ありません。ただ単に、16進数の間のスペースを削除してください(これを素早く行うには[https://www.browserling.com/tools/remove-all-whitespace オンラインのツール]を使ってください)。|Talk:Bluetooth#Logitech Bluetooth Devices Mac Address Increment}} |
− | もし、目的のデバイスのレジストリに {{ic|LTK}}, {{ic|ERand}}, {{ic|EDIV}} の値があった場合、それらを Linux で使用するために変換する必要があります。{{ic|LTK}} は {{ic|LongTermKey.Key}} に、 {{ic|ERand}} は {{ic|Rand}} に、 {{ic|EDIV}} は {{ic|EDiv}} に対応するものです。また、{{ic|ERand}} の値は反転して10進数に変換 |
+ | もし、目的のデバイスのレジストリに {{ic|LTK}}, {{ic|ERand}}, {{ic|EDIV}} の値があった場合、それらを Linux で使用するために変換する必要があります。{{ic|LTK}} は {{ic|LongTermKey.Key}} に、 {{ic|ERand}} は {{ic|Rand}} に、 {{ic|EDIV}} は {{ic|EDiv}} に対応するものです。また、{{ic|ERand}} の値は反転して10進数に変換する必要があります。例えば: |
− | * |
+ | * {{ic|48 4D AF CD 0F 92 22 88 0A 52 9A F4 76 DA 8B 94}} の {{ic|LongTermKey.Key}} は {{ic|484DAFCD0F9222880A529AF476DA8B94}} のようになります。 |
* {{ic|63 02 84 B8 5D 40 44 DF}} の {{ic|ERand}} は {{ic|16088054540146049635}} の {{ic|Rand}} を生成します。 |
* {{ic|63 02 84 B8 5D 40 44 DF}} の {{ic|ERand}} は {{ic|16088054540146049635}} の {{ic|Rand}} を生成します。 |
||
− | * {{ic| |
+ | * {{ic|37520}} の {{ic|EDiv}} は {{ic|37520}} の {{ic|EDIV}} のようになります。 |
{{Note|{{ic|ERand}} の変換はこちらの [[Python]] のコードで行うことができます。 |
{{Note|{{ic|ERand}} の変換はこちらの [[Python]] のコードで行うことができます。 |
||
230行目: | 233行目: | ||
* Sierra 以前の OS の場合、以下を実行します。 |
* Sierra 以前の OS の場合、以下を実行します。 |
||
− | {{bc|# defaults read /private/var/root/Library/Preferences/blued.plist LinkKeys > ~/bt_keys.txt}} |
+ | {{bc|# defaults read /private/var/root/Library/Preferences/blued.plist LinkKeys > ~/bt_keys.txt}} |
* High Sierra 以降をお使いの場合は、以下を実行してください。 |
* High Sierra 以降をお使いの場合は、以下を実行してください。 |
||
− | {{bc|# defaults read /private/var/root/Library/Preferences/com.apple.bluetoothd.plist LinkKeys > ~/bt_keys.txt}} |
+ | {{bc|# defaults read /private/var/root/Library/Preferences/com.apple.bluetoothd.plist LinkKeys > ~/bt_keys.txt}} |
− | 古いバージョンの macOS(High Sierra |
+ | 古いバージョンの macOS(High Sierra およびそれより古いバージョン)の場合、キーを反転する必要があります。例えば {{ic|98 54 2f aa bb cc dd ee ff gg hh ii jj kk ll mm}} は {{ic|MM LL KK JJ GG FF EE DD CC BB 2F 54 98}} となります。 |
− | {{ic|bt_keys.txt}} ファイルを Arch Linux から読み込み可能なドライブにコピーします。Arch Linux を |
+ | {{ic|bt_keys.txt}} ファイルを Arch Linux から読み込み可能なドライブにコピーします。Arch Linux を起動してください。 |
==== 終わりに ==== |
==== 終わりに ==== |
||
− | キーを手に入れたら、ユーザーを root に変更し、 |
+ | キーを手に入れたら、ユーザーを root に変更し、以下を実行してください: |
− | {{bc|# cd /var/lib/bluetooth/''BT-Adapter-MAC-address''}} |
+ | {{bc|# cd /var/lib/bluetooth/''BT-Adapter-MAC-address''}} |
− | ここには、ペアリングしたBluetooth機器ごとのフォルダがあります。Arch とデュアルブートでペアリングしたい各デバイスについて、以下を実行します |
+ | ここには、ペアリングした Bluetooth 機器ごとのフォルダがあります。Arch とデュアルブートでペアリングしたい各デバイスについて、以下を実行します: |
− | {{bc|# cd ''device-MAC-address''}} |
+ | {{bc|# cd ''device-MAC-address''}} |
{{Note|この時点で、ペアリング時に MAC アドレスの値を増加させるデバイスを使用している場合、MAC アドレスのディレクトリを、値を増加させたパスへ移動させる必要があります。Windows から MAC アドレスをコピーするか、あるいは、各オクテットが2桁の[[Wikipedia:Hexadecimal|16進数]]であることに注意しながら自分で値を増加させてください。}} |
{{Note|この時点で、ペアリング時に MAC アドレスの値を増加させるデバイスを使用している場合、MAC アドレスのディレクトリを、値を増加させたパスへ移動させる必要があります。Windows から MAC アドレスをコピーするか、あるいは、各オクテットが2桁の[[Wikipedia:Hexadecimal|16進数]]であることに注意しながら自分で値を増加させてください。}} |
||
263行目: | 266行目: | ||
Bluetooth 5.1 キーを持っている場合、代わりにキーファイルを MAC アドレスのディレクトリにコピーする必要があります。 |
Bluetooth 5.1 キーを持っている場合、代わりにキーファイルを MAC アドレスのディレクトリにコピーする必要があります。 |
||
− | 次に、{{ic|bluetooth.service}} と {{ic|pulseaudio}} を [[再起動]] してください。({{ic|pulseaudio -k && pulseaudio --start を使 |
+ | 次に、{{ic|bluetooth.service}} と {{ic|pulseaudio}} を [[再起動]] してください。({{ic|pulseaudio -k && pulseaudio --start}} を使ってください。) |
これで、デバイスに接続できるはずです。 |
これで、デバイスに接続できるはずです。 |
||
270行目: | 273行目: | ||
== 設定 == |
== 設定 == |
||
+ | |||
− | === 起動後に自動で有効にする === |
||
+ | === 起動後/再開後に自動で有効にする === |
||
− | デフォルトでは、再起動後に Bluetooth アダプタが有効になりません。{{ic|1=AutoEnable=true}} を {{ic|/etc/bluetooth/main.conf}} の {{ic|[Policy]}} セクションの下部に追加するだけです: |
||
+ | |||
+ | {{Out of date|{{Pkg|bluez}} 5.65 以降、{{ic|AutoEnable}} はデフォルトで {{ic|true}} となっています。[https://github.com/bluez/bluez/commit/180cf09933b2d8eb03972c8638063429fe5fece5]}} |
||
+ | |||
+ | デフォルトでは、再起動後やサスペンドからの復帰後に Bluetooth アダプタがオンになりません。{{ic|1=AutoEnable=true}} を {{ic|/etc/bluetooth/main.conf}} の {{ic|[Policy]}} セクションの下部に追加するだけです: |
||
{{hc|1=/etc/bluetooth/main.conf|2= |
{{hc|1=/etc/bluetooth/main.conf|2= |
||
280行目: | 287行目: | ||
=== 起動時に発見可能にする === |
=== 起動時に発見可能にする === |
||
− | デバイスが常に見えていて、直接接続できる必要がある場合: |
+ | デバイスが常に見えていて、かつ直接接続できる必要がある場合: |
{{hc|1=/etc/bluetooth/main.conf|2= |
{{hc|1=/etc/bluetooth/main.conf|2= |
||
289行目: | 296行目: | ||
=== サスペンドからの復帰 === |
=== サスペンドからの復帰 === |
||
− | + | Bluetooth キーボードやマウスなどをサスペンドから起動できるようにする。まず、bios の設定を確認し、サスペンドからの復帰 が無効になっていないことを確認します。多くの場合、マザーボードからの Bluetooth は USB デバイスです。 |
|
− | bluetooth アダプターのベンダーコードとデバイス ID を確認 |
+ | bluetooth アダプターのベンダーコードとデバイス ID を確認してください: |
+ | |||
− | {{bc|$ lsusb {{!}} grep bluetooth -i |
||
+ | {{hc|$ lsusb {{!}} grep bluetooth -i| |
||
Bus 001 Device 002: ID 8087:0039 Intel Corp. AX200 Bluetooth |
Bus 001 Device 002: ID 8087:0039 Intel Corp. AX200 Bluetooth |
||
}} |
}} |
||
− | サスペンドからの復帰を有効にするために、ベンダコードとデバイス ID の新しい udev ルールを追加 |
+ | サスペンドからの復帰を有効にするために、ベンダコードとデバイス ID の新しい udev ルールを追加してください: |
+ | |||
− | {{hc|1=/etc/udev/rules.d/91-keyboardmousewakeup.rules|2= |
||
+ | {{hc|/etc/udev/rules.d/91-keyboard-mouse-wakeup.rules|2= |
||
SUBSYSTEM=="usb", ATTRS{idVendor}=="8087", ATTRS{idProduct}=="0039" RUN+="/bin/sh -c 'echo enabled > /sys$env{DEVPATH}/../power/wakeup;'" |
SUBSYSTEM=="usb", ATTRS{idVendor}=="8087", ATTRS{idProduct}=="0039" RUN+="/bin/sh -c 'echo enabled > /sys$env{DEVPATH}/../power/wakeup;'" |
||
}} |
}} |
||
310行目: | 319行目: | ||
}} |
}} |
||
− | そして、追加の udev ルールを作成してください。 |
+ | そして、上記のような追加の udev ルールを作成してください。 |
{{hc|/etc/udev/rules.d/92-keyboard-reconfiguration-wakeup.rules|2= |
{{hc|/etc/udev/rules.d/92-keyboard-reconfiguration-wakeup.rules|2= |
||
318行目: | 327行目: | ||
== オーディオ == |
== オーディオ == |
||
− | 通常は、オーディオサーバーと |
+ | 通常は、オーディオサーバーと Bluetooth を統合するために追加の手順を実行する必要があります。これについては、以下のセクションで説明します。 |
Bluetooth オーディオや Bluetooth ヘッドセットなどの情報については [[Bluetooth ヘッドセット]] のページを見てください。 |
Bluetooth オーディオや Bluetooth ヘッドセットなどの情報については [[Bluetooth ヘッドセット]] のページを見てください。 |
||
324行目: | 333行目: | ||
=== PulseAudio === |
=== PulseAudio === |
||
− | Bluetooth ヘッドフォンやスピーカーのようなオーディオ機器を使うには {{Pkg|pulseaudio-bluetooth}} パッケージのインストールが必要です。 |
+ | Bluetooth ヘッドフォンやスピーカーのようなオーディオ機器を使うには {{Pkg|pulseaudio-bluetooth}} パッケージのインストールが必要です。インストールを反映させるために、pulseaudio を再起動してください: {{ic|pulseaudio -k}}。デフォルトの Pulseaudio インストールでは、即座に Bluetooth デバイスからスピーカーにオーディオをストリーミングできるはずです。 |
− | |||
− | PulseAudio のデフォルトのインストールでは、 bluetooth デバイスからスピーカーにオーディオをストリーミングできるようになります。 |
||
− | システム全体の PulseAudio 設定がある場合は、デーモンを実行しているユーザー(通常は {{ic|pulse}}) が {{ic|lp}} グループに属しており、PulseAudio |
+ | システム全体の PulseAudio 設定がある場合は、デーモンを実行しているユーザー(通常は {{ic|pulse}}) が {{ic|lp}} グループに属しており、PulseAudio 設定に Bluetooth モジュールをロードしていることを確認します: |
{{hc|/etc/pulse/system.pa|2= |
{{hc|/etc/pulse/system.pa|2= |
||
345行目: | 352行目: | ||
=== ALSA === |
=== ALSA === |
||
− | {{Note|Bluez5 は [[ALSA]] の直接統合を中止し、 [[PulseAudio]] のみをサポートします。 PulseAudio を使用できない場合、または使用しない場合は、次の手順に従い |
+ | {{Note|Bluez5 は [[ALSA]] の直接統合を中止し、 [[PulseAudio]] のみをサポートします。 PulseAudio を使用できない場合、または使用しない場合は、次の手順に従ってください。}} |
まず、 Bluetooth オーディオデバイスが正しくペアリングされ、システムに接続されていることを確認します。 |
まず、 Bluetooth オーディオデバイスが正しくペアリングされ、システムに接続されていることを確認します。 |
||
− | 次に、 {{AUR|bluez-alsa-git}} をインストールし、 {{ic|bluealsa}} サービスを開始 |
+ | 次に、 {{AUR|bluez-alsa-git}} をインストールし、 {{ic|bluealsa}} サービスを開始(そして、有効に) し、ユーザーを {{ic|audio}} グループに追加します。 |
− | 次のコマンドを実行して、すべてが意図したとおりに動作しているかどうかを確認します |
+ | 次のコマンドを実行して、すべてが意図したとおりに動作しているかどうかを確認します({{ic|''XX:XX:XX:XX:XX:XX''}} と {{ic|''FILE.wav''}} の部分は置き換えてください): |
− | {{ic|''XX:XX:XX:XX:XX:XX''}} and {{ic|''FILE.wav''}} below): |
||
$ aplay -D bluealsa:SRV=org.bluealsa,DEV=''XX:XX:XX:XX:XX:XX'',PROFILE=a2dp ''FILE.wav'' |
$ aplay -D bluealsa:SRV=org.bluealsa,DEV=''XX:XX:XX:XX:XX:XX'',PROFILE=a2dp ''FILE.wav'' |
||
369行目: | 375行目: | ||
== Bluetooth シリアル == |
== Bluetooth シリアル == |
||
− | Bluetooth-to-Serial modules (HC-05、HC-06) で Bluetooth シリアル通信が機能するようにするには、次の手順に従います。 |
||
+ | Bluetooth-to-Serial modules (HC-05、HC-06) で Bluetooth シリアル通信が機能するようにするには、次の手順に従います: |
||
− | [[#ペアリング|上記]]で説明したように、 {{ic|bluetoothctl}} を使って Bluetooth デバイスをペアリングします。 |
||
+ | |||
+ | [[#ペアリング|上記]]で説明したように、 {{ic|bluetoothctl}} を使って Bluetooth デバイスを'''ペアリング'''します。 |
||
{{AUR|bluez-utils-compat}} をインストールします。新しいツールにはない機能があります。 |
{{AUR|bluez-utils-compat}} をインストールします。新しいツールにはない機能があります。 |
||
− | ペアになっているデバイスの MAC アドレスを tty 端末にバインドします |
+ | ペアになっているデバイスの MAC アドレスを tty 端末にバインドします: |
+ | |||
− | # rfcomm bind rfcomm0 <MAC address of bluetooth device> |
||
+ | # rfcomm bind rfcomm0 ''MAC_address_of_Bluetooth_device'' |
||
− | これで、シリアル通信用に {{ic|/dev/rfcomm0}} を開くことができます |
+ | これで、シリアル通信用に {{ic|/dev/rfcomm0}} を開くことができます: |
picocom /dev/rfcomm0 -b 115200 |
picocom /dev/rfcomm0 -b 115200 |
||
402行目: | 410行目: | ||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|- |
||
+ | ! 非推奨のツール |
||
− | ! Deprecated tool |
||
+ | ! あり得る代替 |
||
− | ! Most likely replacement |
||
|- |
|- |
||
| [https://manpages.debian.org/stretch/bluez/gatttool.1.en.html gatttool] || btgatt-client, [https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/gatt-api.txt D-Bus Gatt API] |
| [https://manpages.debian.org/stretch/bluez/gatttool.1.en.html gatttool] || btgatt-client, [https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/gatt-api.txt D-Bus Gatt API] |
||
409行目: | 417行目: | ||
| [https://manpages.debian.org/stretch/bluez/hciattach.1.en.html hciattach] || btattach |
| [https://manpages.debian.org/stretch/bluez/hciattach.1.en.html hciattach] || btattach |
||
|- |
|- |
||
− | | [https://manpages.debian.org/stretch/bluez/hciconfig.1.en.html hciconfig] || btmgmt ( |
+ | | [https://manpages.debian.org/stretch/bluez/hciconfig.1.en.html hciconfig] || btmgmt (そして bluetoothctl?) |
|- |
|- |
||
− | | [https://manpages.debian.org/stretch/bluez-hcidump/hcidump.1.en.html hcidump] || btmon ( |
+ | | [https://manpages.debian.org/stretch/bluez-hcidump/hcidump.1.en.html hcidump] || btmon (そして btsnoop) |
|- |
|- |
||
− | | [https://manpages.debian.org/stretch/bluez/hcitool.1.en.html hcitool] || |
+ | | [https://manpages.debian.org/stretch/bluez/hcitool.1.en.html hcitool] || なし、[https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/device-api.txt D-Bus Device API] 利用可能 |
|- |
|- |
||
| [https://manpages.debian.org/stretch/bluez/rfcomm.1.en.html rfcomm] |
| [https://manpages.debian.org/stretch/bluez/rfcomm.1.en.html rfcomm] |
||
− | | rowspan="2" | |
+ | | rowspan="2" | なし、[https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/profile-api.txt D-Bus Profile1 API] の実装? |
|- |
|- |
||
| [https://manpages.debian.org/stretch/bluez/ciptool.1.en.html ciptool] |
| [https://manpages.debian.org/stretch/bluez/ciptool.1.en.html ciptool] |
||
|- |
|- |
||
|[https://manpages.debian.org/stretch/bluez/sdptool.1.en.html sdptool] |
|[https://manpages.debian.org/stretch/bluez/sdptool.1.en.html sdptool] |
||
− | | |
+ | | なし、機能が、異なる D-Bus オブジェクトに散らばっている模様: [https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/profile-api.txt Profile]、[https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/advertising-api.txt Advertising]、そして [https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/device-api.txt device] と [https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/adapter-api.txt adapter] の UUID の配列。 |
|} |
|} |
||
564行目: | 572行目: | ||
=== hcitool scan: Device not found === |
=== hcitool scan: Device not found === |
||
− | * Dell ラップトップ (例: Studio 15) では Bluetooth モードを HID から HCI に切り替える必要があります。{{Pkg|bluez-hid2hci}} パッケージをインストールすれば、[[udev]] が自動的に切り替えを行うはずです。また、次のコマンドを実行して手動で HCI に切り替えることもできます: |
+ | * 一部の Dell ラップトップ (例: Studio 15) では Bluetooth モードを HID から HCI に切り替える必要があります。{{Pkg|bluez-hid2hci}} パッケージをインストールすれば、[[udev]] が自動的に切り替えを行うはずです。また、次のコマンドを実行して手動で HCI に切り替えることもできます: |
+ | |||
# /usr/lib/udev/hid2hci |
# /usr/lib/udev/hid2hci |
||
− | * デバイスが表示されない場合、マシンに Windows オペレーティングシステムがあるときは Windows から bluetooth アダプターを有効にして見て下さい。 |
+ | * デバイスが表示されない場合で、かつマシンに Windows オペレーティングシステムがあるときは Windows から bluetooth アダプターを有効にして見て下さい。 |
* 場合によっては次のコマンドで有効にできます: |
* 場合によっては次のコマンドで有効にできます: |
||
+ | |||
# bluetoothctl power on |
# bluetoothctl power on |
||
637行目: | 647行目: | ||
=== Foxconn / Hon Hai / Lite-On の Broadcom デバイス === |
=== Foxconn / Hon Hai / Lite-On の Broadcom デバイス === |
||
− | 起動時にファームウェアを書き込む必要があ |
+ | 一部のデバイスでは、起動時にファームウェアを書き込む必要があります。ファームウェアは提供されていませんが、[https://github.com/jessesung/hex2hcd hex2hcd] ({{Pkg|bluez-utils}} でインストールされます) を使って Microsoft Windows の ''.hex'' ファイルから ''.hcd'' に変換することができます。 |
正しい ''.hex'' ファイルを取得するために、''lsusb'' でデバイスの vendor:product コードを検索してください。例: |
正しい ''.hex'' ファイルを取得するために、''lsusb'' でデバイスの vendor:product コードを検索してください。例: |
||
657行目: | 667行目: | ||
# rmmod btusb |
# rmmod btusb |
||
# modprobe btusb |
# modprobe btusb |
||
− | |||
− | 場合によって (おそらく古いカーネルを使っている場合)、''brcm_patchram_plus'' ユーティリティを使って ''.hcd'' ファイルを書き込む必要があります (ユーティリティは {{AUR|brcm_patchram_plus-git}}{{Broken package link|{{aur-mirror|brcm_patchram_plus-git}}}} に含まれています)。まず、''dmesg'' でデバイスが ''btusb'' によって bluetooth デバイスとして認識されていることを確認してください。そして、以下のコマンドを実行 (''04ca 2006'' はあなたのデバイスの vendor product コードのペアに置き換えて下さい): |
||
− | |||
− | # echo '04ca 2006' > /sys/bus/usb/drivers/btusb/new_id |
||
− | |||
− | デバイスを立ち上げます: |
||
− | |||
− | # hciconfig hci0 up |
||
− | |||
− | ファームウェアを書き込み: |
||
− | |||
− | # brcm_patchram_plus_usb --patchram fw-04ca_2006.hcd hci0 |
||
これでデバイスが使えるようになるはずです。以上の設定を永続化させる方法は [https://bbs.archlinux.org/viewtopic.php?id=162688 BBS#162688] を参照。 |
これでデバイスが使えるようになるはずです。以上の設定を永続化させる方法は [https://bbs.archlinux.org/viewtopic.php?id=162688 BBS#162688] を参照。 |
||
762行目: | 760行目: | ||
この場合、ベンダー ID は 8087 で、製品 ID は 0025 です。 |
この場合、ベンダー ID は 8087 で、製品 ID は 0025 です。 |
||
次に、 {{pkg|usb_modeswitch}} を使用してアダプタをリセットします。 |
次に、 {{pkg|usb_modeswitch}} を使用してアダプタをリセットします。 |
||
+ | |||
− | # usb_modeswitch -R -v <ベンダーID> -p <プロダクトID> |
||
+ | # usb_modeswitch -R -v ''vendor_ID'' -p ''product_ID'' |
||
=== カーネル 5.9 以降のすべての BLE デバイスの問題 === |
=== カーネル 5.9 以降のすべての BLE デバイスの問題 === |
||
− | v5.9 以降のカーネルでは BLE 接続でリンク層プライバシーを使用しようと |
+ | v5.9 以降のカーネルでは、カーネルの Bluetooth スタックは BLE 接続でリンク層プライバシーを使用しようとします。ペアリング後にデバイスが動作しても、リブートまたはサスペンド後にペアリングが解除される場合、おそらくこれが原因です。 |
− | この問題を回避 |
+ | この問題を回避[https://lkml.kernel.org/lkml/D577711C-4AF5-4E82-8A17-E766B64E15A9@holtmann.org/] するには、 {{ic|/var/lib/bluetooth/''アダプターMACアドレス''/''デバイスMACアドレス''/info}} を開いて次の行を削除し、{{ic|bluetooth.service}} を再起動します: |
{{bc|1= |
{{bc|1= |
||
775行目: | 774行目: | ||
}} |
}} |
||
− | Archフォーラムの関連する [https://bbs.archlinux.org/viewtopic.php?id=259954 discussion] を参照してください。 |
+ | Arch フォーラムの関連する [https://bbs.archlinux.org/viewtopic.php?id=259954 discussion] を参照してください。 |
=== Bluetooth が suspend-to-idle 中のデバイスを即座に立ち上げてしまう === |
=== Bluetooth が suspend-to-idle 中のデバイスを即座に立ち上げてしまう === |
||
849行目: | 848行目: | ||
* [https://averylarsen.com/2019/12/20/keeping-bluetooth-devices-paired-between-linux-and-windows/ Keeping Bluetooth devices paired between Linux and Windows] |
* [https://averylarsen.com/2019/12/20/keeping-bluetooth-devices-paired-between-linux-and-windows/ Keeping Bluetooth devices paired between Linux and Windows] |
||
* [https://nullroute.eu.org/~grawity/bluetooth-key-sharing.html Bluetooth link keys on dual-boot systems] |
* [https://nullroute.eu.org/~grawity/bluetooth-key-sharing.html Bluetooth link keys on dual-boot systems] |
||
+ | |||
+ | {{TranslationStatus|Bluetooth|2022-08-08|740405}} |
2022年8月8日 (月) 05:50時点における版
Bluetooth は携帯電話やコンピュータなどの電子デバイス用の近距離無線通信規格です。Linux においては、Bluetooth プロトコルスタックの実装として BlueZ が標準的に使われています。
目次
- 1 インストール
- 2 ペアリング
- 3 設定
- 4 オーディオ
- 5 Bluetooth シリアル
- 6 トラブルシューティング
- 6.1 デバッグ
- 6.2 非推奨の BlueZ tools
- 6.3 gnome-bluetooth
- 6.4 Bluetooth USB ドングル
- 6.5 Logitech Bluetooth USB ドングル
- 6.6 hcitool scan: Device not found
- 6.7 bluetoothctl: No default controller available
- 6.8 systemd: Condition check resulted in Bluetooth service being skipped
- 6.9 rfkill unblock: Do not unblock
- 6.10 コンピュータが表示されない
- 6.11 Foxconn / Hon Hai / Lite-On の Broadcom デバイス
- 6.12 Intel の複合 WiFi と Bluetooth カード
- 6.13 デバイスを接続した数秒後に切断してしまう
- 6.14 スキャンしてもデバイスが表示されない
- 6.15 シンボリックリンクのせいで、転送されたファイルを受信できない
- 6.16 ヘッドホンとマウスの干渉
- 6.17 Bluetoothマウスの動きの遅さ
- 6.18 サスペンド/リジューム後にアダプタが消える
- 6.19 カーネル 5.9 以降のすべての BLE デバイスの問題
- 6.20 Bluetooth が suspend-to-idle 中のデバイスを即座に立ち上げてしまう
- 6.21 tp-link UB400 と Xboxのコントローラが接続/切断を繰り返す
- 6.22 実験的な機能を有効化する
- 7 参照
インストール
- Bluetooth プロトコロスタックを提供する、bluez パッケージをインストールします。
bluetoothctl
ユーティリティを提供する、bluez-utils をインストールします。または bluez-utils-compatAUR をインストールして、非推奨の BlueZ tools を追加します。- 一般的な Bluetooth ドライバは、
btusb
カーネルモジュールです。このモジュールがロードされているかどうかを確認してください。もしロードされていなければ、モジュールをロードしてください。 bluetooth.service
を起動/有効化します。
フロントエンド
コンソール
- bluetoothctl — シェルからデバイスをペアリングすることは、最も単純で信頼性の高いオプションの一つです。
- bluetuith — ターミナルユーザインターフェイスによる Bluetooth マネージャを提供します。OBEX ファイル転送とマウスのサポート付きで、デバイス/アダプタを簡単に管理できます。
グラフィカル
以下のパッケージでは、Bluetooth をカスタマイズするためのグラフィカルインターフェイスが利用可能です。
- GNOME Bluetooth — GNOME の Bluetooth ツール。
- gnome-bluetooth-3.0 バックエンドを提供 (gnome-bluetooth はレガシーです)
- gnome-shell ステータスモニターアプレットを提供
- gnome-control-center は設定用のフロントエンド GUI を提供しており、アクティビティ概要で Bluetooth と入力するか、
gnome-control-center bluetooth
コマンドでアクセスすることができます。 - また、
bluetooth-sendto
コマンドを直接起動して、リモートデバイスにファイルを送信することも可能です。 - nautilus-bluetoothAUR は Nautilus の右クリックメニューに "Bluetoothで送信" エントリを追加します。
- ファイルを受信するには、Bluetooth 設定パネルを開きます。Bluetooth パネルが開いている間のみ受信できます。
- Thunar のファイルプロパティメニューの 送信先 メニューに Bluetooth エントリを追加するには、説明 ここ を参照してください。(設定が必要なコマンドは
bluetooth-sendto %F
です)
- Bluedevil — KDE の Bluetooth ツール。 Dolphin やシステムトレイに Bluetooth のアイコンが表示されていない場合は、システムトレイオプションで有効にするか、ウィジェットを追加してください。アイコンをクリックすることで、Bluedevil の設定や Bluetooth デバイスの検出が可能です。KDE システム設定からもインターフェースが利用できます。
- Blueberry — GNOME Bluetooth から Linux Mint でスピンオフした Blueberry は全てのデスクトップ環境で動作します。Obex Object Push によるファイル受信をサポートしていません。
- Blueman — フル機能の Bluetooth マネージャー
- ObexFTP — OBEX 対応のデバイスとの間でファイルを転送するツール。
ペアリング
このセクションでは、bluetoothctl CLI を使って bluez5 を直接設定する方法を説明しています。これは、代替のフロントエンドツール(例えば GNOME Bluetooth)を使用している場合は必要ないかもしれません。
正確な手順は、利用するデバイスとその入力機能によります。以下は bluetoothctl
を使ってデバイスをペアリングする一般的な説明です。
bluetoothctl
対話コマンドを実行してください。help
と入力することで利用できるコマンドのリストを表示できます。
- (任意)
select MAC Address
と入力してデフォルトのコントローラを選択してください。 power on
と入力してコントローラの電源を入れて下さい。デフォルトではオフになっており、起動するたびにオフになります、#起動後/再開後に自動で有効にする を見てください。devices
と入力して、ペアリングしたいデバイスの MAC アドレスを取得してください。- デバイスが表示されないときは
scan on
コマンドでデバイス検出モードにしてください。 agent on
でエージェントをオンにするか、特定のエージェントを選択してください:agent
の後にタブキーを2回押すと、利用可能なエージェントのリストが表示されるはずです。Bluetooth エージェントとは、Bluetooth の 'ペアリングコード' を管理するもののことです。エージェントは、'ペアリングコード'の受信に応答したり、'ペアリングコード'を送信したりできます。ほとんどの場合、default-agent
を使うのが適切なはずです。[1]pair MAC Address
と入力することでペアリングを実行します (タブ補完が使えます)。- PIN がないデバイスを使う場合は、手動でデバイスを信頼する必要があるかもしれません。
trust MAC Address
と入力してこれを行なって下さい。デバイスを信頼するにはtrust MAC_address
と入力してください。 connect MAC_address
を使って接続を確立してください。
セッションの例は以下のようになります:
$ bluetoothctl
[NEW] Controller 00:10:20:30:40:50 hostname [default] [bluetooth]# agent KeyboardOnly Agent registered [bluetooth]# default-agent Default agent request successful [bluetooth]# power on Changing power on succeeded [CHG] Controller 00:10:20:30:40:50 Powered: yes [bluetooth]# scan on Discovery started [CHG] Controller 00:10:20:30:40:50 Discovering: yes [NEW] Device 00:12:34:56:78:90 device name [CHG] Device 00:12:34:56:78:90 LegacyPairing: yes [bluetooth]# pair 00:12:34:56:78:90 Attempting to pair with 00:12:34:56:78:90 [CHG] Device 00:12:34:56:78:90 Connected: yes [CHG] Device 00:12:34:56:78:90 Connected: no [CHG] Device 00:12:34:56:78:90 Connected: yes Request PIN code [agent] Enter PIN code: 1234 [CHG] Device 00:12:34:56:78:90 Paired: yes Pairing successful [CHG] Device 00:12:34:56:78:90 Connected: no [bluetooth]# connect 00:12:34:56:78:90 Attempting to connect to 00:12:34:56:78:90 [CHG] Device 00:12:34:56:78:90 Connected: yes Connection successful
デュアルブートペアリング
デュアルブート環境でデバイスをペアリングするには、Linux インストール時にペアリング・キーを手動で変更し、両方のシステムで一致するようにする必要があります。
設定方法
これを行うには、まず Arch Linux 上でデバイスのペアリングを行います。その後、もう一方の OS を再起動し、デバイスをペアリングします。ここでペアリング・キーを取り出す必要がありますが、まず Bluetooth デバイスの電源を切り、接続を試みないようにします。
Windows の場合
Windows での展開
リンクキーを含むレジストリキーは、SYSTEM アカウント でしかアクセスできないため、ログインすることができません。そのため、regedit.exe
を SYSTEM
として実行するには、Windows Sysinternals 公式サイトにある Microsoft の PsExec ツールが必要になります。
PsTools をダウンロードし、PsExe64.exe
を解凍します。
コマンドシェル の管理者インスタンスで、解凍した EXE の場所からレジストリエディタを起動してください:
.\PsExec64.exe -s -i regedit.exe
レジストリエディタで、以下のレジストリキーに移動します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys
このキーの中に各 Bluetooth アダプターの MAC アドレス別のキーがあります。複数のキーがあり、どれを使えばいいかわからない場合は、このガイドに従って、目的の Bluetooth アダプタの MAC アドレスを検索してください。
目的のデバイス・アダプタ・キーの中に、同じように MAC アドレス別に、ペアリングされた各デバイスのバイナリ値があります。
インストール間で共有したい各ペアデバイスについて、キー全体を右クリックし、.reg ファイルとしてエクスポートしてください。
LTK
, ERand
, EDIV
の値が存在する場合、これは Bluetooth 5.1 デバイスであり、これらのキーも保存する必要があります。これらを正しい形式に変換する方法は #Bluetooth 5.1キーの準備 を見てください。
最後に、キーを Linux 環境にインポートするために #終わりに へ進んでください。
Linux での展開
Arch をリブートしてください。chntpw をインストールして、Windows システムドライブをマウントします。
$ cd /path/to/windows/system/Windows/System32/config $ chntpw -e SYSTEM
chntpw
環境の中で以下を実行します。
> cd CurrentControlSet\Services\BTHPORT\Parameters\Keys
もしくは
> cd ControlSet00X\Services\BTHPORT\Parameters\Keys
次に、Bluetooth アダプタの MAC アドレスを取得し、そのフォルダを入力します。
> ls > cd your-device's-mac-address
ペアリングしているデバイスにも同じことをします:
> ls
Node has 0 subkeys and 1 values size type value name [value if type DWORD] 16 REG_BINARY <123456789876>
ここで、hex
を通して、デバイスのキーを取得します。
> hex 123456789876
:00000 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX (some other chars)
”XX" はペアリング・キーです。どのキーがどの MAC アドレスにマッピングされているか、メモしておいてください。
BT5.1 マウス の場合、次のような出力があります。
Node has 0 subkeys and 8 values size type value name [value if type DWORD] 16 3 REG_BINARY <LTK> 4 4 REG_DWORD <KeyLength> 16 [0x10] 8 b REG_QWORD <ERand> 4 4 REG_DWORD <EDIV> 37520 [0x9290] 16 3 REG_BINARY <IRK> 8 b REG_QWORD <Address> 4 4 REG_DWORD <AddressType> 1 [0x1] 4 4 REG_DWORD <AuthReq> 45 [0x2d]
これらの値のうち、LTK
、ERand
、EDIV
は必ず保存する必要があります。これらを正しい形式に変換する方法は #Bluetooth 5.1キーの準備 を見てください。
> hex LTK
:00000 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX (いくつかの他の文字)
最後に、キーを Linux 環境にインポートするために #終わりに へ進んでください。
Bluetooth 5.1キーの準備
もし、目的のデバイスのレジストリに LTK
, ERand
, EDIV
の値があった場合、それらを Linux で使用するために変換する必要があります。LTK
は LongTermKey.Key
に、 ERand
は Rand
に、 EDIV
は EDiv
に対応するものです。また、ERand
の値は反転して10進数に変換する必要があります。例えば:
48 4D AF CD 0F 92 22 88 0A 52 9A F4 76 DA 8B 94
のLongTermKey.Key
は484DAFCD0F9222880A529AF476DA8B94
のようになります。63 02 84 B8 5D 40 44 DF
のERand
は16088054540146049635
のRand
を生成します。37520
のEDiv
は37520
のEDIV
のようになります。
macOS の場合
macOS を起動し、ターミナルを開きます。
- Sierra 以前の OS の場合、以下を実行します。
# defaults read /private/var/root/Library/Preferences/blued.plist LinkKeys > ~/bt_keys.txt
- High Sierra 以降をお使いの場合は、以下を実行してください。
# defaults read /private/var/root/Library/Preferences/com.apple.bluetoothd.plist LinkKeys > ~/bt_keys.txt
古いバージョンの macOS(High Sierra およびそれより古いバージョン)の場合、キーを反転する必要があります。例えば 98 54 2f aa bb cc dd ee ff gg hh ii jj kk ll mm
は MM LL KK JJ GG FF EE DD CC BB 2F 54 98
となります。
bt_keys.txt
ファイルを Arch Linux から読み込み可能なドライブにコピーします。Arch Linux を起動してください。
終わりに
キーを手に入れたら、ユーザーを root に変更し、以下を実行してください:
# cd /var/lib/bluetooth/BT-Adapter-MAC-address
ここには、ペアリングした Bluetooth 機器ごとのフォルダがあります。Arch とデュアルブートでペアリングしたい各デバイスについて、以下を実行します:
# cd device-MAC-address
ペアリングキーを持っている場合(つまり、これは Bluetooth 5.1 デバイスでない)、info
ファイルを編集し、[LinkKey]
以下のキーを変更します。例えば:
info
[LinkKey] Key=XXXXXXXXXXXXXXX
Bluetooth 5.1 キーを持っている場合、代わりにキーファイルを MAC アドレスのディレクトリにコピーする必要があります。
次に、bluetooth.service
と pulseaudio
を 再起動 してください。(pulseaudio -k && pulseaudio --start
を使ってください。)
これで、デバイスに接続できるはずです。
設定
起動後/再開後に自動で有効にする
デフォルトでは、再起動後やサスペンドからの復帰後に Bluetooth アダプタがオンになりません。AutoEnable=true
を /etc/bluetooth/main.conf
の [Policy]
セクションの下部に追加するだけです:
/etc/bluetooth/main.conf
[Policy] AutoEnable=true
起動時に発見可能にする
デバイスが常に見えていて、かつ直接接続できる必要がある場合:
/etc/bluetooth/main.conf
[General] DiscoverableTimeout = 0
サスペンドからの復帰
Bluetooth キーボードやマウスなどをサスペンドから起動できるようにする。まず、bios の設定を確認し、サスペンドからの復帰 が無効になっていないことを確認します。多くの場合、マザーボードからの Bluetooth は USB デバイスです。
bluetooth アダプターのベンダーコードとデバイス ID を確認してください:
$ lsusb | grep bluetooth -i
Bus 001 Device 002: ID 8087:0039 Intel Corp. AX200 Bluetooth
サスペンドからの復帰を有効にするために、ベンダコードとデバイス ID の新しい udev ルールを追加してください:
/etc/udev/rules.d/91-keyboard-mouse-wakeup.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="8087", ATTRS{idProduct}=="0039" RUN+="/bin/sh -c 'echo enabled > /sys$env{DEVPATH}/../power/wakeup;'"
復帰後に Bluetooth キーボードを自動的に再設定して、例えば異なるキーマップやキーのリピート速度をもたせたりする(詳細は Xorg でのキーボード設定#typematic delay と rate の調整 と xmodmap)には、実行可能なスクリプトを作成してください。
configure_keyboard.sh
#!/bin/sh export DISPLAY=:0 xset r rate 220 30 xmodmap /your/path/to/.Xmodmap
そして、上記のような追加の udev ルールを作成してください。
/etc/udev/rules.d/92-keyboard-reconfiguration-wakeup.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="8087", ATTRS{idProduct}=="0039" RUN+="/your/path/to/configure_keyboard.sh"
オーディオ
通常は、オーディオサーバーと Bluetooth を統合するために追加の手順を実行する必要があります。これについては、以下のセクションで説明します。
Bluetooth オーディオや Bluetooth ヘッドセットなどの情報については Bluetooth ヘッドセット のページを見てください。
PulseAudio
Bluetooth ヘッドフォンやスピーカーのようなオーディオ機器を使うには pulseaudio-bluetooth パッケージのインストールが必要です。インストールを反映させるために、pulseaudio を再起動してください: pulseaudio -k
。デフォルトの Pulseaudio インストールでは、即座に Bluetooth デバイスからスピーカーにオーディオをストリーミングできるはずです。
システム全体の PulseAudio 設定がある場合は、デーモンを実行しているユーザー(通常は pulse
) が lp
グループに属しており、PulseAudio 設定に Bluetooth モジュールをロードしていることを確認します:
/etc/pulse/system.pa
... load-module module-bluetooth-policy load-module module-bluetooth-discover ...
これは任意ですが、Bluetooth デバイスの接続時にすべてのオーディオをそのデバイスに自動で切り替えたい場合、load-module module-switch-on-connect
を追加してください。
PipeWire
v0.3.19 以降の PipeWire はデフォルトで Bluetooth をサポートしています。
ALSA
まず、 Bluetooth オーディオデバイスが正しくペアリングされ、システムに接続されていることを確認します。
次に、 bluez-alsa-gitAUR をインストールし、 bluealsa
サービスを開始(そして、有効に) し、ユーザーを audio
グループに追加します。
次のコマンドを実行して、すべてが意図したとおりに動作しているかどうかを確認します(XX:XX:XX:XX:XX:XX
と FILE.wav
の部分は置き換えてください):
$ aplay -D bluealsa:SRV=org.bluealsa,DEV=XX:XX:XX:XX:XX:XX,PROFILE=a2dp FILE.wav
最後に、 ~/.asoundrc
に次の行を追加します。
~/.asoundrc
defaults.bluealsa { service "org.bluealsa" device "XX:XX:XX:XX:XX:XX" profile "a2dp" }
これで、 bluealsa
デバイスを使って Bluetooth オーディオデバイスに接続できるようになります。ボリューム管理は alsamixer
とオプション -D bluealsa
を使って通常行われます。
Bluetooth シリアル
Bluetooth-to-Serial modules (HC-05、HC-06) で Bluetooth シリアル通信が機能するようにするには、次の手順に従います:
上記で説明したように、 bluetoothctl
を使って Bluetooth デバイスをペアリングします。
bluez-utils-compatAUR をインストールします。新しいツールにはない機能があります。
ペアになっているデバイスの MAC アドレスを tty 端末にバインドします:
# rfcomm bind rfcomm0 MAC_address_of_Bluetooth_device
これで、シリアル通信用に /dev/rfcomm0
を開くことができます:
picocom /dev/rfcomm0 -b 115200
トラブルシューティング
デバッグ
デバッグするには、最初に bluetooth.service
を停止します。
そして -d
パラメーターを付けて開始します。
# /usr/lib/bluetooth/bluetoothd -n -d
別のオプションとして、 btmon
ツールが有ります。
非推奨の BlueZ tools
8つの BlueZ ツールは非推奨となり、bluez-utils から削除されましたが、それらのすべてが新しいツールに取って代わられたわけではありません。bluez-utils-compatAUR パッケージは非推奨のツールを含む代替バージョンの bluez-utils を提供します。
非推奨のツール | あり得る代替 |
---|---|
gatttool | btgatt-client, D-Bus Gatt API |
hciattach | btattach |
hciconfig | btmgmt (そして bluetoothctl?) |
hcidump | btmon (そして btsnoop) |
hcitool | なし、D-Bus Device API 利用可能 |
rfcomm | なし、D-Bus Profile1 API の実装? |
ciptool | |
sdptool | なし、機能が、異なる D-Bus オブジェクトに散らばっている模様: Profile、Advertising、そして device と adapter の UUID の配列。 |
gnome-bluetooth
bluetooth-properties でファイルの受信を有効にしようとしたときに以下のメッセージが表示される場合:
Bluetooth OBEX start failed: Invalid path Bluetooth FTP start failed: Invalid path
XDG ユーザーディレクトリ が存在することを確認してください。
Bluetooth USB ドングル
USB ドングルを使う場合は、Bluetooth ドングルが認識されているか確認してください。USB ドングルを挿入する時に journalctl -f
を root として実行する(もしくは /var/log/messages.log
を調査する)ことで、そのことを確認できます。以下のような見た目であるはずです(hci を見てください)。
Feb 20 15:00:24 hostname kernel: [ 2661.349823] usb 4-1: new full-speed USB device number 3 using uhci_hcd Feb 20 15:00:24 hostname bluetoothd[4568]: HCI dev 0 registered Feb 20 15:00:24 hostname bluetoothd[4568]: Listening for HCI events on hci0 Feb 20 15:00:25 hostname bluetoothd[4568]: HCI dev 0 up Feb 20 15:00:25 hostname bluetoothd[4568]: Adapter /org/bluez/4568/hci0 has been enabled
最初の2行しか表示されていなかった場合、デバイスは見つかっていますが、そのデバイスを立ち上げる必要があります。 例:
# btmgmt
[mgmt]# info
Index list with 1 item hci0: Primary controller addr 00:1A:7D:DA:71:10 version 6 manufacturer 10 class 0x000000 supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr current settings: connectable discoverable bondable ssp br/edr le secure-conn name Mozart short name
[mgmt]# select hci0
Selected index 0
[hci0]# power up
hci0 Set Powered complete, settings: powered connectable discoverable bondable ssp br/edr le secure-conn
[hci0]# info
hci0: Primary controller addr 00:1A:7D:DA:71:10 version 6 manufacturer 10 class 0x1c0104 supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr current settings: powered connectable discoverable bondable ssp br/edr le secure-conn
または
# bluetoothctl
[bluetooth]# show
Controller 00:1A:7D:DA:71:10 (public) Name: Mozart Alias: Mozart Class: 0x0000095c Powered: no Discoverable: yes Pairable: yes
[bluetooth]# power on
[CHG] Controller 00:1A:7D:DA:71:10 Class: 0x001c0104 Changing power on succeeded [CHG] Controller 00:1A:7D:DA:71:10 Powered: yes
[bluetooth]# show
Controller 00:1A:7D:DA:71:10 (public) Name: Mozart Alias: Mozart Class: 0x001c0104 Powered: yes Discoverable: yes Pairable: yes
公式の仕様表に従って、Bluetooth のバージョンが HCI のバージョンにマップされていることを確認できます。例えば、先の出力では、HCI version 6 が Bluetooth version 4.0 です。
デバイスが検出されているか確認するために bluez-utils
に含まれている hcitool
を使うことができます。次のコマンドで利用可能なデバイスとその識別子・MAC アドレスのリストを表示することが可能です:
$ btmgmt info
Index list with 1 item hci0: Primary controller addr 00:1A:7D:DA:71:10 version 6 manufacturer 10 class 0x1c0104 supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr current settings: powered connectable discoverable bondable ssp br/edr le secure-conn
デバイスに関するもっと詳細な情報は、非推奨の hciconfig
を使うことで取得できます。(bluez-utils-compatAUR)
$ hciconfig -a hci0
hci0: Type: USB BD Address: 00:1B:DC:0F:DB:40 ACL MTU: 310:10 SCO MTU: 64:8 UP RUNNING PSCAN ISCAN RX bytes:1226 acl:0 sco:0 events:27 errors:0 TX bytes:351 acl:0 sco:0 commands:26 errors:0 Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 Link policy: RSWITCH HOLD SNIFF PARK Link mode: SLAVE ACCEPT Name: 'BlueZ (0)' Class: 0x000100 Service Classes: Unspecified Device Class: Computer, Uncategorized HCI Ver: 2.0 (0x3) HCI Rev: 0xc5c LMP Ver: 2.0 (0x3) LMP Subver: 0xc5c Manufacturer: Cambridge Silicon Radio (10)
ドングルから短距離にいるときにオーディオデバイスがおかしくなる
他のデバイスと同一の USB ホストを共有している場合、オーディオデバイスとの通信に干渉 する可能性があります。オーディオデバイスがバスに接続されている唯一のデバイスであることを確認してください。例:
$ lsusb
Bus 002 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 004: ID 048d:1345 Integrated Technology Express, Inc. Multi Cardreader Bus 001 Device 003: ID 0424:a700 Standard Microsystems Corp. 2 Port Hub Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
CSR ドングル 0a12:0001
デバイス ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
にはリグレッションのバグがあり、現在のところカーネルのバージョン 3.9.11 以下でしか動作しません。新しいバージョン用のパッチがあります。詳細は、 Kernel Bug 60824 を参照してください。
Logitech Bluetooth USB ドングル
Logitech のドングルには Embedded と HCI という二つのモードで動作するものがあります (例: Logitech MX5000)。embedded モードではドングルは USB デバイスをエミュレートするので PC は普通の USB マウス・キーボードを使っていると認識します。
USB BT ミニレシーバの小さな赤いボタンを押すと他のモードが有効になります。BT ドングルの赤いボタンを押しながらコンピュータに接続してください。ボタンを押して3-5秒で、Bluetooth アイコンがシステムトレイに表示されます Discussion。
また、bluez-hid2hci パッケージをインストールすることもできます。Logitech のドングルを接続すると自動的に切り替えます。
hcitool scan: Device not found
- 一部の Dell ラップトップ (例: Studio 15) では Bluetooth モードを HID から HCI に切り替える必要があります。bluez-hid2hci パッケージをインストールすれば、udev が自動的に切り替えを行うはずです。また、次のコマンドを実行して手動で HCI に切り替えることもできます:
# /usr/lib/udev/hid2hci
- デバイスが表示されない場合で、かつマシンに Windows オペレーティングシステムがあるときは Windows から bluetooth アダプターを有効にして見て下さい。
- 場合によっては次のコマンドで有効にできます:
# bluetoothctl power on
bluetoothctl: No default controller available
一部のマザーボード Bluetooth コントローラにはバグがあります。バグがこの問題の原因であるか調べるには、journalctl | grep hci
を実行してください。このコマンドの出力に "command tx timeout" や "Reading Intel version command failed" のようなエントリが存在する場合、PC の電源を切り、電源ケーブルを物理的に外して数秒間放置してください。これにより、コントローラにファームウェアを再ロードさせます(通常の再起動では再ロードしません)。こちらのバグレポートを見てください。
デバイスが rfkill によってブロックされていないことを確認してください。
また、一部の Intel カード(8260 など)は Bluetooth サービスによって正しく認識されないかもしれません。bluez-utils の代わりに非推奨の bluez-utils-compatAUR を使うことでこの問題が解決したというケースが報告されています。
これは省電力機能が原因かもしれません。その場合、btusb.enable_autosuspend=n
カーネルパラメータにより解決できる可能性があります。Red Hat Bugzilla – Bug 1573562 も参照してください。
時々、btusb
をオプション無しでアンロード・ロードすればコントローラを元に戻せることがあります:
# modprobe -r btusb # modprobe btusb
systemd: Condition check resulted in Bluetooth service being skipped
bluetooth.service
は /sys/class/bluetooth
ディレクトリが存在することのみを要求します。このディレクトリは bluetooth
カーネルモジュールにより作成される必要があります。このカーネルモジュールは、systemd-udev
が動作している Bluetooth ハードウェアデバイスを発見した場合にのみ、systemd-udev
により自動的にロードされます。
/sys/class/bluetooth
が存在しない場合、lsmod
コマンドを使って、Bluetooth カーネルモジュールがロードされているかどうかを確認してください。Bluetooth デバイスがあるにも関わらずロードされていない場合、Bluetooth モジュールをロードし、bluetooth.service
を再起動することで、手動で起動できます。
また、bluetooth
モジュールをロードする際に、対応するカーネル Bluetooth ドライバもロードする必要があります。btusb
が最も可能性がありますが、btrtl,btintel,btbcm,bnep,btusb
などの可能性もあります。
bluetooth.service
のユニットステータスを確認して、このサービスが起動しているかどうかを確認してください。
Debian Bug report logs - #853207 も参照してください。
bluetooth.service
の起動に成功したが、まだ Bluetooth を使えないことがある場合(例: scan on
時に bluetoothctl
が org.Bluez.Error.NotReady
のようなメッセージを発する)、コンピュータを再起動し、次のことをダブルチェックしてください: /sys/class/bluetooth
ディレクトリが存在するか; lsmod
の出力に正しい Bluetooth モジュールが含まれているか; ジャーナルのログを確認するなど。systemd-udev
は、また手動の変更をせずとも Bluetooth ハードウェアを自動的に認識するはずです。
rfkill unblock: Do not unblock
デバイスがソフトブロックされていて ConnMan を動作させている場合、次を試してみて下さい:
$ connmanctl enable bluetooth
コンピュータが表示されない
携帯からコンピュータが表示されないときは、discoverable モードを有効にしてください:
# bluetoothctl discoverable on
discoverable モードがオンになっていることを確認してください:
# bluetoothctl show
Powered: yes Discoverable: yes Pairable: yes
まだコンピュータが表示されない場合、以下のように /etc/bluetooth/main.conf
内のデバイスクラスを変更してみて下さい:
# Default device class. Only the major and minor device class bits are # considered. #Class = 0x000100 # Computer Type (from default config) Class = 0x100100 # (Object-Transfer Service & Computer Type)
あるユーザは、携帯からコンピュータを見られるようにするためにはこうするしか無いと報告しています。LG TV(そして、一部の他の機器)はオーディオデバイスから発見可能です。なので、000414
(soundbar クラス)を使用することでそのようなデバイスを発見できるようにできます。
Bluetooth デバイス/サービスのクラスを生成するには https://bluetooth-pentest.narod.ru/software/bluetooth_class_of_device-service_generator.html を見てください。
Foxconn / Hon Hai / Lite-On の Broadcom デバイス
一部のデバイスでは、起動時にファームウェアを書き込む必要があります。ファームウェアは提供されていませんが、hex2hcd (bluez-utils でインストールされます) を使って Microsoft Windows の .hex ファイルから .hcd に変換することができます。
正しい .hex ファイルを取得するために、lsusb でデバイスの vendor:product コードを検索してください。例:
... Bus 002 Device 004: ID 04ca:2006 Lite-On Technology Corp. Broadcom BCM43142A0 Bluetooth Device ...
または:
Bus 004 Device 004: Id 0489:e031 Foxconn / Hon Hai
もしくは、Windows (仮想マシンでもかまいません) を起動して Device Manager ユーティリティからファームウェアの名前を取得してください。デバイスのモデルを知りたいのに lsusb で表示されない場合、lsusb -v の iProduct
でわかることがあります。
.hex ファイルはダウンロードした Windows ドライバーから抽出することができます。Windows を実行する必要はありません。適切なドライバーをダウンロードしてください。例えば Bluetooth Widcomm (Lifebook P771 のドライバーとして記載) には多数の Broadcom デバイスのドライバーが含まれています。Bluetooth Widcomm の場合、ドライバーは RAR アーカイブになっているので、unrar x で解凍できます。多数の .hex ファイルの中から必要なファイルを見つけるために、Win32/bcbtums-win7x86-brcm.inf
ファイルの中身を確認して [RAMUSBE031.CopyList]
を検索してください。E031
はあなたの使っているデバイスの product コード (大文字) に置き換えて下さい (lsusb で確認できる2番目の16進数)。その下に、必要な .hex ファイルの名前が書かれているはずです。
.hcd ファイルを手に入れたら、/lib/firmware/brcm/BCM.hcd
にコピーしてください - このファイル名は dmesg
によって提案されています。あなたのマシンでは異なっている可能性があるため dmesg の出力で確認してください。そして btusb モジュールをリロードします:
# rmmod btusb # modprobe btusb
これでデバイスが使えるようになるはずです。以上の設定を永続化させる方法は BBS#162688 を参照。
Intel の複合 WiFi と Bluetooth カード
ワイヤレス設定#Bluetooth の共存 を見てください。
デバイスを接続した数秒後に切断してしまう
デバイスを接続したすぐ後に切断が発生し、ジャーナルの出力に以下のようなメッセージが確認できる場合:
bluetoothd: Unable to get connect data for Headset Voice gateway: getpeername: Transport endpoint is not connected (107) bluetoothd: connect error: Connection refused (111)
おそらく別のオペレーティングシステムで同一の Bluetooth アダプタを使ってデバイスがペアリングされていることが原因です (例: デュアルブート)。一部のデバイスは同一の MAC アドレス (例: Bluetooth アダプタ) に対して複数のペアリングを関連付けた場合に対処できません。この問題を解決するには #デュアルブートペアリング の指示に従ってください。
スキャンしてもデバイスが表示されない
Bluetooth Low Energy を使用しているデバイスは bluetoothctl でスキャンしても表示されないことがあります (例: Logitech MX Master)。bluez-utils-compatAUR をインストールしてから以下を実行してみてください:
# bluetoothctl
[NEW] Controller (MAC) myhostname [default]
[bluetooth]# power on
[CHG] Controller (MAC) Class: 0x0c010c Changing power on succeeded [CHG] Controller (MAC) Powered: yes
[bluetooth]# scan on
Discovery started [CHG] Controller (MAC) Discovering: yes
他のターミナルで以下を実行:
# hcitool lescan
デバイスが表示されるまで待機してから hcitool を Ctrl+c
で閉じてください。bluetoothctl からデバイスが認識されたら通常通りにペアリングできます。
シンボリックリンクのせいで、転送されたファイルを受信できない
有効な Bluetooth 接続でファイルの受信に失敗する場合、問題はファイルの転送パス内のシンボリックリンクである場合があります。ジャーナルに以下のようなログが現れます:
Jun 18 11:18:13 ember obexd[3338969]: open(/home/me/.cache/obexd/MOC740): Operation not permitted (1)
エラーメッセージに表示されれたパス内にシンボリックリンクが含まれている場合、obexd はデフォルトでそれを拒否します。この挙動は、ドロップインファイルを obex.service
ユーザサービスに対して使うことにより初期化時に上書きできます。
~/.config/systemd/user/obex.service.d/10-symlink.conf
[Service] ExecStart= ExecStart=/usr/lib/bluetooth/obexd --symlinks
その後、ユーザの systemd マネージャの設定をリロードし、obex.service
ユーザユニットを再起動してください。
ヘッドホンとマウスの干渉
Bluetooth マウスとキーボードを同時に使用しているときに音声が途切れる場合は #23 https://bugs.launchpad.net/ubuntu/+source/bluez/+bug/424215 で参照されているように、次を試してくみてださい。
# hciconfig hci0 lm ACCEPT,MASTER # hciconfig hci0 lp HOLD,SNIFF,PARK
Bluetoothマウスの動きの遅さ
/var/lib/bluetooth/XX:XX:XX:XX:XX:XX/YY:YY:YY:YY:YY:YY/info
(XX:XX:XX:XX:XX:XX
Bluetooth アダプタの MAC アドレス YY:YY:YY:YY:YY:YY
- マウスの MAC アドレス) このファイルを編集し、次の行を追加します:
[ConnectionParameters] MinInterval=6 MaxInterval=9 Latency=44 Timeout=216
hcitool dev
コマンドを実行すると、ローカルアダプタの MAC アドレスを確認できます。また、 hcitool con
コマンドを実行すると、現在接続されているリモートデバイスの MAC アドレスを確認できます。
サスペンド/リジューム後にアダプタが消える
まず、アダプタのベンダーと製品 ID を見つけます。例:
lsusb -tv
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M ID 1d6b:0002 Linux Foundation 2.0 root hub ... |__ Port 3: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M ID 8087:0025 Intel Corp. |__ Port 3: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M ID 8087:0025 Intel Corp. ...
この場合、ベンダー ID は 8087 で、製品 ID は 0025 です。 次に、 usb_modeswitch を使用してアダプタをリセットします。
# usb_modeswitch -R -v vendor_ID -p product_ID
カーネル 5.9 以降のすべての BLE デバイスの問題
v5.9 以降のカーネルでは、カーネルの Bluetooth スタックは BLE 接続でリンク層プライバシーを使用しようとします。ペアリング後にデバイスが動作しても、リブートまたはサスペンド後にペアリングが解除される場合、おそらくこれが原因です。
この問題を回避[3] するには、 /var/lib/bluetooth/アダプターMACアドレス/デバイスMACアドレス/info
を開いて次の行を削除し、bluetooth.service
を再起動します:
[IdentityResolvingKey] Key=...
Arch フォーラムの関連する discussion を参照してください。
Bluetooth が suspend-to-idle 中のデバイスを即座に立ち上げてしまう
suspend-to-idle/S2idle/S0ix/Modern Standby する能力のあるシステムにおいては、Bluetooth コントローラがスリープ中も有効化されたままになります。通常、これにより、Bluetooth デバイスが接続されていると、システムがスリープに移行した直後にスリープが解除されてしまいます。
これを防ぐために、スリープに移行する前に Bluetooth を完全に無効化できます。bluez-utils をインストールし、以下のファイルを作成してください:
/etc/systemd/system/bluetooth-disable-before-sleep.service
[Unit] Description=Disable Bluetooth before going to sleep Before=sleep.target Before=suspend.target Before=hybrid-sleep.target Before=suspend-then-hibernate.target StopWhenUnneeded=yes [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/bluetoothctl power off ExecStop=/usr/bin/bluetoothctl power on [Install] WantedBy=sleep.target WantedBy=suspend.target WantedBy=hybrid-sleep.target WantedBy=suspend-then-hibernate.target
このサービスを有効化し、スリープに移行した時に Bluetooth デバイスが切断されることや、スリープからの復帰時に Bluetooth が再び接続されることを確認してください。
この回避策を使用すると、Bluetooth マウス/キーボードを使ってシステムをスリープから復帰させることができなくなります。
tp-link UB400 と Xboxのコントローラが接続/切断を繰り返す
/etc/bluetooth/main.conf
を編集して、以下の設定をします(アンコメント/値を変更します)
[General JustWorksRepairing = always FastConnectable = true Class = 0x000100
[GATT] ReconnectIntervals=1,1,2,3,5,8,13,21,34,55 AutoEnable=true
その後、bluetooth.service
を 再起動 します。
関連する xpadneo に関する議論 を見ることができますが、xpadneo のドライバは必要ありません。
実験的な機能を有効化する
Bluez スタックでは、バグがあるかもしれない新しい機能が Experimental オプションに含まれています。このオプションに含まれている機能は、実験的な機能の安定化が決まったり、不要と判断されたりすることにより、時間と共に変化します。これを有効化するには、設定ファイルの該当する行をアンコメントしてください:
/etc/bluetooth/main.conf
# Enables experimental features and interfaces. # Defaults to false. Experimental = true
あるいは、bluetooth.service
を編集して、--experimental
フラグを追加することもできます。以下のドロップインファイルのように:
/etc/systemd/system/bluetooth.service.d/override.conf
[Service] ExecStart= ExecStart=/usr/lib/bluetooth/bluetoothd --experimental