MacbookPro15inchでInfinityErgodoxに直接ファームを焼く話
前回のエントリーで、Macbook15inchに接続した状態ではqmk_firemwareのmakeコマンド経由で焼きこむことができなくて苦労した話を書いた。
Macbook12inch経由ならうまく行ったのだけど、やっぱりメインで使っているMacbookPro15inchから直接ファームを焼けたほうが便利なことには違いないのでちょっと検証してみた。
結論として、Teensy2.0のようにhexファイルを焼き込むのではなく、.buildディレクトリ内に生成されるbinファイルを焼き込む必要があったので詳しくは以下を参照して頂きたい。
リセット前後の認識のされ方の違い
system_profiler SPUSBDataTypeにおけるデバイスの認識結果と、dfu-utilのブートローダーの認識結果を比較すると状況が見えてくる。
InfinityErgodoxのリセット前
GINSUKE:.build exthirix$ system_profiler SPUSBDataType
Infinity keyboard/TMK: Product ID: 0x6464 Vendor ID: 0xfeed Version: 0.01 Serial Number: 0xDEADBEEF Speed: Up to 12 Mb/sec Manufacturer: TMK Location ID: 0x14100000 / 22 Current Available (mA): 500 Current Required (mA): 100 Extra Operating Current (mA): 0
InfinityErgodoxとして認識しており、パスはfeed:6464である。
GINSUKE:.build exthirix$ dfu-util --list dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2016 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
Found Runtime: [05ac:8290] ver=0146, devnum=10, cfg=1, intf=5, path="20-8", alt=0, name="UNKNOWN", serial="UNKNOWN
dfu-utilとしては認識していない。
InfinityErgodoxのリセット後
GINSUKE:.build exthirix$ system_profiler SPUSBDataType
Kiibohd DFU Bootloader: Product ID: 0xb007 Vendor ID: 0x1c11 Version: 0.00 Serial Number: mk20dx256vlh7 Speed: Up to 12 Mb/sec Manufacturer: Kiibohd Location ID: 0x14100000 / 28 Current Available (mA): 500 Current Required (mA): 200 Extra Operating Current (mA): 0
InfinityErgodoxとしてではなくBootloaderとして認識しており、パスは1c11:b007で認識される。
GINSUKE:.build exthirix$ dfu-util --list dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2016 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
Found Runtime: [05ac:8290] ver=0146, devnum=10, cfg=1, intf=5, path="20-8", alt=0, name="UNKNOWN", serial="UNKNOWN" Found DFU: [1c11:b007] ver=0000, devnum=15, cfg=1, intf=0, path="20-1", alt=0, name="Kiibohd DFU", serial="mk20dx256vlh7"
1c11:b007のパスが増えていることに注目。なお、このパスは右手用/左手用共に同一だった。
ここまでの結果からみた推察
つまり、dfu-utilで書き込むためには、InfinityErgodoxを一度リセットモードにして、その状態で認識されたパス1c11:b007に対して直接書き込んでやれば良さそう。
実際に焼きこんで見る。
qmk_firemware的には、タダのErgodoxのファームを焼き込むときは、Teency2.0にhexファイルを焼き込めば良かったが、InfinityErgodoxはbinファイルを焼き込む必要がありそうだったが真偽の程は判らなかったので、両方検証してみた結果、binファイルを焼き込む必要があった。
hexファイルとbinファイルの生成のされ方
コマンドによってhexファイルだけ生成されるので、dfu-utilをつける必要がある事に注意。
hexファイルのみ生成する。
make ergodox_infinity-keymapname
hexファイルとbinファイルの両方を生成する。(右手用/左手用ファイルの生成)
sudo make ergodox_infinity-keymapname-dfu-util
sudo make ergodox_infinity-keymapname-dfu-util master=right
binファイルを直接焼き込む
以下のコマンドで直接焼き込める。
sudo dfu-util -d 1c11:b007 -D ergodox_infinity_keymapname.bin