Raspberry PiにBluetoothでワイヤレス・ゲームパッドを接続するには

Raspberry PiにBluetooth方式のワイヤレス・ゲームパッドを接続してみました。

早速、↑↑↓↓・・・あのコマンドを入力すると、Raspberry Piが無敵化・・・せずに自爆しました。

それはさておき、接続手順を記録しておこうと思います。


Raspberry PiのXbox(One)ワイヤレスコントローラーBluetooth接続手順

Bluetooth対応Raspberry Pi

Bluetoothを搭載したRaspberry Pi Model B、OSはRaspbianを使用しました。Wi-Fi・Bluetooth内蔵のPi Zero Wも同じ手順で接続できるかと思います。

Raspbianの初期設定は、宜しければこちらの記事を御覧ください。


使用するワイヤレスゲームパッド

Windows 10 PCやAndroidスマートフォンとBluetooth接続が可能なこちらのゲームパッドを使用しました。白以外にカラーバリエーションが豊富です。ファントムブラックはスケルトン仕様で、Raspberry Piとデザイン的に相性が良さそうです。

詳細はこちらの記事になります。

※Raspberry Piとの接続(ペアリング)・使用はメーカーのサポート外かと思います。環境(機種やOS等)の違いで、ペアリングができない可能性も御座います。この記事は接続を保証するものではありません。ご了承下さい。


設定手順

ゲームパッドを接続すると、最終的に/dev/input/js0というデバイスとして認識されます。正しく認識されるために、つぎの3つのポイントがありました。

ポイント1:xboxdrvのインストール

  1. ゲームパッドのドライバー、xboxdrvをインストールしておきます。動作確認用のjoystickもインストールしました。

  2. 念の為再起動しておきます。

ポイント2:BluetoothのERTM無効化

Raspbianを使用した場合、Bluetoothは既定で有効でした。特に何も設定しなくても、Bluetoothを使用可能です。

一方、Bluetoothは既定でERTM(enhanced retransmission mode)が有効のようです。ゲームパッドを接続する場合、無効にする必要があるようです。

  1. モジュールのパラメータ、disable_ertmを有効にします。無効が「N」のようですので「Y」を書き込んでみました。

再起動は必要ありませんが、逆に再起動すると設定が戻ってしまいます。sysctlから設定を変更できると良いのですが、記述方法がよくわかりません・・・ここは改善の余地がありますね。


ポイント3:ペアリング時にbluetoothctlコマンドを併用

X Window Systemデスクトップの画面右上、Bluetoothアイコンの「Add Device」からデバイスを追加したいのですが、ゲームパッドが認識されませんでした。ターミナルを起動して、bluetoothctlコマンドを併用してペアリングを行いました。

  1. Xboxワイヤレスコントローラーの接続ボタンを3秒以上長押しして、ペアリングモードにします。(USB端子の近くにある小さいボタンです)
  2. ターミナルを起動し、bluetoothctlを起動します。
  3. agentの設定後、スキャンを有効にします。

    しばらく待つと「Xbox Wireless Controller」と表示されて、Raspberry PiがペアリングモードのXboxワイヤレスコントローラーを認識したことがわかります。
  4. pairコマンドでペアリング、またはデスクトップ画面上部のBluetoothアイコンをクリック、「Add Device」をクリックします。
  5. 表示されたXbox Wireless Controllerを選択、「Pair」ボタンをクリックします。しばらく待つと
  6. ペアリングが完了します。「OK」ボタンをクリックします。

ターミナルのbluetoothctlに、ペアリング中からペアリング完了のログが表示されますが、そちらでも正しくペアリングできたことを確認できます。


ゲームパッドの動作確認・キャリブレーション

jstestコマンドで動作確認できるようです。

キャリブレーションを行いたい場合、jstest-gtkをインストール後gtk版のjstestを起動してマッピングやキャリブレーションを設定する方法がやりやすいかと思います。


以上でRaspberry Piでワイヤレスゲームパッドが使えるようになりました。

大容量のmicroSDカードに

RetroPie等、/dev/input/jsデバイスに対応したソフトウェアをインストールして、ゲームパッドで遊ぶことができます。ワイヤレスですので、ケーブルの邪魔もありませんし、Raspberry Piへの電力的な負担もありません。

Minecraft Pi Editionは非対応のようですが、joy2keyやjoy2mouseコマンドで、ゲームパッドからキーボード/マウス入力を行って遊ぶ方法もあるようです。

その他にもRaspberry PiでIoTデバイスを作成する場合のコントローラーとして使用できそうです。ラジコンのようなものを作る場合も

ワイヤレスゲームパッドが使えると、6軸アナログの微妙な力加減が入力できますし、ボタンでLEDライトを点滅させたり、便利で楽しそうです。

いろいろと用途を考えると、Raspberry Piの応用範囲が広がりそうですね。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク