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
InfinityErgodoxを作った話
紆余曲折あったが、InfinityErgodoxが届いたので組み立てた。
届くまでの経緯
次回以降InfinityErgodoxを買おうと思っている人の参考になればと思いここまでの経緯を記載する。
最初に記載しておくが、大量に発注がかかるようなもの(Amazing Chocolatie, Infinity Ergodox)は、予定よりも発送が遅れる傾向にあるようなので、予め発送が遅れても怒らない度量が必要だと思う。
- 2017/05/27にMassdropで購入。CherryMX赤軸をセットで注文。
- 2017/08/10に発送予定
- 2017/08/10を過ぎるも発送通知が来ないのでゆったり待つ。
- 発送通知が全く来なくて、みんな不安がる。
- 8月下旬。夏休み中だった発起人の夏休みが終わり、今ベンダーからパーツ配送されっから!とディスカッションボードに投稿される。
- ある一定確率で右手用のPCBボードが2枚届くという、Infinity Ergodoxガチャ祭り開催。
- 2017/10/02 手元にInfinity Ergodoxが届き、即日組み立てる。
ファームウェアの選定
ちなみに、InfinityErgodoxの発起人は悪くないのだけど、少し前の Massdrop系ファームウェア焼き込みのcontrollerが大改造されたらしく、1文字押すと全く関係のないキーが2文字押されるバグが含まれていた。
InfinityErgodoxを今回のロットで購入した人だと思うのだけど、こんなに高いキーボード買ってるのに、保守レベルがおかしいだろ!ってIssueで怒っている人がいたけれど、controllerの作者は関係ないと思うのでみんな苛立ってるんだなぁと思った。
controllerはキーマップファイルをこさえるのが直感的ではないのと、自分で関数を書いてどうのこうのができないので、qmk_firmwareを利用した方がいいと思う。Ergodoxの設定をキーマップ配置をコピーできるし。。。
ハードウェア的な所感
- Ergodoxと違い、ICやLCDがついているので、故障したときの交換はどうしようかなぁという感じ。
- 高いだけあって、スイッチプレートやアクリルの作りが良い。快適。
- 左手側のパームレストを固定する穴が、ねじのサイズよりも一回り大きく穴あけされているらしく、アクリルパーツが前後に少しずれるのが気になった。ワッシャーで厚みをかさ増しすれば良さそう。
- holtiteソケット対応してくれないかな。
ビルドログ
2ヶ月遅れだが届いた
InfinityErgodoxGacha ではなく、ちゃんとInfinityErgodox(両手用のPCB)が届いたことを確認。
holtiteソケット化は作りたいという欲望に負けた。
きっと2週間連続勤務というストレスもあったのだろうが、手元にソケットがなかったのと赤軸を触ってみた感じ悪くなかったので欲望に負けてはんだ付けしてしまった。
Firmwareの焼き込みにハマる。
MacBook Pro + KiiBohd Controller
2017/10/02の最新ブランチでは、コンパイルにも焼き込みにも成功するが、キーを押すと全く関係のないキーが2種類送信されてしまうバグがある。 Issueの中でも言われているが、Oldブランチは安定しているようだが、コンパイル毎にKIIファイルの最新をダウンロードしに行く動きをするようでパッチを当てなければならないらしい。
あまりに面倒なので、qmk_firemwareを利用することにした。
MacBook Pro + qmk-firmware
dfu-utilが、MacbookProだとBluetoothUSBホストコントローラーに対して焼き込みに行こうとしてしまうので失敗する事が判明。
$ system_profiler SPUSBDataType
Bluetooth USB Host Controller: Product ID: 0x8290 Vendor ID: 0x05ac (Apple Inc.) Version: 1.46 Speed: Up to 12 Mb/sec Manufacturer: Broadcom Corp. Location ID: 0x14300000 / 10 Current Available (mA): 500 Current Required (mA): 0 Extra Operating Current (mA): 0 Built-In: Yes
dfu-util -D で直接ファイルを指定しても何故かうまく動かず、原因特定は至ったが解決には至らず。。。 後から考えたら、直接デバイスファイルを指定できたので、そうすれば良かったかもしれない。
結局、この組み合わせは面倒になったのであきらめた。
Macbook + qmk-firmware
一発で成功。最初からこっちで焼き込みすればよかった。
USBケーブルの交換は失敗
純正ケーブルはUSB TypeC<->USB3ケーブルが2本ついてくるのだが、長さが両方共同じだったのでAmazonで下記ケーブルを購入してみた。
https://www.amazon.co.jp/gp/product/B0718ZGLWP/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1
Master <-> PC 間は正常に認識するが、Master <-> Slave間が通電してLCDは表示されるが、キーを押しても反応しない。うーむ。 ケーブルがUSB3じゃなくてUSB2だったのかもしれない。。。千石電商で探してみよう。
キースイッチをホットスワップできるLet's Splitを組み立てた話
会社の先輩がHoltite ソケット(8134-HC-8P2 or 8134-HC-8P3) が利用できる用にLet's SplitのPCBを改修したので1セット作ってみた。 キースイッチをホットスワップできるようになるので気分によってCherry青軸のようなクリッキーなキーや、ZealのようなTacticleスイッチを差し替えて使えるようになるので、非常に気分屋さんにはマッチすると思う。
ただしソケットをしっかりはんだで密着させている訳ではないので、剛性は下がっているはずだ。
今まではキーボードを作るたびにキースイッチをはんだ付けして固定していたので、ちょっと違うスイッチを使ってみたいときは1セット丸々作らなければならなかったが今後はLet's Splitであればキースイッチを差し替えて利用できるようになった。素晴らしい。
なお、該当のPCBやケースのデータはリポジトリに、作り方はビルドログこちらに纏まっている。
リポジトリとビルドログ
リポジトリ
ビルドログ
Let's Split Build Log · GitHub
Holtiteソケットとは
写真のようにソケットをPCBに圧着して、キースイッチやピンヘッダの脚が差し込めるようになる。 実装時の注意点は、スルーホールを突き抜けた際に、部品が曲がってしまうこと。
今回のキースイッチ
前回通常のLet's Splitに取り付けていた以下のスイッチを、はんだを剥がして再利用した。
[Pre-Order] R7 Purple Zealio Switches (Tactile)zealpc.net
- CherryMX互換のGateron社別注のキースイッチ。65gを購入。
- 押し心地は非常に滑らかで良いのだが、Gateron社が作っているだけあって、初回からチャタリングするスイッチがあったりと精度はあまりよくない。
- でも紫色だし、キースイッチは交換すればよいだけだから気長に付き合っていける人はいいと思う。
完成に至るまで
作り始める
まずはHoltiteソケットまでつけ終わったら、ProMicroも差し込んで動作テストを行う。Holtiteソケットはとても小さいので、先がきゅっとなっているピンセットは必須。
ケースにはめ込む
裏から見るとこのような形。綺麗。
完成
完成。
キースイッチとキーキャップを選ぶ時の話
キーボードにキースイッチとキーキャップを選定する時、色々な組み合わせに毎回悩む。
毎回悩んでいるので、探し回る先をまとめておく。
キースイッチ
CherryMX
www.jw-shop.com
CherryMXの赤・白・青・茶・黒軸を買うなら、日本なら多分ここが一番早くて安い。
神田にあるらしいけど、店頭販売はしていないのでオンラインで購入する。
Zeal
Keyboard Switcheszealpc.net Let’s Splitを組んだ時に採用したZealioを取り扱っている軸メーカー。
GroupByなので、欲しいときに買えないかもしれない。
選定サイト
キーキャップ
よく在庫切れになっているが、ergodoxyやlet’s split用のキーキャップが取り扱われている。
Groupbyなので好きな時に買えないが、デザインの良いキーキャップが取り扱われている。ただ、大量生産となるためか、グループ購入に参加しても手に入るのは半年から一年ぐらいかかることが多い。
Nyquistを作る話 第3話
完成した\(^o^)/ これからキーマップを作り込もう。
作る上での注意点
ステンレスケースとProMicroの干渉
ProMicroを取り付ける時にピンヘッダの帯を取って極力薄く仕上げたのだけれど、微妙にケースに設置してしまっていたらしく、以下のような事象が起きてしまった。
- 左手の3の列が反応しない。
- 右手のパーツが反応しない。
- 左手の一番左の列が反応しない。
ProMicroの半田を極力吸い取って平らにして、ケースに干渉しないようにした。
カールケーブルとケースの干渉
- カールケーブルとケースが干渉して最後まで刺さらない。ちゅうと半端に刺さったためProMicroが起動しない。
別ケーブルに取り替えて事なきを得た。
焼き込み
qmkfirmwareで焼き込める。コマンドは以下の通り。
Let’s Splitと同じように、以下のコマンドで焼き込むことができる。Nyquistはリセットスイッチがついているので、ProMicroをリセットするのが非常に楽ちん。素晴らしい。 後、l2c通信をするために今回抵抗を付け加えているのだけど、キーマップファイルに特にl2c用の設定を入れることなく動いてる。もう少し調べてみよう。
make nyquist-rev1-default-avrdude
Nyquistを作る話 第2話
現在作り中
ダイオードの取り付け
自分のPCBは特にジャンパは不要になっているようだ。作り方自体はレツプリと変わらない。
プレートの塗装とスイッチの取付
ステンレスの銀色だと少し物足りなかったので、タミヤのラッカー系塗料で塗ってみた。 ただし、膜が薄いのですぐに傷が付くことが後から発覚。やはりメッキのほうがいいのか。。。。
取り付け終わった。
Nyquist build log
imgur.com
なお、ケースが薄いタイプだったので、このビルドログに書いてあるように、ProMicroを取り付ける時にピンヘッダの黒い帯パーツは撤去している。
Nyquistを作る話 第1話
Nyquist
Let’s Splitよりも1段多い60%キーボード。今回はCherry青軸をチョイス。
InfinityErgodoxは右手パーツがが2つ届いちゃうガチャ状態らしいので、それまでの間にこれを作ってゆったり待つことにした。
届いた
発注したのは職場の先輩。:-)
参考
このビルドガイドを参考に作るとしよう。
Nyquist Build Guide · Nyquist Keyboard