ZMKでペアリングがどうしてもできない時の対処法

XIAO BLEとZMKでワイヤレス分割キーボードを色々試していると、しばしばキーボードの左右のペアリング(PCとキーボードのペアリングではなくて)がうまくできないということが起こります。 そういう時は公式にはsettings_reset.uf2を作って、書き込むことでペアリング情報を削除できるとあります。

Troubleshooting | ZMK Firmware

しかし、この通りやってもペアリングできないという事態が起こることがあります。 USBでロギングすると、こんなメッセージが出ています。 エラーメッセージが出ないこともありました。

[00:00:35.941,955] <err> zmk: Security failed: CB:4D:CB:F1:7B:FA (random) level 1 err 2

以下は、このような状況への対処策です。 ブートローダーを書き直してまっさらにしてしまうとうまくペアリングできました。 Adafruit_nRF52_Bootloaderをダウンロードしてきて、openocdで書き込むという手順になります。 ラズパイが必要です。

ラズパイとXIAO BLEの接続
XIAO BLE Rasberry Pi
5V 2
GND 6
DIO 22 (gpio 25)
CLK 23 (gpio 11)
ラズパイでの作業
sudo apt install openocd

wget https://github.com/adafruit/Adafruit_nRF52_Bootloader/releases/download/0.9.0/xiao_nrf52840_ble_bootloader-0.9.0_s140_7.3.0.hex

sudo openocd -f interface/raspberrypi-native.cfg -c "transport select swd" -f target/nrf52.cfg -c init -c "reset init" -c halt -c "nrf5 mass_erase" -c "program xiao_nrf52840_ble_bootloader-0.9.0_s140_7.3.0.hex  verify" -c reset -c exit

シルクが間違っているので、一見でたらめにつながっています。

参考文献

GitHub - adafruit/Adafruit_nRF52_Bootloader: USB-enabled bootloaders for the nRF52 BLE SoC chips

XIAO BLE (Sense) bootloader bricked, how to restore it? - #3 by Citric - XIAO - Seeed Forum

Unbricking Seeed Studio Xiao BLE / Arduino Nano 33 BLE | Experimenty

Bond Reset Instructions | SliceMK Documentation