要約

  • Bluetooth コントローラをエミュレートすることでPC からNintendo Switch の操作が可能です
  • いくつかOSS が公開されていますがSwitch のバージョンアップに追従する必要があるらしく、2022年12月現在はNXBT というソフトウェアで動作に成功しました
  • Bluetooth は内蔵のものではなく外付けのUSB ドングルを使用します
  • MAC アドレスの先頭をNintendo 製品レンジの 94:58:CB: に変更しておく必要があります
  • Raspberry Pi でも動作したためここに備忘録として残します

Raspberry Pi のセットアップ

  • 本体初期設定は本題ではないため飛ばします
  • pip の最新かとBT 周りのutility のインストール
sudo apt update
sudo apt install -y python3-pip
sudo apt install -y git
sudo apt install -y python3-dbus
sudo apt install -y libhidapi-hidraw0
sudo apt install -y libbluetooth-dev
sudo apt install -y bluez 

Bluetooth モジュールのMAC アドレスを変更する

  • Raspberry Pi に外付けBluetooth ドングルを接続
  • 今回は家に転がっていたこちらを使用しました(一発で動いたため相性問題があるかどうかは不明)
  • Nintendo Switch にコントローラとして認識されるために、 MAC アドレスの先頭をNintendo 製品のMAC アドレスレンジに合わせて 94:58:CB: に書き換えておく必要があるそうです
  • (気持ちの問題ですが)変更前の値を確認
hciconfig
  • 下記コマンドを実行してMAC アドレスを書き換え
sudo bccmd psset -s 0 bdaddr 0x44 0x00 0x66 0x55 0xCB 0x00 0x58 0x94
sudo bccmd warmreset
sudo systemctl restart bluetooth.service
  • もう一発MAC アドレス表示してみて変更されたことを確認
hciconfig

NXBT の導入

  • NXBT のインストール
sudo pip3 install nxbt
  • Nintendo Switch を操作して、コントローラの持ち方/順番を変える の画面を起動 コントローラ追加画面

  • 試しにTUI を起動してみます

sudo nxbt tui
  • しばらく待つとPROコントローラとしてSwitch にペアリングされます

  • 早い時はすぐ繋がるのですが、不安になるくらい待たされることもあるので心穏やかに待ちましょう コントローラ追加成功 TUI

  • 接続成功したらキーボード入力でSwitch が操作できるようになります

  • すごい!

NXBT Web アプリの起動

  • めちゃくちゃ綺麗なGUI も用意されています

  • すごすぎません?

  • ローカルでweb サーバが建ち上がるので別PC からでもhttp://{Raspberry Pi のローカルIP}:8000 で表示できます GUI

  • Controll Macro 欄にコマンドを入力して実行すればお手軽に作業の自動化も出来ます

  • 頑張ってセットアップしておいてなんですが、どうせやりたいことはA ボタン連打とかその程度なので例として載せておきます

LOOP 1000000
    A 0.1S
    0.3S

まとめ

  • 科学の力ってすげー!

参考