作品とかライフログとが忘備録とか

非プログラマー向け。Msys2を使わずHelix等の自作キーボードにファームウェアを書き込む全手順


初めに

自作キーボードにファームウェアを書き込む手順ってプログラミングや電子工作に馴染みがないと少しハードルが高いですよね。UNIX?うちWindowsだよ?qmkファームウェア?何それ?と、実際私も知らないことだらけで色々と寄り道や失敗をしてしまい、動かすまでに余計な時間がかかってしまいました。特にまいったのはビルドの解説によく使われるMsys2というコンソールがどのPCで色んな手順でやっても解説通り動いた試しがないという悲しい現実です。おそらく前提となるパッケージやらソフトやら設定やらが抜けていると思うのですが、とにかくMsys2でビルドまで行けたためしがありません。ということで、ここでは自作キーボードHelixにMsys2を使わずにファームウェアを書き込むまでの簡単な手順をご紹介します。

自作キーボードが動くまでの概略

キーボードはキー部分のスイッチ以外に、それを押されたときどんな信号を送るかという頭脳部分が必要です。この頭脳部分にPro Microという超小さいコンピューターを搭載し、それを制御するためにUSB接続でqmk fimwareというオープンソースのプログラムを書き込むのが自作キーボードのトレンドのようです。

qmk fimwareをそのまま書き込むのではなく、必要な部分をパッケージングするビルドという作業も必要で、これができると非プログラマーにも簡単に自分でキーボードをカスタマイズする事もできますので今回はそこにも触れます。

WindowsでUNIXを使えるようにする。

qmk fimwareをビルドするためにUNIXの機能がいくつか必要になるのでWindows上でUNIXの命令を使えるようにする必要があります。手順としては

  1. Windows上でUnixを使うための機能の有効化
  2. 「UNIXをストアからインストール」
  3. インストールしたUNIXから必要な機能をダウンロード

以上になります。

WSLのインストール

WSLというのはWindows Subsystem For Linuxの略で、Windows上でUNIXのコマンドを実行できるようになる機能らしいです。デフォルトでオフになっています。

WSLを有効化するにはントロールパネルを開き「プログラムと機能」下にある「Windowsの機能の有効化または無効化」を開き、出てきたパネル内で「Windows Subsystem for Linux」にチェックを入れOKを押します。

 

Ubuntuのインストール

UNIXには色んな種類があるらしいのですが、今はUbuntuというUNIXの一種が入手もしやすく扱いやすいそうです。

Windowsストアで「ubuntu」を検索するだけ

Ubuntuの設定をする

インストールしたUbuntuを起動するとパスワードとユーザー名を聞かれるので任意のものを設定します。次に下記のコマンドを入力してubuntuをアップデートします。

sudo apt-get update

次はビルドに必要なパッケージをダウンロードします。

sudo apt-get install build-essential

(続けるか聞かれたらYを押す。すごく長い)

GCC-AVRとかいうパッケージもビルドに必要

sudo apt-get install binutils-avr gcc-avr avr-libc avrdude

(こちらも続けるか聞かれたらY

必要なソフトのインストール

AVR

https://sourceforge.net/projects/winavr/

自作キーボードで使われているPro MicroやArduinoはAVRマイコンと呼ばれるもので、これはそのビルドに必要なソフト。

AVRDudess

http://blog.zakkemble.co.uk/avrdudess-a-gui-for-avrdude/

AVRマイコンへビルドしたファイルを書き込むためのソフト。AVRDudeというソフトのGUIバージョンです。起動には次の手順が必要なので注意してください。

WinAVRインストールディレクトリ下 \utils\libusb\bin\ にある libusb*(4ファイル)を、AVRDudessインストールディレクトリにコピーすると動くようになります。

qmk fimware

https://github.com/qmk/qmk_firmware

自作キーボードのファームウェア本体です。有名な自作キーボードの設定ファイルはすでに同梱されているので、少し設定を弄るだけでカスタマイズが簡単にできます。このファームウェアのダウンロードにも注意点があります。いくつかのファイルがサブモジュールとやらになっていて、ZIPでダウンロードすると同梱されません。Githubのアプリをインストールして自分のPC上にクローン(要はコピー)するとサブモジュールも同梱されますし、なにか変更があったときは自動で更新されるようです。クローン先のフォルダは自由に選べるので覚えておいてください。

Open in Desktopを選択

ファームウェアのビルド

お疲れ様でした。これでファームウェアをビルドするための環境が揃いました。早速ビルドしてみましょう。

まずはWSLのコンソールを立ち上げます。

左下の検索バーにWSLと打ち込むと出てきます。

次にコンソール内でqmkファームウェアのディレクトリに移動します。コンソール内で次のように入力します。

cd /mnt/c/Users/ユーザー名/Documents/GitHub/qmk_firmware/(qmkファームをクローンした任意のフォルダ)

ユーザー名と フォルダ名はGitHubでクローンしたフォルダに適時書き換えてください。cdとはチェンジディレクトリの略で、cd .. で上の階層に、cd 任意のフォルダ名 で今いる階層化の任意のフォルダにも移動できます。/mnt/c/はCドライブのことです。

qmkディレクトリの直下、keybordsフォルダには様々なキーボードに向けたプリセットが入っています。キーボード名のフォルダの中にはkeymapというフォルダがあり、そこにカスタマイズするkeymap.cというファイルが入ってます。お目当てのキーボード名とキーマップ名をそれぞれメモっておいてください。

次にコンソールで

make キーボード名:キーマップ名

と入力します。Helixのfroggyキーマップなら

make helix:froggy です。

ビルドが完了するとqmkフォルダの直下、.build というフォルダにビルドしたファイルが出現します。使うのは .hex という拡張子のファイルです。

ファームウェアの書き込み

いよいよビルドしたファームウェアをキーボードのコンピューターに書き込みます。前の手順でインストールしたAVRDudessを使うと簡単です。

まずAVRDudess内の三箇所を次のように変更します。

  • Programmer(-c) : Aterm AppNote AVR109 Boot Loader
  • MCU(-p) : ATmega32U4
  • Flash : 先ほどビルドしたhexファイル

次に書き込むポートを特定します。キーボードのコンピューターについているリセットボタンを押し、Port(-p)のリストを素早く確認すると今までなかったCom *(番号)がリセットされている数秒間だけ出現しますので、それを選択してやります。

リセットされている間にProgram!ボタンを押すと書き込みが完了です。

ファームウェアの改造

さて、これでファームウェアのビルド、書き込みという一連の動作が完了しました。ファームウェアのキーマップを変更するためには、ビルドする対象のKeymapフォルダにあるkeymap.cをテキストエディタで開きます。

なかにkc_**(任意のキー)があるので、それを書き換えて保存しまえば完了です。kc_a を kc_z にすると今までaキーだったボタンがzキーになります。kc_LSHF(左シフトキー)、kc_LGUI(左Windowsキー)など、どのボタンでも入れ替える事ができます。

qmkファームウェアは非常に沢山の機能があり、同時押しやモード切替、LEDの制御など色々とできるようなので、興味があれば調べてみるといいかもしれません。

/ takuma

  1. 初めまして。Froggy検討中です。
    firmwareを書き込むため、キーボードをDFUモードにする必要があるそうで、その方法を探していました。froggyのリセット実行がその方法であることが分かり、ありがたいです。

    オリジナル版Hex(helix_rev3_5rows_froggy_27f6afc.hex)を使わずに、ご自身でmakeされたのは特別な理由がおありだったのでしょうか?

  2. お役に立てて何よりです。
    遊舎工房さんからリリースされているファームウェアは私が作ったプロトタイプのファームウェアを改良して頂いたものなのですが、確かこの記事を書いた時はまだなかったような?

    現在も自作のHexを使っているのですが、遊舎工房さんバージョンを使わない理由は2つありまして
    1つは高度な内容で完全に理解できないためそこからの自由な改造が難しいこと。
    2つめは同時押しでキーがロックされてしまうバグが存在することです。

コメントを残す

メールアドレスが公開されることはありません。

プロフィール

タクマ

フリーランスのグラフィックデザイナー

グラフィック,映像,Web,UIなど

元3DCGCGアニメーター

Gallery

hum.id ヒューム・アイディ

takuma http://hum-id.jp/

ヒューム・アイディについて/ご連絡