天高工房

キーキャップに印字して遊んだり電子工作して遊んだりしたことを書くかもしれません。

BLE micro proの新しいファームウェアを入れる

BLE micro proの新しい標準ファームウェアが公開されました(2019/10/1現在Beta版)。

github.com

最近オタクのドッグフーディングかねてBLE micro proを使っているので試してみたいと思います。

前提

Getting startを読みながら進めていきます。 OSはWindows10です。

qmk/qmk_firmwareにマージされているキーボードのみを取り扱い、野良定義には触れません。開発者向けの内容になるのでBLE micro pro開発者向けドキュメントを読んでください。

github.com

おおざっぱな手順は以下の通りです。

  1. 準備する
  2. ブートローダを書き換える
  3. ファームウェアを書き換える
  4. 設定ファイルを書き換える

準備する

フォルダを準備し、必要なファイルをダウンロードします。

フォルダを準備する

自分が管理しやすい適当な場所にフォルダを作ります。

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以下にダウンロードします。

github.com

ブートローダファームウェアを調達する

ブートローダはsekigon-gonnoc/BLE-Micro-Pro, ファームウェアはsekigon-gonnoc/qmk_firmwareにあります。 それぞれから、同じバージョンのファイルをダウンロードしてください。カンマで区切られた3番目の数値はrevisionのため、一致させる必要はありません。

それぞれ同じバージョンをworkspace以下にダウンロードします。

github.com

github.com

キーボード定義を調達する

キーボード定義を調達してください。今のところ、準備されていないものはすべて人力で用意する必要があります。 これが用意できない場合、旧ファームウェアを使ってください。

ブートローダを書き換える

この手順は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のキーボード定義から変換するスクリプトが用意され、試験ついでに主要な国内キーボードキットの定義を用意していただいています。

github.com

ここに定義がない場合は、QMKの定義から変換をするか、自分で用意する必要があります。 これは開発者向けの内容になりますので、この記事では扱いません。

KEYMAP

QMK configuratorから生成したkeymap.jsonのファイル名を変更して書き込むだけです。 ただし、BMP専用のBLE挙動を変更するためのキーコードが含まれていないので、直接書き換えるか、Quantum>QMK specific>ANY()を使って任意のキーコードを差し込む必要があります。一通り必要になるので、専用レイヤーを用意して一通り入れておきましょう。

私は打ち間違えで悩む未来が見えたのでQMK configuratorを拡張しました。keyboard settings > BLE micro proに一通りキーコード定義があります。

takashiski.github.io

特にメンテナンスをする予定はないので、動かなくなってたら教えてください。

tapping_term

キーコードペアごとにtapping termを切り替えられるようです。私は今のところ気になってなくて触っていません。

ざーっと書いて続きはまた明日、と一晩おいたら更新されてました。流石せきごんさん手が早い。ほとんど全部書き直しになった。

導入だけ済ませてしまえば、あとはUSBで繋いでKeymap.jsonを抜き取り、Configuratorに読み込ませて調整、再度読み込ませれば書き換わるので非常に楽です。せきごんさんすごい!

今までBLE micro proはnrf開発環境の導入などサポートのしんどさが目に見えていて公式にはお勧めできない状態でした。一体どれだけの人間が使われていないBMPを所持しているのか、と考えたものです。しかし、これならガンガン推し進めることができるように思いました。

この記事は特に無線化されてない普通のXD75(atomic_style_jp)で書きました。

一応オタクスプリットはBLE micro proが取り付けやすい空間が存在しています。

skyhigh-works.booth.pm