Gamepad bonds, then drops repeatedly with PIN or Key Missing (0x06)
Symptom
Encryption Change: PIN or Key Missing (0x06)
Symptom
The pad bonds successfully, then disconnects and reconnects over and over. dmesg or the Bluetooth log repeats Encryption Change: PIN or Key Missing (0x06), and no input device is ever created — meaning padd never receives any stick data.
It looks exactly like a dead pad or a faulty Bluetooth chip on the board.
Cause
This is usually over-configuration, not a hardware fault.
Microduck has two levels of workaround for the bonding problems of the aic8800 wireless chip:
| Option | What it does | For |
|---|---|---|
--pause-btd-on-pair |
Pauses btd during pairing and power-cycles the adapter |
Most affected boards |
--weird-ble |
Includes that pause, and additionally sets Privacy = device |
The few boards where the pause is not enough |
The official documentation is explicit about this error:
Setting
Privacy = deviceon a board that only needed the pause produces a worse failure than doing nothing: the pad bonds, then drops repeatedly withEncryption Change: PIN or Key Missing (0x06)and no input device is ever created.
In other words, seeing this error means you used --weird-ble on a board that only needed the pause.
Fix
Drop --weird-ble and re-provision with --pause-btd-on-pair:
./scripts/provision-board.sh --pause-btd-on-pair pierre@192.168.1.42
It leaves a marker file at /var/lib/robot/weird-ble and changes nothing else. On a board carrying that marker, sudo robotctl pad pair handles the rest by itself — stopping btd, power-cycling the adapter, pairing, restarting btd — printing what it is doing as it goes.
The full command table for moving a board between the two configurations is in the official install-dev.md.
Order to work through
When a pad will not bond, start with the lightest option:
- Confirm the pad really is in pairing mode — on an Xbox pad, hold the Sync button on top until the light flashes fast. Slow flashing only means it is powered on.
- Confirm the pad’s bonding slot is not occupied. An Xbox pad stores exactly one host bond, and one failed attempt leaves it holding a key this board no longer has. Pairing it to a laptop and then removing it there consumes and frees the slot — switching it to pairing mode alone does not.
- Try
--pause-btd-on-pair. - Only if the pause does not help, go to
--weird-ble.
Note
If you actually hit and reproduced this, board batch and BlueZ version are worth adding. The most convincing evidence is the --fingerprint output of
pad-stack-report.sh
compared across two boards.