はじめに
BLE Micro ProはPro Micro互換でBLE機能を持ったブレークアウトボードです。
使い方はGitHub Page
を用意してくれているので、初心者でも扱いやすいです。
今回はBLE Micro ProをJISplit89 で使ったときにハマった
Failed to write. Error:7
No space in flash.
について解説します。
私が使っているのはJISplit89 とBLE Micro Pro Type-C版 を左右それぞれ1つずつの合計2つになります。
対応策
具体的な現象としては、Remap やQMK Configurator を使ってキーの配列情報を書き込んだ後にPCとのシリアル接続を切ると書き込んだキー情報が反映されずに、以前書き込んだキー配列のままになってしまっていました。
JISplit作者の方がBLEに用意されている保存用キーコードの SAVE_EE
を使うと保存されるという情報をTwitterで見たので試してみたのですが保存されませんでした。(キーコード一覧)
Remapで編集したキーコードは保存されるはずですが、BMP用キーコード「SAVE_EE」(Save eeprom config)というものもあるので、使用してみてください。https://t.co/YM25Ir2EpH
— サリチル酸⌨️自キ温泉ガイド (@Salicylic_acid3) March 5, 2022
コンソールから見るとこのようなエラーが表示されていました。
<info> app: Update file
<info> app: Failed to write. Error:7
<info> app: No space in flash. collet garbage.
公式ドキュメントや検索をしても対応策が見当たらなかったのですが、Self-Made Keyboards in JapanのDiscord の#ble-pro-microチャンネルに対応策がありました。
該当コメントはこちら です。
- bootloader.uf2
- ble_micro_pro_default.uf2
の2つのファイルをダウンロードします。
QMK Configuratorなどでシリアル接続をして dfu
コマンドを打ち込みます。
そうすると、BLE Micro ProをPCが認識するので1ファイルずつドラッグアンドドロップします。
2つとも読み込んだ後にもう一度シリアル接続をします。
接続後 remove all
コマンドを入力します。その後BLE Micro Proが初期化されるので、もう一度ファームウェアなどを書き込みなおすと無事書き込みができるようになっているはずです。
他にハマったこと
電池をMaster, Slaveともに2つずつ入れる
電池ソケットが左右2つずつあるのですが、1つ入れれば普通に入力できていたため、そのまま使っていたのですが、Master側にSlaveがつながらなかったり、入力途中で接続が切れてしまうことがありBLE Micro Proは不安定な製品なのかなーとか、はんだ付けミスったのかなーとか思ってたけど試しに電池を左右どちらも2つずつ入れたら全然違いました。接続が途中で切れることもなく入力もめちゃくちゃ安定してびっくりしました。
分割キーボードでBLE Micro Proを使っている場合、Advertising(接続)のコマンドを左右それぞれ用意する必要がある
BLE Micro Proには ADV_ID{number}
というカスタムキーコードが用意されていて、ペアリング済みのそれぞれの対応する番号に接続をするキーを割り当てられます。
分割キーボードではなくBLE Micro Proが1つでキーボードを操作している場合は問題ないのですが、分割キーボードで2つBLE Micro Proを使っている場合、ペアリング情報は左右それぞれに記憶されます。
QMK Configuratorでshow
コマンドをそれぞれ実行するとペアリング情報が見れます。
- Master側
{"bonding":[
{"id": 0, "type":"Device","name":"pc1","mac":"f0:18:98:**:**:**"},
{"id": 1, "type":"Slave ","name":"","mac":"f0:e0:d0:**:**:**"},
{"id": 2, "type":"Device","name":"pc2","mac":"c8:89:f3:**:**:**"}
]}
- Slave側
{"bonding":[
{"id": 0, "type":"Master","name":"","mac":"f6:a8:f6:**:**:**"}
]}
複数のPCにペアリング設定しているのでMaster側は0と2にDeviceでPC情報が保存されています。1はSlave側とのペアリング情報になっています。
逆にSlave側は0のMaster情報しかありません。
そのため、Slave側で ADV_ID1
などのキーを打ってもなにも起きません。なんならMaster側との接続が切れるので気をつけてください。
BLE Micro Proを分割キーボードで使う場合は左右それぞれ別でキーを設定する必要があります。