先月購入したXboxワイヤレスコントローラーについてですが、実は他のBluetoothデバイスのように素直に接続することができず、ちゃんと接続できるようにするまでに結構時間がかかってしまったんですね。

久々にブログを書く時間が取れたので、これについてまとめておきます。

環境条件

OS:Ubuntu 20.04LTS

症状

ペアリングについてのダイアログが何度も表示される

ペアリングを実行してみても、何回か同じダイアログが表示されたり、場合によってはフリーズしたりと、動作がおかしくなります。

仮にペアリングができても、色々とおかしい

ペアリング後も点滅が止まらない

コントローラーをペアリング可能なモードに変更すると、Xboxマークが高速で点滅すると思うのですが、ペアリングが実行された後もそのまま点滅し続ける。

再起動するとコントローラーが効かなくなる

点滅し続けていても一応使えたんですが、一旦再起動しちゃうと、全く使えなくなりました。 一応表面上は接続されているものの、実際にゲームで入力すると、全く反応がありません。

正しく接続するには

コントローラーを最新の状態にアップデートする

このコントローラーは、スマホのようにアップデートする機能がついています。 中身が古いソフトウェアのままだと上手く接続できないらしいです。

アップデートはXboxを利用する方法だけでなく、PC(Windows)と接続することでも可能になっています。

BLEに対応したBluetoothドングルを用意する

このXboxワイヤレスコントローラーはBLE(Bluetooth Low Energy)という規格のLE Privacyという仕組みを使って動作しているので、受信側もそれに対応しておく必要があります。

といっても、いま売られているドングルはほとんどがBLEに対応していると思いますので、使っているドングルが古かったら買い直す、という程度の話ですね。

一応LEプライバシーについての参考記事を貼っときます。 Bluetooth 4.2 セキュリティ対策の仕組み (1/3) - EDN Japan

xpadneoをインストール

xboxコントローラー用のドライバの中では、かなり新しい&機能豊富なドライバソフトです。 今のところ唯一xpadneoだけがこのコントローラに対応しているので、必須ソフトになります。

インストールについては、“Prerequisites”のDebianに関する部分と”Installation”の部分を指示通りやるだけです。 “Connection”以降の部分はスルーでOK。

GitHub - atar-axis/xpadneo: Advanced Linux Driver for Xbox One Wireless Controller (shipped with Xbox One S)

プライバシーモードをONにしてペアリングで完了

ここまでが準備工程で、あとはペアリングするための簡単な処理と実際にペアリングをするだけになります。

ペアリングにはBLEのLEプライバシーを利用するので、それに対応するために/etc/bluetooth/main.confに次の1行を追記。

Privacy=device

あとは通常のBluetooth端末のペアリングと同じようにするだけで、正常にペアリングしてくれるはず。 一度ペアリングが済んでしまえば、PC再起動後であっても、特に問題なく接続できるようになります。

Linuxカーネルを新しくしてみる

これでもダメなときはカーネルを最新にするといいみたいです。 実際バージョン5.9では不具合が出るという情報が上がってました。

僕の方はというと、マザーボードのサウンドチップが最新すぎたという理由で既にカーネルを最新の5.10.4へ変更していたのですが、このバージョンではコントローラーの方も問題なく使えています。

LTSを使ってるのにカーネルを弄るっていう矛盾が生じてしまうんですが、買ってしまった以上とにかく動かしたい訳なんで、そこはまぁ…。

接続するまでがちょっと面倒に思えますけど、やっぱワイヤレスって便利ですからね〜。