「Bluetooth」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
(文字列「http://www.intel.com/」を「https://www.intel.com/」に置換)
(4人の利用者による、間の14版が非表示)
7行目: 7行目:
 
[[it:Bluetooth]]
 
[[it:Bluetooth]]
 
[[ru:Bluetooth]]
 
[[ru:Bluetooth]]
[[zh-CN:Bluetooth]]
+
[[zh-hans:Bluetooth]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|Bluez4}}
 
{{Related|Bluez4}}
{{Related2|Bluetooth mouse|Bluetooth マウス}}
+
{{Related|Bluetooth マウス}}
{{Related2|Bluetooth mouse configuration|Bluetooth マウス設定}}
+
{{Related|Bluetooth ヘッドセット}}
  +
{{Related|Blueman}}
{{Related2|Bluetooth headset|Bluetooth ヘッドセット}}
 
{{Related2|Blueman|Blueman}}
 
 
{{Related articles end}}
 
{{Related articles end}}
 
[http://www.bluetooth.org/ Bluetooth] は携帯電話やコンピュータなどの電子デバイス用の近距離無線通信規格です。Linux においては、Bluetooth プロトコルスタックの実装として [http://www.bluez.org/ BlueZ] が標準的に使われています。
 
[http://www.bluetooth.org/ Bluetooth] は携帯電話やコンピュータなどの電子デバイス用の近距離無線通信規格です。Linux においては、Bluetooth プロトコルスタックの実装として [http://www.bluez.org/ BlueZ] が標準的に使われています。
19行目: 18行目:
 
== インストール ==
 
== インストール ==
   
[[official Repositories|公式リポジトリ]]から Bluetooth プロトコルスタックの {{Pkg|bluez}} と、{{ic|bluetoothctl}} ユーティリティが入っている {{Pkg|bluez-utils}} パッケージをインストールしてください。''systemd'' によって自動的に起動される {{ic|dbus}} デーモンが PIN ペアリングや設定の読み込みを行いますが、Bluetooth プロトコルを使うには {{ic|bluetooth}} デーモンが必要です。
+
[[公式リポジトリ]]から Bluetooth プロトコルスタックの {{Pkg|bluez}} と、{{ic|bluetoothctl}} ユーティリティが入っている {{Pkg|bluez-utils}} パッケージをインストールしてください。''systemd'' によって自動的に起動される {{ic|dbus}} デーモンが PIN ペアリングや設定の読み込みを行いますが、Bluetooth プロトコルを使うには {{ic|bluetooth}} デーモンが必要です。
   
 
共通の bluetooth ドライバーがロードされていなかったら、ロードしてください:
 
共通の bluetooth ドライバーがロードされていなかったら、ロードしてください:
 
# modprobe btusb
 
# modprobe btusb
   
bluetooth の [[systemd|systemd]] サービスを起動するには次のコマンドを使って下さい:
+
bluetooth の [[systemd]] サービスを起動するには次のコマンドを使って下さい:
 
# systemctl start bluetooth
 
# systemctl start bluetooth
   
起動時に bluetooth サービスを有効にするようにするには:
+
起動時に bluetooth サービスを有効にするには:
 
# systemctl enable bluetooth
 
# systemctl enable bluetooth
   
  +
{{Note|
{{Note|デフォルトでは bluetooth デーモンは lp グループのメンバーのユーザーだけに bnep0 デバイスを提供します。bluetooth で接続するときはユーザーをグループに追加しておいてください。必要なグループは {{ic|/etc/dbus-1/system.d/bluetooth.conf}} ファイルで変更することができます。}}
 
  +
* デフォルトでは bluetooth デーモンは {{ic|lp}} グループのメンバーのユーザーだけに bnep0 デバイスを提供します。bluetooth で接続するときはユーザーをグループに追加しておいてください。必要なグループは {{ic|/etc/dbus-1/system.d/bluetooth.conf}} ファイルで変更することができます。
 
{{Note|Bluetooth アダプターには Wi-Fi カードがバンドルされているものもあります (例: [http://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 デバイスを接続するようにしてください。
 
  +
* hcitool や hciconfig などのツールは上流では非推奨となっており、{{Pkg|bluez-utils}} にはもはや含まれていません。アップデートされないことが決まっているため、スクリプトの中で使用している場合は使わないように書き換えることを推奨します。それでも使いたい場合は {{AUR|bluez-utils-compat}} をインストールしてください。詳しい情報は {{Bug|53110}} や [https://www.spinics.net/lists/linux-bluetooth/msg69239.html Bluez メーリングリスト] を参照。}}
{{Note|Bluetooth カードによってはネットワークアダプタと衝突することがあります (例: Broadcom)。したがって、ネットワークサービスを起動する前に Bluetooth デバイスを接続するようにしてください。}}
 
   
 
== CLI による設定 ==
 
== CLI による設定 ==
41行目: 40行目:
   
 
{{ic|bluetoothctl}} 対話コマンドを実行してください。{{ic|help}} と入力することで利用できるコマンドのリストを表示できます。
 
{{ic|bluetoothctl}} 対話コマンドを実行してください。{{ic|help}} と入力することで利用できるコマンドのリストを表示できます。
  +
* {{ic|select ''MAC Address''}} と入力してデフォルトのコントローラを選択してください。
 
* {{ic|power on}} と入力してコントローラの電源を入れて下さい。デフォルトではオフになっています。
 
* {{ic|power on}} と入力してコントローラの電源を入れて下さい。デフォルトではオフになっています。
 
* {{ic|devices}} と入力してペアリングするデバイスの MAC アドレスを取得してください。
 
* {{ic|devices}} と入力してペアリングするデバイスの MAC アドレスを取得してください。
71行目: 71行目:
 
Pairing successful
 
Pairing successful
 
[CHG] Device 00:12:34:56:78:90 Connected: no
 
[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
  +
  +
==== 起動後に自動で有効にする ====
  +
デフォルトでは、再起動後に Bluetooth アダプタが有効になりません。{{ic|hciconfig hci0 up}} を使用する以前の方法は非推奨となりました。詳しくは [http://www.bluez.org/release-of-bluez-5-35/ リリースノート] を見てください。現在では、{{ic|1=AutoEnable=true}} を {{ic|/etc/bluetooth/main.conf}} の {{ic|[Policy]}} セクションの下部に追加するだけです:
  +
  +
{{hc|1=/etc/bluetooth/main.conf|2=
  +
[Policy]
  +
AutoEnable=true
  +
}}
   
  +
==== hciconfig を使う (非推奨) ====
 
再起動の後にもデバイスを有効にしておくには、udev ルールが必要です:
 
再起動の後にもデバイスを有効にしておくには、udev ルールが必要です:
 
{{hc|/etc/udev/rules.d/10-local.rules|2=
 
{{hc|/etc/udev/rules.d/10-local.rules|2=
 
# Set bluetooth power up
 
# Set bluetooth power up
ACTION=="add", KERNEL=="hci0", RUN+="/usr/bin/hciconfig hci0 up"}}
+
ACTION=="add", KERNEL=="hci0", RUN+="/usr/bin/hciconfig %k up"}}
  +
  +
{{Tip|{{ic|1=KERNEL=="hci0"}} を {{ic|1=KERNEL=="hci[0-9]*"}} に置き換えると全てのインターフェイスにマッチするようになります。}}
   
 
以下のような systemd サービスを使うことで、サスペンド・復帰の後にデバイスの電源を自動的にオンにすることが可能です:
 
以下のような systemd サービスを使うことで、サスペンド・復帰の後にデバイスの電源を自動的にオンにすることが可能です:
85行目: 100行目:
 
[Service]
 
[Service]
 
Type=oneshot
 
Type=oneshot
#We could also do a 200 char long call to bluez via dbus. Except this does not work since bluez does not react to dbus at this point of the resume sequence and I do not know how I get this service to run at a time it does. So we just ignore bluez and force %i up using hciconfig. Welcome to the 21st century.
 
#ExecStart=/usr/bin/dbus-send --system --type=method_call --dest=org.bluez /org/bluez/%I org.freedesktop.DBus.Properties.Set string:org.bluez.Adapter1 string:Powered variant:boolean:true
 
 
ExecStart=/usr/bin/hciconfig %i up
 
ExecStart=/usr/bin/hciconfig %i up
   
92行目: 105行目:
 
WantedBy=suspend.target
 
WantedBy=suspend.target
 
</nowiki>}}
 
</nowiki>}}
  +
  +
[[有効化]]するときは bluetooth のデバイス名を使います。例: {{ic|bluetooth-auto-power@hci0.service}}。
   
 
== グラフィカルフロントエンドによる設定 ==
 
== グラフィカルフロントエンドによる設定 ==
99行目: 114行目:
 
=== GNOME Bluetooth ===
 
=== GNOME Bluetooth ===
   
  +
[https://wiki.gnome.org/Projects/GnomeBluetooth GNOME Bluetooth] は [[GNOME]] の Bluetooth ツールです。{{Pkg|gnome-bluetooth}} パッケージにはバックエンドが含まれており、{{Pkg|gnome-shell}} には状態監視アプレットが、{{Pkg|gnome-control-center}} には設定フロントエンド GUI が入っています。アクティビティに Bluetooth と入力するか、{{ic|gnome-control-center bluetooth}} コマンドを実行することでアクセスできます。また、{{ic|bluetooth-sendto}} コマンドを実行することでリモートデバイスに直接ファイルを送信することが可能です。
{{Note|現在 GNOME Bluetooth にトレイアプレットはありません。GNOME Bluetooth アプレットのフォークを {{AUR|gnome-bluetooth-applet-git}} からインストールすることができますが、2014年4月現在、このパッケージはコンパイルできません。}}
 
   
  +
ファイルを受信するには、{{Pkg|gnome-user-share}} パッケージをインストールしてください。''Settings -> Sharing'' からペアリングしたデバイスから Bluetooth 経由で送られたファイルを受け取ることができます。
[https://wiki.gnome.org/Projects/GnomeBluetooth GNOME Bluetooth] は旧 ''bluez-gnome'' のフォークであり [[GNOME|GNOME]] デスクトップ環境との統合に焦点が置かれています。{{Pkg|gnome-bluetooth}} パッケージはバックエンドを、{{Pkg|gnome-shell}} はステータスモニタアプレットをそれぞれ提供し、{{Pkg|gnome-control-center}} はアクティビティから Bluetooth と入力するか {{ic|gnome-control-center bluetooth}} コマンドを実行することでアクセスできる設定のフロントエンド GUI を提供します。
 
   
  +
{{Tip|Bluetooth のエントリを Thunar のファイルプロパティメニューの ''Send To'' に追加するには、[https://docs.xfce.org/xfce/thunar/send-to こちら] の手順を見て下さい (設定する必要があるコマンドは {{ic|bluetooth-sendto %F}} です)。}}
また、以下のコマンドを直接実行することも可能です:
 
* {{ic|bluetooth-sendto}}: リモートデバイスにファイルを送信する
 
* {{ic|bluetooth-wizard}}: 新しいデバイスをペアリングする
 
   
  +
=== Bluedevil ===
Thunar のファイルプロパティのメニューにある ''SendTo'' メニューに Bluetooth エントリを追加する方法は、[http://docs.xfce.org/xfce/thunar/send-to ここ] を見て下さい (設定する必要があるコマンドは {{ic|bluetooth-sendto %F}} です)。
 
   
  +
[https://projects.kde.org/projects/kde/workspace/bluedevil Bluedevil] は [[KDE]] の Bluetooth ツールです。{{Pkg|bluedevil}} (KDE Plasma 5) パッケージで[[インストール]]することができます。
=== BlueDevil ===
 
   
  +
Dolphin やシステムトレイには Bluetooth アイコンが表示されないので、手動で追加してください。アイコンをクリックすることで Bluedevil を設定したり Bluetooth デバイスを検出できます。KDE システム設定からインターフェイスにアクセスすることも可能です。
[[KDE|KDE]] の Bluetooth ツールは [https://projects.kde.org/projects/extragear/base/bluedevil BlueDevil] です。公式リポジトリにある、{{Pkg|bluedevil}} パッケージからインストールできます。
 
   
  +
=== Blueberry ===
上で記述しているようにして、{{ic|bluetooth}} デーモンを実行させてください。Dolphin とシステムトレイの両方に Bluetooth アイコンが表示されるはずです。アイコンをクリックすることで BlueDevil を設定したり Bluetooth デバイスを検出したりすることができます。KDE のシステム設定からもインターフェイスを利用可能です。
 
  +
  +
''Blueberry'' は全てのデスクトップ環境で動作するフロントエンドです。{{Pkg|blueberry}} パッケージでインストールできます。設定ツール (''blueberry'') とシステムトレイアプレット (''blueberry-tray'') が含まれています。
   
 
=== Blueman ===
 
=== Blueman ===
   
[[Blueman|Blueman]] を参照。
+
[[Blueman]] を参照。
   
 
== Obex を使ってファイルの送受信を行う ==
 
== Obex を使ってファイルの送受信を行う ==
126行目: 141行目:
 
{{Note|ObexFS を使うには、ObexFTP サービスを提供するデバイスが必要です。}}
 
{{Note|ObexFS を使うには、ObexFTP サービスを提供するデバイスが必要です。}}
   
{{Pkg|obexfs}} をインストールして、次を実行することでサポートされている携帯をマウントします:
+
{{AUR|obexfs}} をインストールして、次を実行することでサポートされている携帯をマウントします:
$ obexfs -b ''devices_MAC_address'' /mountpoint
+
$ obexfs -b ''MAC_address_of_device'' /mountpoint
   
 
作業が終わったら、デバイスをマウントするために次のコマンドを使って下さい:
 
作業が終わったら、デバイスをマウントするために次のコマンドを使って下さい:
140行目: 155行目:
 
あなたのデバイスが Obex FTP サービスをサポートしている場合、デバイスをマウントしたくないときに obexftp コマンドを使ってデバイスとファイルをやり取りすることが可能です。
 
あなたのデバイスが Obex FTP サービスをサポートしている場合、デバイスをマウントしたくないときに obexftp コマンドを使ってデバイスとファイルをやり取りすることが可能です。
   
{{Note|{{pkg|obexfs}} をインストールすれば {{pkg|obexftp}} も依存パッケージとしてインストールされます。}}
+
{{Note|{{AUR|obexfs}} をインストールすれば {{AUR|obexftp}} も依存パッケージとしてインストールされます。}}
   
 
デバイスにファイルを送るには次のコマンドを実行してください:
 
デバイスにファイルを送るには次のコマンドを実行してください:
   
$ obexftp -b ''devices_MAC_address'' -p /path/to/file
+
$ obexftp -b ''MAC_address_of_device'' -p /path/to/file
   
 
デバイスからファイルを受け取るには次のコマンドを実行してください:
 
デバイスからファイルを受け取るには次のコマンドを実行してください:
   
$ obexftp -b ''devices_MAC_address'' -g filename
+
$ obexftp -b ''MAC_address_of_device'' -g filename
   
  +
{{Note|受信するファイルがデバイスの''転送フォルダ''にあることを確認してください。ファイルが転送フォルダのサブフォルダにある場合はコマンド内のパスを修正する必要があります。}}
{{Note|Ensure that the file you are retrieving is in the device's ''exchange folder''. If the file is in a subfolder of the exchange folder then provide the correct path in the command.}}
 
   
 
=== Obex Object Push ===
 
=== Obex Object Push ===
158行目: 173行目:
 
# sdptool browse ''XX:XX:XX:XX:XX:XX''
 
# sdptool browse ''XX:XX:XX:XX:XX:XX''
   
出力を見て、Obex Object Push を探し、サービスのチャンネルを覚えておいて下さい。サポートされていれば、{{pkg|ussp-push}} を使ってデバイスにファイルを送信できます:
+
出力を見て、Obex Object Push を探し、サービスのチャンネルを覚えておいて下さい。サポートされていれば、{{AUR|ussp-push}} を使ってデバイスにファイルを送信できます:
   
 
# ussp-push ''XX:XX:XX:XX:XX:XX''@''CHANNEL'' ''file'' ''wanted_file_name_on_phone''
 
# ussp-push ''XX:XX:XX:XX:XX:XX''@''CHANNEL'' ''file'' ''wanted_file_name_on_phone''
   
  +
=== コンピュータのスピーカーを bluetooth ヘッドセットとして使う ===
== サンプル ==
 
   
  +
設定によってコンピュータのスピーカーを通して携帯電話の音声を再生することなどができます。
サンプルは全て [[bluez4]] の記事に移動しました。bluez5 で使用するには修正が必要です。
 
  +
  +
以下を {{ic|/etc/bluetooth/audio.conf}} ファイルに追加 (ファイルが存在しない場合は作成してください):
  +
  +
[General]
  +
Enable=Source
  +
  +
詳細:
  +
* [[Bluetooth ヘッドセット]]
  +
* https://gist.github.com/joergschiller/1673341
  +
* http://www.lightofdawn.org/blog/?viewDetailed=00031
  +
  +
== オーディオ ==
  +
  +
Bluetooth ヘッドフォンなどのオーディオ機器を使うには {{Pkg|pulseaudio-bluetooth}} パッケージのインストールが必要です。
  +
  +
Bluetooth オーディオや Bluetooth ヘッドセットなどの情報については [[Bluetooth ヘッドセット]]のページを見てください。
  +
  +
(コンピュータスピーカー経由で携帯から音楽を再生したりするために) A2DP sink として認識されるようにするには、{{ic|/etc/bluetooth/audio.conf}} の {{ic|[General]}} 下に {{ic|1=Enable=Source,Sink,Media,Socket}} を追加してください。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
  +
  +
=== bluez-utils にシェルコマンドが入っていない ===
  +
一部のツールは廃止されパッケージから削除されました。現時点ではまだ AUR パッケージの {{AUR|bluez-utils-compat}} でインストールすることは可能です。新しいツールによって概ね同じ機能が使えますが、一部の機能はまだ新しい [https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/ D-Bus API] で実装されていません:
  +
{| class="wikitable"
  +
|-
  +
! 廃止されたツール
  +
! 代わりとなるツール
  +
|-
  +
| gatttool || btgatt-client, [D-Bus Gatt API https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/gatt-api.txt]
  +
|-
  +
| hciattach || btattach
  +
|-
  +
| hciconfig || btmgmt (と bluetoothctl)
  +
|-
  +
| hcidump || btmon (と btsnoop)
  +
|-
  +
| hcitool || 存在しません。[https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/device-api.txt D-Bus Device API] から利用できます。
  +
|-
  +
| rfcomm
  +
| rowspan="2" | 存在しません。[https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/profile-api.txt D-Bus Profile1 API] で実装できます。
  +
|-
  +
| ciptool
  +
|-
  +
| style="vertical-align: top;" | 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 配列。
  +
|}
  +
  +
=== bluetoothctl ===
  +
bluetoothctl でコントローラが見つからない場合、bluetooth デバイスがブロックされている可能性があります。{{Pkg|rfkill}}{{Broken package link|置換パッケージ: {{Pkg|util-linux}}}} を使ってブロックを解除してみてください:
  +
  +
# rfkill unblock bluetooth
   
 
=== gnome-bluetooth ===
 
=== gnome-bluetooth ===
242行目: 306行目:
 
HCI Ver: 2.0 (0x3) HCI Rev: 0xc5c LMP Ver: 2.0 (0x3) LMP Subver: 0xc5c
 
HCI Ver: 2.0 (0x3) HCI Rev: 0xc5c LMP Ver: 2.0 (0x3) LMP Subver: 0xc5c
 
Manufacturer: Cambridge Silicon Radio (10)
 
Manufacturer: Cambridge Silicon Radio (10)
  +
}}
  +
  +
==== ドングルから短距離にいるときにオーディオデバイスがおかしくなる ====
  +
  +
他のデバイスと同一の USB ホストを共有している場合、[https://bbs.archlinux.org/viewtopic.php?pid=1440161#p1440161 オーディオデバイスとの通信に干渉] する可能性があります。オーディオデバイスがバスに接続されている唯一のデバイスであることを確認してください。例:
  +
  +
{{hc|$ 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
 
}}
 
}}
   
248行目: 325行目:
 
Logitech のドングルには Embedded と HCI という二つのモードで動作するものがあります (例: Logitech MX5000)。embedded モードではドングルは USB デバイスをエミュレートするので PC は普通の USB マウス・キーボードを使っていると認識します。
 
Logitech のドングルには Embedded と HCI という二つのモードで動作するものがあります (例: Logitech MX5000)。embedded モードではドングルは USB デバイスをエミュレートするので PC は普通の USB マウス・キーボードを使っていると認識します。
   
USB BT ミニレシーバの小さな赤いボタンを押すと他のモードが有効になります。BT ドングルの赤いボタンを押しながらコンピュータに接続してください。ボタンを押して3-5秒で、Bluetooth アイコンがシステムトレイに表示されます[http://ubuntuforums.org/showthread.php?t=1332197 Discussion]
+
USB BT ミニレシーバの小さな赤いボタンを押すと他のモードが有効になります。BT ドングルの赤いボタンを押しながらコンピュータに接続してください。ボタンを押して3-5秒で、Bluetooth アイコンがシステムトレイに表示されます [https://ubuntuforums.org/showthread.php?t=1332197]
  +
  +
また、{{Pkg|bluez-hid2hci}} パッケージをインストールすることもできます。Logitech のドングルを接続すると自動的に切り替えます。
   
 
=== hcitool scan: Device not found ===
 
=== hcitool scan: Device not found ===
   
* Dell ラップトップ (例: Studio 15) では Bluetooth モードを HID から HCI に切り替える必要があります。{{Pkg|bluez-hid2hci}} パッケージをインストールすれば、[[udev|udev]] が自動的に切り替えを行うはずです。また、次のコマンドを実行して手動で HCI に切り替えることもできます:
+
* Dell ラップトップ (例: Studio 15) では Bluetooth モードを HID から HCI に切り替える必要があります。{{Pkg|bluez-hid2hci}} パッケージをインストールすれば、[[udev]] が自動的に切り替えを行うはずです。また、次のコマンドを実行して手動で HCI に切り替えることもできます:
 
# /usr/lib/udev/hid2hci
 
# /usr/lib/udev/hid2hci
   
287行目: 366行目:
 
Class = 0x100100
 
Class = 0x100100
   
  +
上記のように設定することでコンピュータが認識されます。
This was the only solution to make my computer visible for my phone.
 
   
 
=== Logitech のキーボードがペアリングできない ===
 
=== Logitech のキーボードがペアリングできない ===
303行目: 382行目:
 
=== HSP/HFP プロファイル ===
 
=== HSP/HFP プロファイル ===
   
bluez5 は HSP/HFP プロファイル ([[TeamSpeak]] [[Skype|Skype]] などのための通ヘッドセット) サポートていません、詳しくは [[Talk:bluez4|bluez4 の議論]]を下さい。
+
bluez5 は HSP/HFP プロファイル ([[TeamSpeak]], [[Skype]] などのための通ヘッドセット) サポートが削除されています。[[PulseAudio]] (バージョン6以上) などの HSP/HFP 自力で実装しているアプリケーションをインストールする必要があります
  +
  +
=== Thinkpad Bluetooth レーザーマウス ===
  +
  +
Thinkpad Bluetooth レーザーマウスが数秒の間に (マウスを動かしたりボタンを押したときに) 何度も接続と切断を繰り返す場合、コード {{ic|0000}} を使ってペアリングしてみてください。
  +
  +
=== Foxconn / Hon Hai / Lite-On の Broadcom デバイス ===
  +
  +
起動時にファームウェアを書き込む必要があるデバイスが存在します。ファームウェアは提供されていませんが、[https://github.com/jessesung/hex2hcd hex2hcd] ({{Pkg|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'' の {{ic|iProduct}} でわかることがあります。
  +
  +
''.hex'' ファイルはダウンロードした Windows ドライバーから抽出することができます。Windows を実行する必要はありません。適切なドライバーをダウンロードしてください。例えば [http://www.fujitsupc.com/downloads/mobile/BLUETOOTH_WIDCOMM_V6.5.0.3100_WIN7-32_FPC46-1771-01.EXE Bluetooth Widcomm] ([http://support.fujitsupc.com/CS/Portal/supportsearch.do?srch=DOWNLOADS&Series=P%20Series&Model=P771&ProductType=Notebook%20PC Lifebook P771] のドライバーとして記載) には多数の Broadcom デバイスのドライバーが含まれています。Bluetooth Widcomm の場合、ドライバーは RAR アーカイブになっているので、''{{Pkg|unrar}} x'' で解凍できます。多数の ''.hex'' ファイルの中から必要なファイルを見つけるために、{{ic|Win32/bcbtums-win7x86-brcm.inf}} ファイルの中身を確認して {{ic|[RAMUSB'''E031'''.CopyList]}} を検索してください。{{ic|E031}} はあなたの使っているデバイスの product コード (大文字) に置き換えて下さい (''lsusb'' で確認できる2番目の16進数)。その下に、必要な ''.hex'' ファイルの名前が書かれているはずです。
  +
  +
''.hcd'' ファイルを手に入れたら、{{ic|/lib/firmware/brcm/BCM.hcd}} にコピーしてください - このファイル名は {{ic|dmesg}} によって提案されています。あなたのマシンでは異なっている可能性があるため ''dmesg'' の出力で確認してください。そして ''btusb'' モジュールをリロードします:
  +
  +
# rmmod 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] を参照。
  +
  +
=== デバイスを接続した数秒後に切断してしまう ===
  +
  +
デバイスを接続したすぐ後に切断が発生し {{ic|journalctl}} の出力に以下のようなメッセージが確認できる場合:
  +
  +
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 アダプタ) に対して複数のペアリングを関連付けた場合に対処できません。デバイスをペアリングしなおすことで解決します。まずデバイスを削除してください:
  +
  +
$ bluetoothctl
  +
[bluetooth]# devices
  +
Device XX:XX:XX:XX:XX:XX My Device
  +
[bluetooth]# remove XX:XX:XX:XX:XX:XX
  +
  +
そして {{ic|bluetooth.service}} を[[再起動]]して Bluetooth アダプタをオンにし、デバイスをスキャンしてからペアリングしてください。Bluetooth マネージャによっては、デバイスを探知するために再起動が必要なこともあります。
  +
  +
=== エラーによってデバイスが接続できない ===
  +
  +
{{ic|journalctl}} の出力に以下のようなメッセージが確認できる場合:
  +
  +
a2dp-source profile connect failed for 9C:64:40:22:E1:3F: Protocol not available
  +
  +
{{Pkg|pulseaudio-bluetooth}} をインストールして PulseAudio を再起動してみてください。ファイル転送しか使っていない場合でも上記のエラーが発生することがあります。
  +
  +
=== スキャンしてもデバイスが表示されない ===
  +
  +
Bluetooth Low Energy を使用しているデバイスは bluetoothctl でスキャンしても表示されないことがあります (例: Logitech MX Master)。{{aur|bluez-utils-compat}} をインストールしてから以下を実行してみてください:
  +
  +
# systemctl start bluetooth.service
  +
# 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 からデバイスが認識されたら通常通りにペアリングできます。
サポートが実装されるまで、[[bluez4]] にダウングレードして [[AUR|AUR]] から {{AUR|pulseaudio-bluez4}} をインストールする必要があります。
 

2018年2月7日 (水) 00:16時点における版

関連記事

Bluetooth は携帯電話やコンピュータなどの電子デバイス用の近距離無線通信規格です。Linux においては、Bluetooth プロトコルスタックの実装として BlueZ が標準的に使われています。

インストール

公式リポジトリから Bluetooth プロトコルスタックの bluez と、bluetoothctl ユーティリティが入っている bluez-utils パッケージをインストールしてください。systemd によって自動的に起動される dbus デーモンが PIN ペアリングや設定の読み込みを行いますが、Bluetooth プロトコルを使うには bluetooth デーモンが必要です。

共通の bluetooth ドライバーがロードされていなかったら、ロードしてください:

# modprobe btusb

bluetooth の systemd サービスを起動するには次のコマンドを使って下さい:

# systemctl start bluetooth

起動時に bluetooth サービスを有効にするには:

# systemctl enable bluetooth
ノート:
  • デフォルトでは bluetooth デーモンは lp グループのメンバーのユーザーだけに bnep0 デバイスを提供します。bluetooth で接続するときはユーザーをグループに追加しておいてください。必要なグループは /etc/dbus-1/system.d/bluetooth.conf ファイルで変更することができます。
  • Bluetooth アダプターには Wi-Fi カードがバンドルされているものもあります (例: Intel Centrino)。これらの Bluetooth アダプターをカーネルから見えるようにするには、まず Wi-Fi カードを有効にする必要があります (大体はラップトップ上のキーボードショートカットを使う)。
  • Bluetooth カードによってはネットワークアダプタと衝突することがあります (例: Broadcom)。したがって、ネットワークサービスを起動する前に Bluetooth デバイスを接続するようにしてください。
  • hcitool や hciconfig などのツールは上流では非推奨となっており、bluez-utils にはもはや含まれていません。アップデートされないことが決まっているため、スクリプトの中で使用している場合は使わないように書き換えることを推奨します。それでも使いたい場合は bluez-utils-compatAUR をインストールしてください。詳しい情報は FS#53110Bluez メーリングリスト を参照。

CLI による設定

Bluetoothctl

シェルからデバイスをペアリングするのは最もシンプルで信頼性のある方法の1つです。正確な手順は利用するデバイスとその入力機能によります。以下は /usr/bin/bluetoothctl を使ってデバイスをペアリングする一般的な説明です:

bluetoothctl 対話コマンドを実行してください。help と入力することで利用できるコマンドのリストを表示できます。

  • select MAC Address と入力してデフォルトのコントローラを選択してください。
  • power on と入力してコントローラの電源を入れて下さい。デフォルトではオフになっています。
  • devices と入力してペアリングするデバイスの MAC アドレスを取得してください。
  • デバイスが表示されないときは scan on コマンドでデバイス検出モードにしてください。
  • agent on でエージェントをオンにしてください。
  • pair MAC Address と入力することでペアリングを実行します (タブ補完が使えます)。
  • PIN がないデバイスを使う場合は、手動でデバイスを信頼する必要があるかもしれません。trust MAC Address と入力してこれを行なって下さい。
  • 最後に、connect MAC_address を使って接続を確立してください。

セッションの例は以下のようになります:

# bluetoothctl 
[NEW] Controller 00:10:20:30:40:50 pi [default]
[bluetooth]# agent KeyboardOnly 
Agent registered
[bluetooth]# default-agent 
Default agent request successful
[bluetooth]# scan on
Discovery started
[CHG] Controller 00:10:20:30:40:50 Discovering: yes
[NEW] Device 00:12:34:56:78:90 myLino
[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

起動後に自動で有効にする

デフォルトでは、再起動後に Bluetooth アダプタが有効になりません。hciconfig hci0 up を使用する以前の方法は非推奨となりました。詳しくは リリースノート を見てください。現在では、AutoEnable=true/etc/bluetooth/main.conf[Policy] セクションの下部に追加するだけです:

/etc/bluetooth/main.conf
[Policy]
AutoEnable=true

hciconfig を使う (非推奨)

再起動の後にもデバイスを有効にしておくには、udev ルールが必要です:

/etc/udev/rules.d/10-local.rules
# Set bluetooth power up
ACTION=="add", KERNEL=="hci0", RUN+="/usr/bin/hciconfig %k up"
ヒント: KERNEL=="hci0"KERNEL=="hci[0-9]*" に置き換えると全てのインターフェイスにマッチするようになります。

以下のような systemd サービスを使うことで、サスペンド・復帰の後にデバイスの電源を自動的にオンにすることが可能です:

/etc/systemd/system/bluetooth-auto-power@.service
[Unit]
Description=Bluetooth auto power on
After=bluetooth.service sys-subsystem-bluetooth-devices-%i.device suspend.target

[Service]
Type=oneshot
ExecStart=/usr/bin/hciconfig %i up

[Install]
WantedBy=suspend.target

有効化するときは bluetooth のデバイス名を使います。例: bluetooth-auto-power@hci0.service

グラフィカルフロントエンドによる設定

以下のパッケージによって Bluetooth をカスタマイズするのにグラフィカルインターフェイスを使えるようになります。

GNOME Bluetooth

GNOME BluetoothGNOME の Bluetooth ツールです。gnome-bluetooth パッケージにはバックエンドが含まれており、gnome-shell には状態監視アプレットが、gnome-control-center には設定フロントエンド GUI が入っています。アクティビティに Bluetooth と入力するか、gnome-control-center bluetooth コマンドを実行することでアクセスできます。また、bluetooth-sendto コマンドを実行することでリモートデバイスに直接ファイルを送信することが可能です。

ファイルを受信するには、gnome-user-share パッケージをインストールしてください。Settings -> Sharing からペアリングしたデバイスから Bluetooth 経由で送られたファイルを受け取ることができます。

ヒント: Bluetooth のエントリを Thunar のファイルプロパティメニューの Send To に追加するには、こちら の手順を見て下さい (設定する必要があるコマンドは bluetooth-sendto %F です)。

Bluedevil

BluedevilKDE の Bluetooth ツールです。bluedevil (KDE Plasma 5) パッケージでインストールすることができます。

Dolphin やシステムトレイには Bluetooth アイコンが表示されないので、手動で追加してください。アイコンをクリックすることで Bluedevil を設定したり Bluetooth デバイスを検出できます。KDE システム設定からインターフェイスにアクセスすることも可能です。

Blueberry

Blueberry は全てのデスクトップ環境で動作するフロントエンドです。blueberry パッケージでインストールできます。設定ツール (blueberry) とシステムトレイアプレット (blueberry-tray) が含まれています。

Blueman

Blueman を参照。

Obex を使ってファイルの送受信を行う

ObexFS

KDE や Gnome の Bluetooth パッケージを使うのとは別の選択肢として、ObexFS を使うことで他のファイルシステムと同じように携帯をマウントすることができます。

ノート: ObexFS を使うには、ObexFTP サービスを提供するデバイスが必要です。

obexfsAUR をインストールして、次を実行することでサポートされている携帯をマウントします:

$ obexfs -b MAC_address_of_device /mountpoint

作業が終わったら、デバイスをマウントするために次のコマンドを使って下さい:

$ fusermount -u /mountpoint

他のマウントオプションについては http://dev.zuckschwerdt.org/openobex/wiki/ObexFs を見て下さい。

ノート: bluetooth デバイスが読み取り専用でマウントされるように設定されてないことを確認してください。デバイスの設定から確認することができるはずです。デバイスが読み取り専用でマウントされているとファイルをデバイスに転送しようとした時にパーミッションエラーが発生します。

ObexFTP 転送

あなたのデバイスが Obex FTP サービスをサポートしている場合、デバイスをマウントしたくないときに obexftp コマンドを使ってデバイスとファイルをやり取りすることが可能です。

ノート: obexfsAUR をインストールすれば obexftpAUR も依存パッケージとしてインストールされます。

デバイスにファイルを送るには次のコマンドを実行してください:

$ obexftp -b MAC_address_of_device -p /path/to/file

デバイスからファイルを受け取るには次のコマンドを実行してください:

$ obexftp -b MAC_address_of_device -g filename
ノート: 受信するファイルがデバイスの転送フォルダにあることを確認してください。ファイルが転送フォルダのサブフォルダにある場合はコマンド内のパスを修正する必要があります。

Obex Object Push

Obex FTP サービスをサポートしていないデバイスの場合、Obex Object Push がサポートされていないか確認してください。

# sdptool browse XX:XX:XX:XX:XX:XX

出力を見て、Obex Object Push を探し、サービスのチャンネルを覚えておいて下さい。サポートされていれば、ussp-pushAUR を使ってデバイスにファイルを送信できます:

# ussp-push XX:XX:XX:XX:XX:XX@CHANNEL file wanted_file_name_on_phone

コンピュータのスピーカーを bluetooth ヘッドセットとして使う

設定によってコンピュータのスピーカーを通して携帯電話の音声を再生することなどができます。

以下を /etc/bluetooth/audio.conf ファイルに追加 (ファイルが存在しない場合は作成してください):

[General]
Enable=Source

詳細:

オーディオ

Bluetooth ヘッドフォンなどのオーディオ機器を使うには pulseaudio-bluetooth パッケージのインストールが必要です。

Bluetooth オーディオや Bluetooth ヘッドセットなどの情報については Bluetooth ヘッドセットのページを見てください。

(コンピュータスピーカー経由で携帯から音楽を再生したりするために) A2DP sink として認識されるようにするには、/etc/bluetooth/audio.conf[General] 下に Enable=Source,Sink,Media,Socket を追加してください。

トラブルシューティング

bluez-utils にシェルコマンドが入っていない

一部のツールは廃止されパッケージから削除されました。現時点ではまだ AUR パッケージの bluez-utils-compatAUR でインストールすることは可能です。新しいツールによって概ね同じ機能が使えますが、一部の機能はまだ新しい D-Bus API で実装されていません:

廃止されたツール 代わりとなるツール
gatttool btgatt-client, [D-Bus Gatt API https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/gatt-api.txt]
hciattach btattach
hciconfig btmgmt (と bluetoothctl)
hcidump btmon (と btsnoop)
hcitool 存在しません。D-Bus Device API から利用できます。
rfcomm 存在しません。D-Bus Profile1 API で実装できます。
ciptool
sdptool 存在しません。複数の D-Bus オブジェクトに機能が分散されています: Profile, Advertising, deviceadapter の UUID 配列。

bluetoothctl

bluetoothctl でコントローラが見つからない場合、bluetooth デバイスがブロックされている可能性があります。rfkill[リンク切れ: 置換パッケージ: util-linux] を使ってブロックを解除してみてください:

# rfkill unblock bluetooth

gnome-bluetooth

bluetooth-properties でファイルの受信を有効にしようとしたときに以下のメッセージが表示される場合:

Bluetooth OBEX start failed: Invalid path
Bluetooth FTP start failed: Invalid path

xdg-user-dirs をインストールして次を実行してください:

$ xdg-user-dirs-update

次のコマンドでパスを編集できます:

$ vi ~/.config/user-dirs.dirs

Bluetooth USB ドングル

USB ドングルを使う場合は、Bluetooth ドングルが認識されているか確認してください。USB ドングルを挿入する時に /var/log/messages.log を表示する (もしくは systemd で journalctl -f を実行する) ことで確認できます。以下のような表示があるはずです (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行しか表示されていなかった場合は、デバイスを立ち上げる必要があります。 例:

hciconfig -a hci0
hci0:	Type: USB
	BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0
	DOWN 
	RX bytes:0 acl:0 sco:0 events:0 errors:0
        TX bytes:0 acl:0 sco:0 commands:0 errors:
# hciconfig hci0 up
hciconfig -a hci0
hci0:	Type: USB
	BD Address: 00:02:72:C4:7C:06 ACL MTU: 377:10 SCO MTU: 64:8
	UP RUNNING 
	RX bytes:348 acl:0 sco:0 events:11 errors:0
        TX bytes:38 acl:0 sco:0 commands:11 errors:0

これが以下のようなエラーで失敗する場合:

Operation not possible due to RF-kill

おそらくコンピュータのハードウェアスイッチか、rfkill ユーティリティが原因です。ユーティリティが原因の場合は次のコマンドで解決できます:

# rfkill unblock all

(場合によって) bluetooth のハードウェアスイッチは USB の bluetooth ドングルへのアクセスも操作します。スイッチを押したり動かしてもう一度デバイスを立ち上げてみてください。

デバイスが検出されているか確認するために bluez-utils に含まれている hcitool を使うことができます。次のコマンドで利用可能なデバイスとその ID・MAC アドレスのリストを表示することが可能です:

$ hcitool dev
Devices:
        hci0	00:1B:DC:0F:DB:40

デバイスに関するもっと詳細な情報は hciconfig を使うことで取得できます。

$ 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

Logitech Bluetooth USB ドングル

Logitech のドングルには Embedded と HCI という二つのモードで動作するものがあります (例: Logitech MX5000)。embedded モードではドングルは USB デバイスをエミュレートするので PC は普通の USB マウス・キーボードを使っていると認識します。

USB BT ミニレシーバの小さな赤いボタンを押すと他のモードが有効になります。BT ドングルの赤いボタンを押しながらコンピュータに接続してください。ボタンを押して3-5秒で、Bluetooth アイコンがシステムトレイに表示されます [1]

また、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 アダプターを有効にして見て下さい。
  • 場合によっては次のコマンドで有効にできます:
# hciconfig hci0 up

rfkill unblock: Do not unblock

デバイスがソフトブロックされていて connman を動作させている場合、次を試してみて下さい:

$ connmanctl enable bluetooth

コンピュータが表示されない

携帯からコンピュータが表示されないときは、PSCAN と ISCAN を有効にしてください:

# enable PSCAN and ISCAN
$ hciconfig hci0 piscan 
# check it worked
$ hciconfig
hci0:   Type: USB
        BD Address: 00:12:34:56:78:9A ACL MTU: 192:8 SCO MTU: 64:8
        UP RUNNING PSCAN ISCAN
        RX bytes:20425 acl:115 sco:0 events:526 errors:0
        TX bytes:5543 acl:84 sco:0 commands:340 errors:0
ノート: /etc/bluetooth/main.conf の DiscoverableTimeout と PairableTimeout を確認してください。

以下のように /etc/bluetooth/main.conf 内のデバイスクラスを変更してみて下さい:

# Default device class. Only the major and minor device class bits are
# considered.
#Class = 0x000100 (from default config)
Class = 0x100100

上記のように設定することでコンピュータが認識されます。

Logitech のキーボードがペアリングできない

Logitech キーボードとペアリングするときにパスキーがない場合は、次のコマンドを入力してください:

# hciconfig hci0 sspmode 0

ペアリング後も、キーボードが接続されないときは、hcidump -at の出力を確認してください。以下のメッセージのように接続・切断が繰り返し表示される場合:

   status 0x00 handle 11 reason 0x13
   Reason: Remote User Terminated Connection

今のところの対処方法としては昔の Bluetooth スタックをインストールするしかありません。

HSP/HFP プロファイル

bluez5 では HSP/HFP プロファイル (TeamSpeak, Skype などのための通信ヘッドセット) のサポートが削除されています。PulseAudio (バージョン6以上) などの HSP/HFP を自力で実装しているアプリケーションをインストールする必要があります。

Thinkpad Bluetooth レーザーマウス

Thinkpad Bluetooth レーザーマウスが数秒の間に (マウスを動かしたりボタンを押したときに) 何度も接続と切断を繰り返す場合、コード 0000 を使ってペアリングしてみてください。

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 -viProduct でわかることがあります。

.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

場合によって (おそらく古いカーネルを使っている場合)、brcm_patchram_plus ユーティリティを使って .hcd ファイルを書き込む必要があります (ユーティリティは brcm_patchram_plus-gitAUR[リンク切れ: アーカイブ: aur-mirror] に含まれています)。まず、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

これでデバイスが使えるようになるはずです。以上の設定を永続化させる方法は BBS#162688 を参照。

デバイスを接続した数秒後に切断してしまう

デバイスを接続したすぐ後に切断が発生し journalctl の出力に以下のようなメッセージが確認できる場合:

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 アダプタ) に対して複数のペアリングを関連付けた場合に対処できません。デバイスをペアリングしなおすことで解決します。まずデバイスを削除してください:

$ bluetoothctl
[bluetooth]# devices
Device XX:XX:XX:XX:XX:XX My Device
[bluetooth]# remove XX:XX:XX:XX:XX:XX

そして bluetooth.service再起動して Bluetooth アダプタをオンにし、デバイスをスキャンしてからペアリングしてください。Bluetooth マネージャによっては、デバイスを探知するために再起動が必要なこともあります。

エラーによってデバイスが接続できない

journalctl の出力に以下のようなメッセージが確認できる場合:

a2dp-source profile connect failed for 9C:64:40:22:E1:3F: Protocol not available

pulseaudio-bluetooth をインストールして PulseAudio を再起動してみてください。ファイル転送しか使っていない場合でも上記のエラーが発生することがあります。

スキャンしてもデバイスが表示されない

Bluetooth Low Energy を使用しているデバイスは bluetoothctl でスキャンしても表示されないことがあります (例: Logitech MX Master)。bluez-utils-compatAUR をインストールしてから以下を実行してみてください:

# systemctl start bluetooth.service
# 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 からデバイスが認識されたら通常通りにペアリングできます。