Make
Keyboard
qmk_firmware

qmk_firmwareをWindows上でmakeする方法

 自作キーボードキットを作ると必ず通らなければならないのがmake作業。キーボードに書き込むソフトウェアを生成する作業です。最近の日本製キットはメイカーによってあらかじめmakeされたソフトウェアを書き込んだ状態で販売されていることもありますが、自作キーボードの醍醐味であるキーマップのカスタマイズをする場合には必須になってきます。

 そのmakeをする環境ですが2018/10/18時点ではlinuxのコマンドラインツールでしか提供がなく (※) windowsユーザーはどうにかしてlinux環境を構築して作業しなければなりません。


 少し前までならMinGWをインストールしたり仮想環境にLinuxを入れてそのうえで作業というのを強いられてきましたが、現在はDockerやWindows10に備わっているWSLでwindows環境を汚さず簡単にlinuxでのmake環境を構築できます。


 ここではWindows10で手軽に利用出来るWSLを利用したmake出来る環境を作って、実際にmakeしてみるところまでやっていきます。

(※) QMKチームがweb上でキーマップをカスタム出来るサイトを現在開発中のようです


WSL(Windows Subsystem for Linux)のインストール

 Windows 10のスタートメニューのWindowsシステムツールにコントロールパネルがあるので開いて「プログラムと機能」を開きます。


 「Windowsの機能の有効化または無効化」を開きます。


1.PNG

 「Windows Subsystem for Linux」にチェック入れて、あとはOKとか押してってインストール完了させます。


2.PNG

 ベースが入ったらOSを選びます。OSはMicrosoft Storeから選びます。検索にLinuxを入れればいくつか選べます。

3.PNG

 Debian/GNU linuxを入れます。


4.PNG

 入れたらスタートメニューにアイコンが出てくるのでそれをクリックします。

Installing, this may take a few minutes...

Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:

WSLにログインするユーザーを作成します。ユーザー名を入力してください。

Enter new UNIX password:

Retype new UNIX password:

入力したユーザーのパスワードを設定します。


パスワードを確認を含め二度同じものを入れてください(入力してもカーソルは動きませんがキー入力は受け付けています)。

passwd: password updated successfully

Installation successful!
ユーザー名@DESKTOP-ユニークID:~$

これで出来ました。作成したユーザー名でログインした状態になっています。


この画面ではwindowsのコマンドプロンプトのような感じでコマンドを入力して操作することになります。


qmk_firmwareをDLします

windowsでの操作に戻ります。


qmk_firmwareのページに行って、右のほうにある緑のプルダウンメニューをクリックして、download zipをクリックしてダウンロードします。

無題.png

ダウンロードが完了したらどこか適当な場所にzipを展開します。展開した中身をWSLから参照します。


基本的に起動ドライブに置いておけば問題ないと思いますがここではマイドキュメントに置きます。


WSLからqmk_firmwareのバッチを実行します

WSLの画面の操作をします。


まずさっき展開したフォルダまで移動します。


WSLからはWindowsのドライブはちょっと違う見え方になります。Cドライブなら/mnt/c/になります。あと\(円マーク)ではなく/(スラッシュ)を挟んでください。

cd /mnt/c/Users/自分のユーザ名/Documents/qmk_firmware

これでqmk_firmawareのフォルダに移動しました。


次にmakeするのに必要なものをインストールします。

sudo ./util/wsl_install.sh  

すると、

[sudo] marksard のパスワード:

パスワード入力待機状態になっていますので設定したものを入れてください(入力してもカーソルは動きませんがキー入力は受け付けています)。


インストール過程で何度か質問されるのでそれに答えていきます。

Do you want to install all toolchain dependencies needed for compiling QMK?

This will run install_dependencies.sh, which calls apt-get upgrade.
If you don't want that, you can install the dependencies manually.
(Y/N) y

QMKのコンパイルに必要なすべてのツールチェーンの依存関係をインストールしますか?

これによりinstall_dependencies.shが実行され、apt-get upgradeが呼び出されます。
必要ない場合は、依存関係を手動でインストールできます。
(Y / N)y

QMKのコンパイルに必要なものなのでyを入力してください。

Which USB drivers do you want to install?

(A)all - All supported drivers will be installed
(C)onnected - Only drivers for connected keyboards (in bootloader/flashing mode)
will be installed
(F)force - Like all, but will also override existing drivers for connected
keyboards
(N)one - No drivers will be installed,
flashing your keyboard will most likely not work
(A/C/F/N)? n

どのUSBドライバをインストールしますか?

(A)all - サポートされているすべてのドライバがインストールされます
(C)onnected - 接続されたキーボードのドライバのみ(ブートローダ/点滅モード)
              インストールされます
(F)force - すべてのものと同様ですが、接続されている既存のドライバを上書きします
           キーボード
(N)1 - ドライバはインストールされませんが、
         あなたのキーボードを点滅させることはほとんどうまくいかないでしょう
(A / C / F / N)? n

WSL上ではキーボードへの書き込みが出来ないのでnを入力してください。

Flip need to be installed if you want to use that for programming.

Please install it to the default location!
Do you want to install it now? (Y/N) n

あなたがプログラミングのためにそれを使いたいなら、Flipをインストールする必要があります。

デフォルトの場所にインストールしてください!
今すぐインストールしますか? (Y / N)n

不要なのでnを入力してください。

Creating a softlink to the utils directory as ~/qmk_utils.

This is needed so that the the make system can find all utils it need.
Press enter to continue (ctrl-c to abort)

utilsディレクトリへのソフトリンクを〜/ qmk_utilsとして作成します。

これはmakeシステムが必要とするすべてのユーティリティを見つけるために必要です。
続行するにはEnterキーを押します(Ctrl + Cキーを押して中止)

あとから必要なものなのでyを入力してください。

Do you want to add 'source ~/qmk_utils/activate_wsl.sh' to the end of your

.bashrc file? Without this make won't find the needed utils, so if you don't
want to do it automatically, then you have to do it manually later.
(Y/N)? y

あなたの最後に 'source〜/ qmk_utils / activate_wsl.sh'を追加しますか?

.bashrcファイル?このmakeがなければ、必要なutilを見つけることができないでしょう。
それを自動的に行いたい場合は、後で手動で行う必要があります。
(Y / N)? y

これも必要なものなのでyを入力してください。

Do you want to add a symlink to the QMK repository in your home directory for

convenience? This will create a folder 'qmk_firmware' in your home directory.
In the future you can use this folder instead of the full path on your Windows
file system.
(Y/N)? y

あなたのホームディレクトリのQMKリポジトリへのシンボリックリンクを追加しますか?

利便性?ホームディレクトリに「qmk_firmware」フォルダが作成されます。
将来的には、Windows上のフルパスの代わりにこのフォルダを使用することができます
ファイルシステム。
(Y / N)? y

これも必要なものなのでyを入力してください。

******************************************************************************

Installation completed!
You need to open a new bash command prompt for all the utils to work properly
******************************************************************************

こんな感じのが出たらインストールは完了です。


makeしてみよう

今いるフォルダから移動します。

cd ~

この~はlinux上ではユーザーホームといって、windowsでいうc:\Users\ユーザー名\の位置に該当します。


WSLを開くと初期位置がこの位置になります。

さて、インストール時にフォルダをリンクしてもらっているので、このホームにリンクが張られています。以下のコマンドを使うと

ls -l

こんな感じでフォルダのリンクが出来ています。

lrwxrwxrwx 1 root  root   77 10月 11 15:59 qmk_firmware -> /mnt/c/Users/[ユーザー名]/Documents/qmk_firmware/util/..

lrwxrwxrwx 1 root root 74 10月 11 15:58 qmk_utils -> /mnt/c/Users/[ユーザー名]/Documents/qmk_firmware/util

フォルダを移動します。

cd qmk_firmware

このフォルダでmakeをすることになります。お手持ちのキーボードキットのビルドガイド等にmakeの方法が書いてあるはずなのでそれを読んでmakeしましょう。

例えばhelixの場合、

make helix:default

でmakeすると以下のような感じでmakeされるはず。


QMK Firmware 0.6.128
Making helix/rev2 with keymap default

avr-gcc (GCC) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiling: keyboards/helix/i2c.c [OK]
Compiling: keyboards/helix/serial.c [OK]
Compiling: keyboards/helix/ssd1306.c [OK]
…省略…
Compiling: lib/lufa/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/ConfigDescriptors.c [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/DeviceStandardReq.c [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/Events.c [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/HostStandardReq.c [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/USBTask.c [OK]
Linking: .build/helix_rev2_default.elf [OK]
Creating load file for flashing: .build/helix_rev2_default.hex [OK]
Copying helix_rev2_default.hex to qmk_firmware folder [OK]
Checking file size of helix_rev2_default.hex [OK]
* The firmware size is fine - 16318/28672 (12354 bytes free)

というのが出ます。全部OKかつ

 * The firmware size is fine - 16318/28672 (12354 bytes free)

こんな感じで出てればOKです。


ファームウェアのファイルサイズが28762バイトを超えていないことも重要です。


もしrules.mk等に編集を加えた場合でサイズを超えた場合はオプションを付けすぎている可能性があります。


OKなんて全然出なくてエラーが出てくる場合はmakeで指定した名前が違う可能性や、rules.mkの編集に何かミスがあるのかもしれません。


あとは書き込むだけ

 これでhexファイルが出来ましたのであとはキーボードに書き込むだけです。お手持ちのキーボードのビルドガイドをしっかり読んで書き込みを行ってください。


 もう一息です、がんばってください!