Nintendo SwitchのProコントローラーをhackしてみる – その1

Nintendo SwitchのProコントローラーをhackしてみる。

Proコントローラーを手に入れた。(Amazonで買わず、近所のゲーム店で買った方が安かった。)

Nintendo Switch Proコントローラー(Amazon)

まずは分解して中を見てみた。
分解はまずグリップの先のネジを外すと、グリップをカバーしている部品を外すことができる。

グリップ部分にネジがあるので4本外すと、裏側の電池部分のカバーを取り外しできる。

電池パックは、携帯電話などの電池パックのように簡単に取り外せる。

さらにネジを外して分解すると、今度は表側の筐体を取り外しでき、基板が見えるところまで分解できる。

基板。右スティックの上にメッセージがある。

USB I/F用にSTMicroelectronics製のマイコンが使われている。

基板のボタン部品の端子に電線を半田付けする改造をして、配線を取り出せば自作ジョイスティックとかの改造ができそうだ。

ProコントローラーはBluetoothでPCに接続すると、特にhackをしなくても一般的なゲームコントローラーとして動作する。
Nintendo SwitchのProコントローラーはPCにも対応
ちなみに、USB接続の有線ではPCで使うことはできないらしい。

JoyConのhackと同様な方法で、HIDデバイスの入力用Reportを読み出すとボタンとスティックの情報をリアルタイムに読み出すことができる。
参考:
Nintendo SwitchのJoyConのhackを試してみる – その1

加速度センサーやジャイロセンサーといったモーションセンサーの値は取れないようだ。
JoyConと同様で何らかのプロトコルでコマンドを送信して内部のモードを切り替える必要があるのかもしれない。

出力用Reportに0x01から始まるデータをいろいろ書き込んで試してみた。
Reportの1バイト目は、0x01を書き込む。
Reportの2バイト目と3バイト目は不明。(とりあえず0x00にしておく)
Reportの4バイト目から10バイト目までは、いろいろと値を変化させて書き込みするとHaptic振動モジュールが振動した。
Reportの11バイト目は、0xE7を書き込むとProコントローラーを強制スリープさせることができる。(なので普段は0x00にしておく)

とりあえず何らかの振動が発生することが分かったのだが、どういうデータを送ってやればどう振動するのかがさっぱり分からない。

このHaptic振動モジュールは、ALPS製で以前からNintendo Switchに採用のものではないかと噂されていた。
2016年のCEATECにおけるアルプス電気の触覚フィードバック部品のデモ。ボールを床の上に落としたときの振動を再現している Switchの真価はJoy-Conにあり、「HD振動」はVRへの布石? – 日経テクノロジーオンライン

使い方については、スピーカーのように音の波形をそのまま電圧として加えれば振動が発生するらしい。
Switch発売日にJoy-Conを分解してテクタイルツールキットを作って遊んでいる

このあたりが参考になるということだ。
テクタイルツールキット
ここではDSの振動カートリッジのフォースリアクタを使っている。
(自分もDS振動カートリッジの海外版とかを分解してたのだが、使い方を調べていなかった。)
フォースリアクタとHD振動モジュールは基本的に同じように使うことができるらしい。

6 thoughts on “Nintendo SwitchのProコントローラーをhackしてみる – その1

  1. かむ。

    L、R、ZL、ZRボタンのパーツ周りはどのようになっていますでしょうか。
    モンハンをするときに LとRが押しにくいので LをZLに入れ替えたいのですが。。

    返信
    1. kako 投稿作成者

      LボタンとZLボタンの入れ替え(あるいはRボタンとZRボタンの入れ替え)は、部品を取り外して違う位置に取りつけ直すということでしょうか?
      ボタンの大きさが違うので、部品の位置の入れ替えは難しいと思います。

      ボタンの電気配線を入れ替えて、LボタンとZLボタンの機能を入れ替えるのならば、基板の配線をパターンカットしてジャンパー線で入れ替えて半田付けすれば出来そうな気がします。

      返信
  2. かむ。

    お返事ありがとうございます。
    配線入れ替えのほうですが
    他のパッドのL(R)ボタンのように もともとある配線を入れ替えるだけではなく、
    基盤に印刷されたパターンを削って そこに配線するということでよろしかったでしょうか。

    返信
    1. かむ。

      解体してL(R)の部品周りを確認してみましたが
      どうも自分の技術では無理そうですのであきらめます、ありがとうございました!

      返信
  3. 渡辺アニサス

    渡辺アニサスと申します。
    この度はkakoさんに何点か聞きたいことがあり、コメントさせていただきました。
    この度自分は「スプラトゥーン2」をヘッドマウントディスプレイでプレイしたいと考えました。
    スプラトゥーンのジャイロ操作とヘッドマウントをつけた頭の動きをどうにかリンクさせたいと考えていたのですがどうも難しく、
    自分が考えられる限りではproコントローラーのジャイロセンサーを取り外し延長させ
    ヘッドマウントに固定する という考えしかできませんでした。
    そうしてジャイロセンサーのことが記載してあるこのページにたどり着きました。
    もし可能であるならば、ご教授いただけないでしょうか。

    返信
    1. kako 投稿作成者

      Proコントローラーからジャイロセンサーを取り外して延長させるというのは困難ではあるものの可能だと思います。
      しかし、Proコントローラーの基板からスティックやボタンを取り外して延長するほうが容易だと思います。

      返信

コメントを残す

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

Time limit is exhausted. Please reload CAPTCHA.

33 − = 30