March 31, 2023

Ble Micro ProでNo space in flashでキーマップを書き込めなくなった

はじめに

BLE Micro ProはPro Micro互換でBLE機能を持ったブレークアウトボードです。
使い方はGitHub Page を用意してくれているので、初心者でも扱いやすいです。

今回はBLE Micro ProをJISplit89 で使ったときにハマった

Failed to write. Error:7
No space in flash.

について解説します。

私が使っているのはJISplit89BLE Micro Pro Type-C版 を左右それぞれ1つずつの合計2つになります。

対応策

具体的な現象としては、RemapQMK Configurator を使ってキーの配列情報を書き込んだ後にPCとのシリアル接続を切ると書き込んだキー情報が反映されずに、以前書き込んだキー配列のままになってしまっていました。

JISplit作者の方がBLEに用意されている保存用キーコードの SAVE_EE を使うと保存されるという情報をTwitterで見たので試してみたのですが保存されませんでした。(キーコード一覧)

コンソールから見るとこのようなエラーが表示されていました。

<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チャンネルに対応策がありました。

該当コメントはこちら です。

measure
  • 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を分割キーボードで使う場合は左右それぞれ別でキーを設定する必要があります。

© AAkira 2023