Bluetooth キーボードのペアリング(Linux)
bluetoothctl で HID キーボードをペアリングする手順。DGX Spark と Magic Keyboard with Touch ID の組み合わせで検証済み。
前提確認
bluetoothctl show
rfkill list
Powered: yes、Soft/Hard blocked: no を確認する。
手順
- キーボードを USB から抜く。USB 接続中は Bluetooth の電波を出さない
- 電源スイッチをオフ→2〜3 秒→オンでペアリングモードに入る。ペアリングモードは短時間で切れるので、スキャン開始後に電源を入れ直すのが確実
- bluetoothctl の対話モードで以下を実行する
agent KeyboardDisplay
default-agent
scan on
pair <MAC>
trust <MAC>
connect <MAC>
注意点
- agent を登録せずに一発コマンド
bluetoothctl pair <MAC>を使うと Just Works ペアリングになり、HID キーボードは Pairing successful の直後にペアリングを解除してくる。必ず KeyboardDisplay agent を default-agent にしてから pair する - Magic Keyboard with Touch ID は
Confirm passkey NNNNNN (yes/no)を要求する。数秒以内に yes を返さないとorg.bluez.Error.AuthenticationCanceledで失敗する。キーボード側での数字入力は不要 - ペアリングに失敗するとキーボードはペアリングモードから抜けるので、電源オフ→オンからやり直す
- スクリプトで自動化する場合は fifo 経由で bluetoothctl の対話モードに流し込み、ログに Confirm passkey が出たら即座に yes を送る
- 対象キーボードが唯一の入力デバイスでも、失敗したら USB を挿し直せば有線で復帰できる
- 成功時は
info <MAC>で Paired、Bonded、Trusted、Connected がすべて yes になる