YouDuck.ai

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 = device on a board that only needed the pause produces a worse failure than doing nothing: the pad bonds, then drops repeatedly with Encryption 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 [email protected]

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:

  1. 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.
  2. 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.
  3. Try --pause-btd-on-pair.
  4. 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.

Related