Docker で Teensy に .hex をロードする
Teensy Loader CLI を Dockerize したら便利だった話
3 min readNov 17, 2017
動機
- ローカルに色々インストールしたくない
前提
- ホストと Teensy は USB で接続されている
- qmk_firmware の Dockerfile も使う
- Linux での話 (Docker for ○○ では USB をマウントできない予感)
使い方
qmk_firmware は既に Dockerize されているおり、これと合わせて minodisk/teensy_loader を使うことで .hex のビルドから Teensy への書き込み、Teensy のリブートまでの全工程が Docker 内で完結する。
qmk_firmware/docker-compose.yml
を用意する。
version: '2'
services: qmk_firmware:
build: .
environment:
keyboard: ergodox_ez
subproject:
keymap: default
volumes:
- .:/qmk
- /qmk/.build teensy_loader:
image: minodisk/teensy_loader:0.0.1
depends_on:
- qmk_firmware
privileged: true
environment:
hex: ergodox_ez_default
volumes:
- /dev/bus/usb:/dev/bus/usb
volumes_from:
- qmk_firmware
ビルドし起動する。
docker-compose build
docker-compose up
- qmk_firmware コンテナで .hex をビルドする
- teensy_loader コンテナでは、qmk_firmaware コンテナと共有したボリュームに .hex ファイルが生成されるのを待って teensy_loader_cli を wait モードで起動する
- 物理的に Teensy のリセットボタンを押す (キーに
RESET
をマップしている場合はそのキーを押しても良い) - teensy_loader コンテナの teensy_loader_cli が .hex を Teensy に書き込みリブートする
という感じ。
感想
便利