WSL+dockerでZMKのローカルビルド環境を構築する
うんちくが要らないかたは環境構築の章まで飛ばしてください。
自作キーボードのファームウェアを作る際、何をベースにしていますか?
多くの場合、最初はqmk_firmwareだと思います。
qmk_firmwareはC言語で簡単に開発でき、国内外ともに歴史も情報も多いため、初心者でも比較的とっつきやすいです。(※1)
しかし、qmkは無線に対応したキーボードは作りづらく、ケーブルから解放されたい人は別の手段を検討する必要があります。
(※1)qmkは破壊的な変更をするので、アップデートしたら「何もしてないのにこわれた!」となることも多いですがw
さて、今回はワイヤレスファーストと謳っている、ZMK_firmwareを用いて無線キーボードのファームウェアを作るための環境構築を行っていきましょう。
ZMK_firmwareとは
ZMK_firmwareはZephyrRTOSをベースとしたワイヤレスキーボード用のファームウェアです。
近年はstar数もかなり伸びており、自作キーボード界隈でもZMK_firmwareを採用したキーボードが増えています。
ソフトウェアライセンスはMITなので、qmkとは違い、ソースコードの開示義務がないことも大きな特徴です。
開発言語はCですが、Linuxライクな構造をしており、コア部分に手を入れる場合はDeviceTreeやKconfigの知識も必要になります。
環境構築
この記事ではWSL + DockerでさくっとZMK firmwareのビルド環境を整えます。
Dockerを使うと面倒なツールのインストールをしなくていいし、ホスト環境(といってもWSLですが)も汚さずに済むのでオススメです。
前提環境
以下を前提環境としています。
- Windows11の上でWSL2有効化、Ubuntu24インストール済み
- vscodeインストール済み、以下の拡張機能をインストール済み
– Remote – SSH – Visual Studio Marketplace
– Dev Containers – Visual Studio Marketplace - Gitインストール済み
ざっくりと以下の手順で環境構築を行います。
1.WSL上にDocker Engineをインストール
2.zmkの用意
3.zmk環境の初期化
4.任意のキーボードを試しにビルド
1.WSL上にDocker Engineをインストール
私は宗教上の理由でDockerDesktopを使えないのでWSL上にDocker Engineをインストールします。
以下のページに沿ってインストールしてください。
2.zmkの用意
WSL上でzmk_firmwareをクローンしてvscodeで開くところまでやります。
場所は拘りが無ければhome以下で良いです。
git clone https://github.com/zmkfirmware/zmk.git
cd zmk
code .
これでvscodeが立ち上がるはずです。
3.zmk環境の初期化
vscodeが立ち上がったら、画面右下に以下の画面が出るはずですので肯定してください。
画面が出ない場合は拡張機能が足りないのでインストールしましょう。
うっかり消しちゃった場合は左下のWSL:Ubuntu-24.04となっているところをクリックして、コンテナーで再度開くを押します。
初回はDockerコンテナのビルドが走るのでしばらく時間がかかります。
コンテナのビルドが終わったら早速ターミナルを開いてソースのビルドのための初期化作業を行います。
west init -l app/
cd app
west update
これだけです。
westというのはZephyrRTOSで使われる管理ツールです。
west updateコマンドでzmk firmwareに必要なライブラリを取得します。
4.任意のキーボードを試しにビルド
appディレクトリにて、例えば以下のコマンドでビルドできます。
west build -d build/hummingbird -b seeeduino_xiao_ble -- -DSHIELD=hummingbird
ビルド成果物は`app/build/hummingbird`の中に生成されます。
今回だとseeeduino_xiao_bleボードを指定しているので、`app/build/hummingbird/zephyr/zmk.uf2`ファイルがマイコンに書き込める最終的な成果物です。
より詳細な説明は公式のドキュメントを参照ください。
ディスカッション
コメント一覧
まだ、コメントがありません