1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL2でQMK Firmwareのファームウェアの作成と書き込みをする

Last updated at Posted at 2022-10-17

動作環境

  • Windows 10 Pro 21H2
    • Windows Subsystem for Linux (WSL2)
      • Ubuntu 22.04.1 LTS
    • Docker Desktop v4.12.0
    • avrdude v7.0
    • Visual Studio Code v1.72.0
      • Remote Development v0.21.0

警告
追記[2023/12/30]: Windows11の場合avrdude.sh実行エラーとなるため、Windows側でqmk_toolboxで書き込む必要がある。

ファームウェア作成

【WSL側】qmk_firmwareをクローンし、カスタムする(ここではLet's Splitキーボード)のキーマップのディレクトリを作成する。

$ git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
$ cd qmk_firmware 
$ git switch -c custom-lets_split
$ mkdir -p keyboards/lets_split/keymaps/hgshdt

このディレクトリにカスタムしたconfig.h, keymap.c, rules.mkなどを格納し、dockerビルド用のスクリプトでビルドする。lets_split_rev2_hgshdt.hexが作成されることを確認する。

$ util/docker_build.sh lets_split:hgshdt

書き込み

【Windows側】avrdudeのリリースのサイトから、avrdude-v7.0-windows-x64.zipをダウンロードし、Windows側の任意のディレクトリにダウンロード・ファイルを解凍する。

  • avrdude.exe:Windowsの任意のディレクトリに格納する(ここではC:\workspace\qmk\avrとする)
  • avrdude.conf:WSL側のqmk_firmware内にコピーする

【WSL側】書き込み用のスクリプト(avrdude.sh)を作成する。

$ cd qmk_firmware
$ vi avrdude.sh

avrdude.shの中身は以下。WSLでavrdudeを簡単に使う為の奴 (github.com)を流用させていただいた。変数AVRDIRに、Windows側に保存したavrdude.exeのディレクトリを指定する。

AVRDIR="/mnt/c/workspace/qmk/avr"

MODECMD='/mnt/c/Windows/System32/mode.com'
GET_COMPORT='/mnt/c/Windows/System32/reg.exe query HKLM\HARDWARE\DEVICEMAP\SERIALCOMM'

CONNECTED_COMPORT=$(${MODECMD}|grep -oE 'COM[0-9]+'| tr '\n' '|' | sed -e 's/|$//g')
echo "connected port: $CONNECTED_COMPORT"
TARGET_COMPORT=""
while [ "$TARGET_COMPORT" = "" ];do
 sleep 0.5
 printf "."
 if [ -z "$CONNECTED_COMPORT" ]; then
  TARGET_COMPORT=$(${GET_COMPORT}|grep -oE 'COM[0-9]+')
 else
  TARGET_COMPORT=$(${GET_COMPORT}|grep -vE $CONNECTED_COMPORT|grep -oE 'COM[0-9]+')
 fi
done
echo ""
echo $TARGET_COMPORT

${AVRDIR}/avrdude.exe -C ./avrdude.conf -c avr109 -p m32u4 -P ${TARGET_COMPORT} -U flash:w:$1

作成したファームウェアをこのシェルスクリプトの引数に指定して実行する。スクリプト実行後待機状態中にリセットスイッチを押す(Let's Splitの場合、最初に左キーボードをUSB接続して実行。次に右キーボードをUSB接続して実行。最後に再度?左キーボードをUSB接続して実行)。

$ sh avrdude.sh lets_split_rev2_hgshdt.hex
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?