Docker で Teensy に .hex をロードする

Teensy Loader CLI を Dockerize したら便利だった話

Daisuke Mino
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
  1. qmk_firmware コンテナで .hex をビルドする
  2. teensy_loader コンテナでは、qmk_firmaware コンテナと共有したボリュームに .hex ファイルが生成されるのを待って teensy_loader_cli を wait モードで起動する
  3. 物理的に Teensy のリセットボタンを押す (キーに RESET をマップしている場合はそのキーを押しても良い)
  4. teensy_loader コンテナの teensy_loader_cli が .hex を Teensy に書き込みリブートする

という感じ。

感想

便利

リンク

--

--