Nintendo SwitchのJoyConのhackを試してみる – その1

Nintendo SwitchのJoyConのhackを試してみる。

JoyConはBluetoothでPCに接続することができ、HIDゲームパッドとして認識される。
あとは通信プロトコルが分かれば、JoyConのhackができるのではないだろうか。

ということでJoyConのhackを試してみた。
Wiiリモコンhackのときと同じやりかたでとりあえずコントローラーのボタンは取れるようだ。
汎用HIDデバイスとしてアクセスして、USB-HIDと同様に入力用Reportというバッファからデータを読み出すというやり方だ。
参考:
WiiリモコンをPCで使うサンプルソフトを作ってみる

JoyConの挙動は、Wiiリモコンhackの基本動作モードのような動作をしているので、ボタンの状態が変化したときのみInputReportが取れて戻り値が返ってくる。
Reportの1バイト目は固定で0x3F。
Reportの2バイト目と3バイト目は各ボタンの状態が1bitずつ格納されている。
Reportの4バイト目はスティックの状態がHATスイッチ(8方向)として取れる。デジタルで0x00~0x08の値を取っている。

スティックのアナログ値の入力方法や、加速度センサーなどのセンサー値を取得をするためのモード変更は詳細不明だ。

出力用Reportというバッファにデータを色々と書き込んで、モード変更ができるか試してみる。

出力用Reportの1バイト目に0x01を書き込むとモードが変わって、即時に何らかのデータが入力用Reportに帰ってくる。
しかし、そのデータの内容はよく分からない。
Reportの1バイト目は固定で0x21。
Reportの2バイト目は、常にめまぐるしく値が変化していて、何なのかよく分からない。暗号のシード値(?)っぽい気がする。
Reportの10バイト目から12バイト目は、常に少しだけ値が変化しているのだが、スティックを操作すると値が大きく変化する。スティックのアナログ値が取れるのかと思ったのだが、スティックをニュートラル状態に戻しても操作する前の値に戻らない。常に何か積算とかされているような感じだ。

Wiiリモコンのヌンチャクなどのアナログ値の取得データが暗号化されていたので、それと似たような暗号化なのかもしれない。




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.

10 × 1 =