YouDuck.ai

ゲームパッドがボンディング後に切断を繰り返し、PIN or Key Missing (0x06) が出る

エラー

Encryption Change: PIN or Key Missing (0x06)

症状

パッドのペアリング自体は成功するのに、その直後から切断と再接続を繰り返します。dmesg や Bluetooth のログには Encryption Change: PIN or Key Missing (0x06) が何度も現れ、入力デバイスがいつまで経っても作られません。つまり padd はスティックのデータを一度も受け取れません。

見た目にはパッドの故障か、ボードの Bluetooth チップの不良にしか見えません。

原因

これは通常、ハードウェア故障ではなく設定のやりすぎです。

Microduck には、aic8800 無線チップのボンディング問題に対して 2 段階の対処があります。

オプション 何をするか 対象
--pause-btd-on-pair ペアリング中に btd を止め、アダプタを電源から入れ直す 影響を受けるボードの大半
--weird-ble 上記の一時停止に加えて Privacy = device を設定する 一時停止だけでは足りない少数のボード

公式ドキュメントはこのエラーについて明確に述べています。

一時停止だけで足りるボードに Privacy = device を設定すると、何もしない場合より悪い失敗が起きます。パッドはボンディングされたあと切断を繰り返して Encryption Change: PIN or Key Missing (0x06) を出し、入力デバイスは決して作られません。

つまり、このエラーが出ているということは、一時停止だけで足りるボードに --weird-ble を使ってしまったということです。

対処

--weird-ble を外し、--pause-btd-on-pair で provision をやり直します。

./scripts/provision-board.sh --pause-btd-on-pair [email protected]

これは /var/lib/robot/weird-ble にマーカーファイルを 1 つ残すだけで、他は何も変更しません。このマーカーがあるボードでは、sudo robotctl pad pair が残りの手順——btd の停止、アダプタの電源入れ直し、ペアリング、btd の再起動——を自分で進め、何をしているかを都度表示します。

2 つの設定の間でボードを移動させるためのコマンド一覧は、公式の install-dev.md にあります。

切り分けの順番

パッドがボンディングできないときは、軽い対処から順に試してください

  1. まずパッドが本当にペアリングモードに入っているか確認します。Xbox パッドは上部の Sync ボタンを押してランプが速く点滅する状態にします。ゆっくりした点滅は電源が入っているだけです。
  2. パッドのボンディング枠が埋まっていないか確認します。Xbox パッドはホストとのボンディングを 1 つしか保持できず、一度失敗したペアリングによって、このボードにはもう存在しない鍵を抱えたままになります。ノート PC にペアリングしてからそちらで削除すると、この枠を消費して解放できます。ペアリングモードに入れるだけでは解放されません。
  3. --pause-btd-on-pair を試します。
  4. 一時停止でも解決しない場合にだけ --weird-ble に進みます。

補足

実際にこの問題に当たって再現した場合は、ボードのロットと BlueZ のバージョンを補足していただけると助かります。最も説得力があるのは、 pad-stack-report.sh--fingerprint 出力を 2 枚のボードで比較したものです。

関連