LoginSignup
0
1

More than 1 year has passed since last update.

Ubuntu18でqmk_firmwareのセットアップ

Last updated at Posted at 2020-05-05

ProMicroに付属のピンヘッダーをはんだ付けしない

コンスルーの向きを確認する

使用機器

Pro Micro

Pro Microは、sparkfun社のArduino Leonardo互換の赤色のボードで、こういうもの。
https://www.sparkfun.com/products/12640

本物は高いので、格安で手に入る下のようなクローンを使用している。
https://ja.aliexpress.com/item/32775200720.html?spm=a2g0o.productlist.0.0.2b3e5552qtr8HQ&algo_pvid=d3d54e93-d970-4bce-b74a-86b235103680&algo_expid=d3d54e93-d970-4bce-b74a-86b235103680-9&btsid=0ab6f83115884739823885590e52ed&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_

キーボード

7sKBを使っている前提。キーマップの指定部分を変更すれば、他のキーボードでも同じように設定できるはず。

環境構築

手順

以下を順番に実行。

qmk firmareをクローンして、レポジトリルートに移動

$ git clone https://github.com/qmk/qmk_firmware
$ cd qmk_firmware

インストールスクリプトを実行

必要なものを一気に入れてくれるスクリプトがあるので実行

$ ./util/qmk_install.sh

サブモジュールをビルド

インストールスクリプトで入れてくれないサブモジュールをビルドする。これをやらないと、tmk_core/protocol/lufa.mk:14: lib/lufa/LUFA/makefile: No such file or directoryのようなエラーが出てくる。

$ make git-submodule

モデムマネージャーをアンインストール

これが動いていると、シリアルポートが塞がってしまい、Pro Microに書き込みができない。

$ sudo apt remove modemmanager

キーボード配列の書き込み

手順

以下を順番に実行。

キーボード配列の変更

https://docs.qmk.fm/#/keycodes にキーコードの表がある。

$ vi keyboards/7skb/keymaps/default/keymap.c

書き込みたいキーボード配列のmakeターゲットを実行

$ make 7skb:default:avrdude

Pro Microをリセット

コントローラーをリセットしろと以下のように出てくるので、Pro Microをリセットする。

注意点
  • 充電しかできないケーブルではダメ
  • KVMが間に入ると書き込みができない場合がある
  • 1番と2番をショートすることでリセットされる個体もある
Detecting USB port, reset your controller now...........

USBの口を上にした状態で、右側の上から2番と3番目が、GNDとRESETになる。その2つをショートするとPro Microがリセットされる。

初回は素早く2回ショートする必要あり。ピンセットでショート可能。

キーボードデバイスを書き込み可能に

コントローラーをリセットすると、デバイスとしてマウントされて、以下のようなメッセージが出てくる。

Device /dev/ttyACM0 has appeared; assuming it is the controller.
Waiting for /dev/ttyACM0 to become writable.

そこで、別のターミナルからそのデバイスを書き込み可能にすると、書き込みが実行される。

デバイスは数秒でアンマウントされてしまうので、上のメッセージが出たらすぐに書き込み権限を与える必要がある。

$ sudo chmod 777 /dev/ttyACM0 

スクリプト

キーボード配列を変えるたびに、上の手順を実行するのは大変なので、スクリプト化した。

update-kbd.sh

#!/bin/bash

keyboard=/dev/ttyACM
keymap=7skb:default

make $keymap:avrdude &
pid=$!

while :
do
  ls -1 ${keyboard}* 2>/dev/null
  if [ $? == 0 ]; then
    break
  fi
  sleep 1
done
sudo chmod 777 `ls -1 ${keyboard}*`

wait $pid
0
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
0
1