Raspberry PiでNintendo Switchのプロコンと、PlayStation3のコントローラを使う方法を説明します。
PS3は多くの解説記事がありますが、自分の忘備録として記載します。
環境
- Raspberry Pi 4 Model B or Rasberry Pi 3 Model B++
- Ubuntu Server 18.04
- Nitendo Switch プロコン
- PlayStation3 コントローラ
Raspberry Piのセットアップ
こちらの記事でUbuntu ServerでBluetoothを有効化する方法を記載したので、記事に従ってRaspberry Piをセットアップし、Bluetoothを有効化します。
プロコンの接続
プロコンをRaspberry Piに接続します。プロコンはBluetoothデバイスとして認識されるので、接続は簡単です。
Bluetoothサービスの起動
$ sudo systemctl status bluetooth
$ sudo systemctl start bluetooth
# もし実行できなかった場合は、以下ファイルに実行権限を付与して再度起動
$ sudo chmod +x /usr/lib/bluetooth/bluetoothd
$ sudo systemctl start bluetooth
一般ユーザでbluetoothデバイスが使えるように権限を付与
$ sudo usermod -a -G bluetooth {使用しているユーザアカウント}
$ sudo reboot
プロコンのペアリング
$ bluetoothctl
$ [bluetooth] scan on
{プロコンが認識されるはずなので、MACアドレスをコピー}
$ [bluetooth] pair {MACアドレス}
$ [bluetooth] trust {MACアドレス}
$ [bluetooth] connect {MACアドレス}
$ [bluetooth] exit
上記の手順でプロコンのペアリングが完了です。
デフォルトだとdev/input/js0
が生成され、これがプロコンになります。ただし、rootユーザでしか使用できないので、一般ユーザで使えるように権限を付与します。
$ sudo chmod a+rw /dev/input/js0
以上でプロコンが使用可能になります。jstest /dev/input/js0
などで確認ができます。
また、Raspberry Piを再起動した後も、bluetoothサービスが有効になっていれば、プロコンのキーを押すだけで再ペアリングされます。
PlayStation3 コントローラの接続
こちらは検索すると多くの記事が見つかるので、それらも参考にしてください。
はじめにlibusb
をインストールします。
$ sudo apt install libusb-dev
次に、sixpairとqtsixaというソフトウェアを使用するのでインストールします。
sixpairのインストール
$ mkdir sixpair
$ cd sixpair
$ wget "https://help.ubuntu.com/community/Sixaxis?action=AttachFile&do=get&target=sixpair.c" -O sixpair.c
$ gcc -o sixpair sixpair.c -lusb
qtsixaのインストール
必要なライブラリのインストール
$ sudo apt install python-qt4 pyqt4-dev-tools qt4-designer
$ sudo apt install libjack-jackd2-dev
$ sudo apt install libbluetooth-dev
qtsixa
$ git clone https://github.com/falkTX/qtsixa.git
$ cd qtsixa
$ make
$ sudo make install
ペアリング
まず、USBケーブルでコントローラを接続し、PSボタンを押します。正しく認識されるとlsusb
コマンドでコントローラが表示されます。
次に、sixpairを実行します。
sudo ./sixpair
USBケーブルを外し、以下コマンドを実行します。
$ sudo sixad -start &
すると、sixad started, press the PS button now
というようなメッセージが表示されるので、PSボタンを押します。
接続に成功した旨のメッセージが表示され、またコントローラの4つのランプのうち1つが点灯していれば接続成功です。
こちらも$ sudo jstest /dev/input/js0
でキー入力が確認できます。