2020/08/09

Zaunkoenig M1Kのカスタムファームウェアの書き込み方法

はじめに

クラウドファンディングで開発されたZaunkoenig M1Kが手元に届きました。

「マウスは軽量であればあるほどよい」というのは、物理的な法則として自明ですが、ここ数年でユーザ全体に定着しつつあります。そうした時流の中で「最低限のモノ以外を全て削ぎ落とし、極限まで軽量化したマウスはどうなるか?」という疑問に対して、明確に解答する素晴らしいマウスだと思います。

使い手は選びますが、競技AIM界隈の方などは検討されてはいかがでしょうか?
細かいレビュー等はデバイス界隈の方が積極的に発信されているので割愛します。


分解画像

とりあえず分解画像を置いておきます。


ファームウェアのカスタマイズについて

一般的なゲーミングマウスでは、ファームウェアはバイナリファイルという形で配布されており、ソースコードは公開されません。そのため内部のアルゴリズムなどを変更するためには、多大な手間と技術が要求されるリバースエンジニアリングが必要であり、非常に難しいものでした。M1Kの良いところは軽量である以上に、ファームウェアがオープンソースとして公開しており、ユーザが自由にカスタマイズできることです。

ファームウェアをカスタマイズできるということは、少し考えるだけでも以下のようなことが出来ます。

  • センサの出力に対して、独自に考案した補正アルゴリズムで適用することで、最強のトラッキング特性を持つマウスを作る
  • ハードウェアベースでのマウス加速を追加する
    • こうすることでソフトウェアベースのマウス加速ツールと違い、アンチチートソフトに誤認される*ようなことがなくなります
  • センサの設定をレジスタベルでチューニングする
  • マウスのCPI設定やポーリングレートについて独自の値をプリセットする
  • ボタンを追加してマウスホイールなどの機能を追加する
    • M1Kの基板には機能追加を前提として予備端子をはんだ付けすることができる場所が用意されています
  • クリックの応答速度を最適化する
    • (M1Kのファームウェアはoverclock.netで活躍されているqsxcvも関わっているので、かなり最適化されていると思いますが…)
などなど。夢が広がりますね。

*巷の噂によると、Valorantではマウス加速ツールの「InterAccel」が一時期ブロックされていたようです。



環境構築について

カスタムファームウェアを作るために、まずは環境構築をしてみましょう。

本ブログの大半の方はWindowsを利用されていると思いますので、Windows向けの手順について、マニュアルを翻訳して以下にアップロードしました。この手順通りにやれば問題なく環境構築できると思います。

日本語マニュアル: https://github.com/systema-tic/m1k-firmware/blob/master/README_JA.md

ファームウェアのビルド環境について

公開されている状態だとソースコードのビルド環境としてはLinuxを前提としているため、コンパイラをWindowsで動かすのはかなり面倒なようです。
WindowsにおけるAVR用コンパイラとしてはWin-AVRが有名ですが、古すぎて動作しないようです。最新のAVR Studioなどをインストールしてビルドする環境を整えることは一応できましたが、公開されている状態のソースコードをAVR Studioに適用するには、AVRでの開発経験とIDEへの理解の理解が必要なので、上級者向けだと思います。
今回の手順では、Windows上でLinux環境を簡単に動かすための仕組みであるWSLを導入することで解決しています。


ファームウェアの書き込み環境

こちらはコマンド操作が必要ですが、Windowsで動くツールがありますので、難しい手順はありません。


その他

とりあえず、ソースコードのビルド→マウスへの書き込みまで実施できました。
まだソースコードのカスタマイズ自体には手を出していないので、なにか成果があれば適宜GitHubに上げていこうと思います。