BLE micro proの新しいファームウェアを入れる
BLE micro proの新しい標準ファームウェアが公開されました(2019/10/1現在Beta版)。
最近オタクのドッグフーディングかねてBLE micro proを使っているので試してみたいと思います。
前提
Getting startを読みながら進めていきます。 OSはWindows10です。
qmk/qmk_firmwareにマージされているキーボードのみを取り扱い、野良定義には触れません。開発者向けの内容になるのでBLE micro pro開発者向けドキュメントを読んでください。
おおざっぱな手順は以下の通りです。
準備する
フォルダを準備し、必要なファイルをダウンロードします。
フォルダを準備する
自分が管理しやすい適当な場所にフォルダを作ります。
gitとgithubを使って管理したいなーと思うので、今回は以下のようなフォルダ構成を考えています。
./BMP_beta/ |--workspace/ └--keyboards/ |--OtakuSplit/ | |-left | └-right |--other_keyboard_1/ |--other_keyboard_2/ └--and others/
後述するnrfutil.exeだとかbootloaderやfirmwareを一緒にアップロードするのはライセンス上よくない可能性がある(調べてない)ので、これらは作業ディレクトリのworkspaceの中に突っ込んで管理外にしたいと思います。
バージョン情報は欲しいので、どこかにバージョン情報を記録したメモを用意しておくとよいかもしれません。
nrfutil.exeを調達する
以下のURLから最新版のnrfutil.exeをworkspace以下にダウンロードします。
ブートローダ・ファームウェアを調達する
ブートローダはsekigon-gonnoc/BLE-Micro-Pro, ファームウェアはsekigon-gonnoc/qmk_firmwareにあります。 それぞれから、同じバージョンのファイルをダウンロードしてください。カンマで区切られた3番目の数値はrevisionのため、一致させる必要はありません。
それぞれ同じバージョンをworkspace以下にダウンロードします。
キーボード定義を調達する
キーボード定義を調達してください。今のところ、準備されていないものはすべて人力で用意する必要があります。 これが用意できない場合、旧ファームウェアを使ってください。
ブートローダを書き換える
この手順は3手順です。
作業ディレクトリに移動する
powershellを開いて、作業ディレクトリに移動してください。
ポートを確認する
Win+X->Mの順番で押してデバイスマネージャーを起動します。
ポート(COMとLPT)という項目があるかどうかを確認してください。ないならそのまま次に行きます。あるならば、何番がすでにあるのかを控えてください。
BLE micro proのリセットボタンを押しながらUSB接続し、ブートモードでPCと接続されている状態にします。この状態でデバイスマネージャのポート(COMとLPT)を見ると新しいデバイスが追加されています。新しく増えたデバイスが、BLE micro proである可能性が高いです。これが何番か(COMn(nは整数))を控えてください。この番号はブートローダが書き換わったり、異なるUSBポートに接続すると変わる可能性があります。
Powershellから確認する方法もあります*1。以下のコマンドを実行すると、現在利用可能なCOMポート一覧が表示されます。デバイスマネージャーと同様に、接続前後で差分をとるだけです。
(Get-WmiObject -query "SELECT * FROM Win32_PnPEntity" | Where {$_.Name -Match "COM\d+"}).name
ブートローダを書き込む
作業ディレクトリで先ほど控えたポート番号を使ってコマンドを作成、実行します。この際BLE micro proはブートモードである必要があります。
./nrfutil.exe dfu usb-serial -pkg ./ble_micro_pro_bootloader.zip -p COMn
ファームウェアを書き込む
この手順も3手順です。ほとんどブートローダと同じです。
ポートを確認する
ブートローダの書き換えと一緒です。変わっていないことを確認したほうがよいです。
ブートローダを書き込む
ファイル名以外ブートローダの書き換えと一緒です。
設定ファイルを書き込む
設定ファイルは3ファイルからなります。
- CONFIG.JSN
- KEYMAP.JSN
- TAPPING_TERM.JSN
全てJSONファイルですが、3文字制限があるためJSNになっています。
CONFIG
キーボード定義です。左右どちらがマスターかも含んでいます。
せきごん氏により、QMKのキーボード定義から変換するスクリプトが用意され、試験ついでに主要な国内キーボードキットの定義を用意していただいています。
ここに定義がない場合は、QMKの定義から変換をするか、自分で用意する必要があります。 これは開発者向けの内容になりますので、この記事では扱いません。
KEYMAP
QMK configuratorから生成したkeymap.jsonのファイル名を変更して書き込むだけです。 ただし、BMP専用のBLE挙動を変更するためのキーコードが含まれていないので、直接書き換えるか、Quantum>QMK specific>ANY()を使って任意のキーコードを差し込む必要があります。一通り必要になるので、専用レイヤーを用意して一通り入れておきましょう。
私は打ち間違えで悩む未来が見えたのでQMK configuratorを拡張しました。keyboard settings > BLE micro proに一通りキーコード定義があります。
特にメンテナンスをする予定はないので、動かなくなってたら教えてください。
tapping_term
キーコードペアごとにtapping termを切り替えられるようです。私は今のところ気になってなくて触っていません。
〆
ざーっと書いて続きはまた明日、と一晩おいたら更新されてました。流石せきごんさん手が早い。ほとんど全部書き直しになった。
導入だけ済ませてしまえば、あとはUSBで繋いでKeymap.jsonを抜き取り、Configuratorに読み込ませて調整、再度読み込ませれば書き換わるので非常に楽です。せきごんさんすごい!
今までBLE micro proはnrf開発環境の導入などサポートのしんどさが目に見えていて公式にはお勧めできない状態でした。一体どれだけの人間が使われていないBMPを所持しているのか、と考えたものです。しかし、これならガンガン推し進めることができるように思いました。
この記事は特に無線化されてない普通のXD75(atomic_style_jp)で書きました。
一応オタクスプリットはBLE micro proが取り付けやすい空間が存在しています。