人生の暇潰し

オモシロイと思ったことを記録する

MacbookPro15inchでInfinityErgodoxに直接ファームを焼く話

前回のエントリーで、Macbook15inchに接続した状態ではqmk_firemwareのmakeコマンド経由で焼きこむことができなくて苦労した話を書いた。

hidekingerz.hatenablog.com

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