Bluetooth 操作マニュアル

7 分で読了
このページの目次

controller・pairing・接続・アプリの profile を分ける。pairing 成功と接続、接続と音声の出力先は別。BlueZ bluetoothctl を使い、MAC は例として置き換える。

やりたいこと参照先
機器が見つからないcontroller と検索
pairing 後も使えないpair・trust・connect
切断・無音層ごとの診断

controller と機器の検索可能状態を確認

service・無線 switch・controller を別に確認する

# BlueZ daemon の状態を確認する
systemctl status bluetooth.service --no-pager
# Bluetooth の software・hardware block を読む
rfkill list bluetooth

Hard blocked は物理 switch・firmware を確認し、software 解除は Soft blocked に対応する。

# local controller・address を列挙する
bluetoothctl list

controller と headset の address を混同しない。なければ driver・USB・firmware log を見る。

# 既定 controller の電源・機能を読む
bluetoothctl show
# 既知・発見済みの遠隔 device を列挙する
bluetoothctl devices

online 一覧でも paired 専用でもない。状態は info で確認する。

# controller 初期化・接続 error を読む
journalctl -u bluetooth.service -b -n 100 --no-pager
# Bluetooth を使う必要がある時に Soft block を解除する
sudo rfkill unblock bluetooth

条件付き操作で毎回は不要。rfkill を再確認し、Hard block は別途処理する。

list は controller、devices は既知・発見済み機器で paired 限定ではない。Powered と rfkill の soft/hard block を分ける。複数 adapter は select で選ぶ。対象を pairing mode にし他ホストとの接続を確認する。

三つの状態を個別に確認

状態意味保証しないこと
Pairedpairing 情報の確立現在の接続や音声動作
Trustedローカルのサービス信頼方針無条件の自動再接続
Connected現在接続がある全 profile とアプリ経路の正常性

次は shell ではなく対話型 bluetoothctl 内で入力する。agent が確認・PIN を処理し、両側の数字を照合する。版によって pair が trust/connect も試みるため info の結果で確認する。

一つの session で controller を選ぶ

# shell から BlueZ 対話 session を開く
bluetoothctl

text block は bluetoothctl prompt に接頭辞なしで入力する。複数 controller なら list の address で select、単一なら省略する。選択は同じ process 内で使う。

select 11:22:33:44:55:66

電源を入れ、show の Powered: yes を確認する。失敗なら rfkill・controller log を先に見る。

power on
show

確認 agent を登録して scan する

人が応答できる session で agent を登録し、確認に答えられるよう開いておく。

agent on
default-agent

device を pairing mode にし、scan で名前・address が一致する記録を待ってから進む。

scan on

pairing を確認して trust・connect を判断する

scan の device address を使い、controller address と混同しない。pair 後に両端の番号を確認し、成否が出るまで次を貼らない。

pair AA:BB:CC:DD:EE:FF

実状態を読み、既に Trusted/Connected なら対応する後続操作は省略する。

info AA:BB:CC:DD:EE:FF

今後の service のため本機で信頼する場合だけ trust する。現在の接続確立とは別。

trust AA:BB:CC:DD:EE:FF

online で今使う場合に connect する。失敗なら error・profile を調べ、pair の反復で済ませない。

connect AA:BB:CC:DD:EE:FF

info で Connected: yes を再確認し、実入力・音声を検証する。信頼解除は同 session の untrust と実 address を使い、切断は別に判断する。

info AA:BB:CC:DD:EE:FF

scan を止めて終了する

成否にかかわらず不要なら scan を止めて shell へ戻る。quit は pairing 解除ではない。

scan off
quit

失敗した層を調べる

現象確認と対応
検索結果なし電源・rfkill・検索時間・距離、firmware/USB ログ
AuthenticationFailed確認コード・古い pairing・他ホスト。再 pairing が必要な場合に双方で削除
接続済みだが無音wpctl status・profile・stream は音声手冊へ
切断が繰り返す時刻・理由・電池・2.4 GHz 干渉を照合し、必要なら btmon で再現を記録

状態確認と意図した切断

# shell から対象 device の現在状態を読む
bluetoothctl info AA:BB:CC:DD:EE:FF

実 address を使い Paired/Trusted/Connected・service UUID を読む。複数 adapter なら同じ対話 session で選択・確認する。

# 必要な場合に paired 関係を残して切断する
bluetoothctl disconnect AA:BB:CC:DD:EE:FF

修復前の必須操作ではない。Connected: no と配対保持を確認する。

制御した再現で HCI 証拠を採取する

# 一方の terminal で Bluetooth event 観測を始める
sudo btmon

別 terminal で一度再現して時刻を記録し、ここで Ctrl-C。reason code と service log を照合し、共有前に確認する。

disconnect は pairing を保持し、remove はローカル情報を削除する。service 再起動は他機器にも影響する。btmon の共有前に識別子と通信内容を確認する。

BlueZ bluetoothctl · rfkill