人生の暇潰し

暇つぶしの記録

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

InfinityErgodoxを作った話

f:id:hidekingerz:20171003223516j:plain

紆余曲折あったが、InfinityErgodoxが届いたので組み立てた。

届くまでの経緯

次回以降InfinityErgodoxを買おうと思っている人の参考になればと思いここまでの経緯を記載する。
最初に記載しておくが、大量に発注がかかるようなもの(Amazing Chocolatie, Infinity Ergodox)は、予定よりも発送が遅れる傾向にあるようなので、予め発送が遅れても怒らない度量が必要だと思う。

  1. 2017/05/27にMassdropで購入。CherryMX赤軸をセットで注文。
  2. 2017/08/10に発送予定
  3. 2017/08/10を過ぎるも発送通知が来ないのでゆったり待つ。
  4. 発送通知が全く来なくて、みんな不安がる。
  5. 8月下旬。夏休み中だった発起人の夏休みが終わり、今ベンダーからパーツ配送されっから!とディスカッションボードに投稿される。
  6. ある一定確率で右手用のPCBボードが2枚届くという、Infinity Ergodoxガチャ祭り開催。
  7. 2017/10/02 手元にInfinity Ergodoxが届き、即日組み立てる。

ファームウェアの選定

ちなみに、InfinityErgodoxの発起人は悪くないのだけど、少し前の Massdrop系ファームウェア焼き込みのcontrollerが大改造されたらしく、1文字押すと全く関係のないキーが2文字押されるバグが含まれていた。
InfinityErgodoxを今回のロットで購入した人だと思うのだけど、こんなに高いキーボード買ってるのに、保守レベルがおかしいだろ!ってIssueで怒っている人がいたけれど、controllerの作者は関係ないと思うのでみんな苛立ってるんだなぁと思った。

github.com

controllerはキーマップファイルをこさえるのが直感的ではないのと、自分で関数を書いてどうのこうのができないので、qmk_firmwareを利用した方がいいと思う。Ergodoxの設定をキーマップ配置をコピーできるし。。。

github.com

ハードウェア的な所感

  • Ergodoxと違い、ICやLCDがついているので、故障したときの交換はどうしようかなぁという感じ。
  • 高いだけあって、スイッチプレートやアクリルの作りが良い。快適。
  • 左手側のパームレストを固定する穴が、ねじのサイズよりも一回り大きく穴あけされているらしく、アクリルパーツが前後に少しずれるのが気になった。ワッシャーで厚みをかさ増しすれば良さそう。
  • holtiteソケット対応してくれないかな。

ビルドログ

2ヶ月遅れだが届いた

f:id:hidekingerz:20171003223436j:plain

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やケースのデータはリポジトリに、作り方はビルドログこちらに纏まっている。

リポジトリとビルドログ

リポジトリ

github.com github.com

ビルドログ

Let's Split Build Log · GitHub

Holtiteソケットとは

f:id:hidekingerz:20170928015649j:plain

写真のようにソケットをPCBに圧着して、キースイッチやピンヘッダの脚が差し込めるようになる。 実装時の注意点は、スルーホールを突き抜けた際に、部品が曲がってしまうこと。

今回のキースイッチ

前回通常のLet's Splitに取り付けていた以下のスイッチを、はんだを剥がして再利用した。

[Pre-Order] R7 Purple Zealio Switches (Tactile)zealpc.net

  • CherryMX互換のGateron社別注のキースイッチ。65gを購入。
  • 押し心地は非常に滑らかで良いのだが、Gateron社が作っているだけあって、初回からチャタリングするスイッチがあったりと精度はあまりよくない。
  • でも紫色だし、キースイッチは交換すればよいだけだから気長に付き合っていける人はいいと思う。

完成に至るまで

作り始める

f:id:hidekingerz:20170928020157j:plain まずはHoltiteソケットまでつけ終わったら、ProMicroも差し込んで動作テストを行う。Holtiteソケットはとても小さいので、先がきゅっとなっているピンセットは必須。

ケースにはめ込む

f:id:hidekingerz:20170928020400j:plain f:id:hidekingerz:20170928020423j:plain 裏から見るとこのような形。綺麗。

完成

f:id:hidekingerz:20170928020512j:plain 完成。

キースイッチとキーキャップを選ぶ時の話

キーボードにキースイッチとキーキャップを選定する時、色々な組み合わせに毎回悩む。
毎回悩んでいるので、探し回る先をまとめておく。

キースイッチ

CherryMX

www.jw-shop.com CherryMXの赤・白・青・茶・黒軸を買うなら、日本なら多分ここが一番早くて安い。
神田にあるらしいけど、店頭販売はしていないのでオンラインで購入する。

Zeal

Keyboard Switcheszealpc.net Let’s Splitを組んだ時に採用したZealioを取り扱っている軸メーカー。

GroupByなので、欲しいときに買えないかもしれない。

選定サイト

キーキャップ

pimpmykeyboard.com

よく在庫切れになっているが、ergodoxyやlet’s split用のキーキャップが取り扱われている。

www.massdrop.com

Groupbyなので好きな時に買えないが、デザインの良いキーキャップが取り扱われている。ただ、大量生産となるためか、グループ購入に参加しても手に入るのは半年から一年ぐらいかかることが多い。

Nyquistを作る話 第3話

完成した\(^o^)/ これからキーマップを作り込もう。

f:id:hidekingerz:20170916201123j:plain

f:id:hidekingerz:20170916202800j:plain

作る上での注意点

ステンレスケースとProMicroの干渉

ProMicroを取り付ける時にピンヘッダの帯を取って極力薄く仕上げたのだけれど、微妙にケースに設置してしまっていたらしく、以下のような事象が起きてしまった。

  • 左手の3の列が反応しない。
  • 右手のパーツが反応しない。
  • 左手の一番左の列が反応しない。

ProMicroの半田を極力吸い取って平らにして、ケースに干渉しないようにした。

カールケーブルとケースの干渉

  • カールケーブルとケースが干渉して最後まで刺さらない。ちゅうと半端に刺さったためProMicroが起動しない。

別ケーブルに取り替えて事なきを得た。

焼き込み

qmkfirmwareで焼き込める。コマンドは以下の通り。

github.com

Let’s Splitと同じように、以下のコマンドで焼き込むことができる。Nyquistはリセットスイッチがついているので、ProMicroをリセットするのが非常に楽ちん。素晴らしい。 後、l2c通信をするために今回抵抗を付け加えているのだけど、キーマップファイルに特にl2c用の設定を入れることなく動いてる。もう少し調べてみよう。

make nyquist-rev1-default-avrdude

Nyquistを作る話 第2話

現在作り中

ダイオードの取り付け

f:id:hidekingerz:20170916161239j:plain

自分のPCBは特にジャンパは不要になっているようだ。作り方自体はレツプリと変わらない。

プレートの塗装とスイッチの取付

f:id:hidekingerz:20170916161422j:plain

ステンレスの銀色だと少し物足りなかったので、タミヤのラッカー系塗料で塗ってみた。 ただし、膜が薄いのですぐに傷が付くことが後から発覚。やはりメッキのほうがいいのか。。。。

f:id:hidekingerz:20170916161603j:plain

取り付け終わった。

Nyquist build log
imgur.com

なお、ケースが薄いタイプだったので、このビルドログに書いてあるように、ProMicroを取り付ける時にピンヘッダの黒い帯パーツは撤去している。

Nyquistを作る話 第1話

Nyquist

Nyquist · Nyquist Keyboard

Let’s Splitよりも1段多い60%キーボード。今回はCherry青軸をチョイス。
InfinityErgodoxは右手パーツがが2つ届いちゃうガチャ状態らしいので、それまでの間にこれを作ってゆったり待つことにした。

届いた

発注したのは職場の先輩。:-)

f:id:hidekingerz:20170915011218j:plain

参考

このビルドガイドを参考に作るとしよう。
Nyquist Build Guide · Nyquist Keyboard