背景
xboxのコントローラーの形が自分は好きで、以前から気になっていたBluetooth機能付きのモデルで新しいものが出たので買ってみました。Ubuntuでの設定に苦労したので、備忘録を兼ねて方法を共有します。
使ったもの
- xboxのコントローラー
Series X向けに作られた2020年版のコントローラーです。
型番は1914のようです。
【純正品】Xbox ワイヤレス コントローラー + USB-C ケーブル
上記のリンクは黒のみUSBケーブル付きのPC向け版です。
他の色(白か青)が良ければ、USBケーブルが付いていない版もあります。
有線もしくは単3電池で給電しますが、バッテリーパックを使うと充電式なります。 - BLE機能が付いたUbuntu PC
利用したUbuntuは20.04で、カーネルのバージョンは5.4.0です。
Bluetooth機能が付いていなければ、Bluetoothアンテナが付いたUSBドングルを利用することでコントローラーを使えると思います。 - Windows10 PC
コントローラーのファームウェアの更新に利用します。
設定が出来た場合の登録の流れ
設定方法の共有の前に、動作確認方法を共有します。XboxのコントローラーのUSBポートの近くにあるペアリングボタンを長押しして、ペアリング開始
ペアリングモードになるとLEDが1秒未満の頻度で点滅します。UbuntuのBluetooth設定を開き、Xboxのコントローラーを登録
設定に不備があっても検索一覧にはxboxのコントローラーが出てきたので、出てこない場合は利用しているBluetooth装置がBLE機能を備えていない可能性があります。コントローラーをタップすると接続が始まります。
不具合が無い場合は、この手順でPCに登録されると同時に、コントローラーがペアリングされたと認識してLEDが常時光る状態になります。
jstestで入力内容を確認
ゲームパッドとして動いているならjstestで動きを見れます。jstestは下記のコマンドでインストールできます。
インストールしたらアプリ検索画面(Windowsボタンを押したら出てくる画面)でjoyと入力すると出てきます。
認識されていれば、ボタンの挙動が画面に反映されます。
参考: Can't connect xbox controller, (keeps disconnecting and connecting)
/etc/bluetooth/main.confはsudo権限での編集が必要なので、下記のようにsudo付きでエディタを起動すると編集できます。
上記の変更を追加したら下記のコマンドを実行するかPCを再起動するかして、Bluetooth機能を再起動してください。
カーネルのバージョンが5.9以上だとこの問題が解決しているという情報もあるので、将来的にこの設定は不要になりそうです。
この設定をしても動かない場合は下記のような関連するissueページを見てみてください。
[NOT FOR QUESTIONS] Bluetooth connection stability broken after kernel update #198
余談: この問題の対応としてdisable_ertmを有効にするという方法も見つけましたが、自分の環境では効果がありませんでした。
自分が試した時は 5.1.2482.0 から 5.5.2641.0 にバージョンアップされました。
そんな時は電池を抜いて再起動すると、復活する場合があります。
[NOT FOR QUESTIONS] Bluetooth connection stability broken after kernel update #198
古いコントローラーの設定方法やドライバに惑わされましたが、期待通りに繋がって良かったです。
コントローラーと一緒に紹介していた非公式大容量バッテリーパックがxbox One向けで今回利用したSeries X向けのとは形状が異なるものだったので、どちらでも使える純正バッテリーパックの紹介に変更しました。
2021.01.24
電池を抜いて再起動の手順を追加しました。
2024.10.05
コントローラの商品リンクが切れていたので更新しました。
sudo apt install jstest-gtk
インストールしたらアプリ検索画面(Windowsボタンを押したら出てくる画面)でjoyと入力すると出てきます。
認識されていれば、ボタンの挙動が画面に反映されます。
繋がらない、繋がっても認識されない: xpadneoをインストール
linuxでxboxのコントローラーを無線で使うためのドライバであるxpadneoをインストールします。
https://github.com/atar-axis/xpadneo
インストールコマンドは上記のページを参照してください。
参考として自分がUbuntu向けに実行したコマンドを共有します。
sudo apt-get install dkms linux-headers-`uname -r`
mkdir -p ~/gitprojects/xbox
cd ~/gitprojects/xbox
sudo apt install git
git clone https://github.com/atar-axis/xpadneo.git
cd xpadneo
sudo ./install.sh
繋がらなかったり、接続と切断を繰り返す: Privacy=deviceの設定を追加
この挙動は /etc/bluetooth/main.confの[General]の部分に Privacy=Device を追加することで、自分の環境では期待するように繋がるようになりました。参考: Can't connect xbox controller, (keeps disconnecting and connecting)
/etc/bluetooth/main.confはsudo権限での編集が必要なので、下記のようにsudo付きでエディタを起動すると編集できます。
sudo gedit /etc/bluetooth/main.conf
Privacy=device
上記の変更を追加したら下記のコマンドを実行するかPCを再起動するかして、Bluetooth機能を再起動してください。
sudo systemctl restart bluetooth
カーネルのバージョンが5.9以上だとこの問題が解決しているという情報もあるので、将来的にこの設定は不要になりそうです。
この設定をしても動かない場合は下記のような関連するissueページを見てみてください。
[NOT FOR QUESTIONS] Bluetooth connection stability broken after kernel update #198
余談: この問題の対応としてdisable_ertmを有効にするという方法も見つけましたが、自分の環境では効果がありませんでした。
それでも動かない: xboxのコントローラーのファームウェアを更新
Windowsが入ったPCにXbox アクセサリーをインストールして開き、コントローラーをUSBで接続すれば、ファームウェアの更新が可能な場合は更新ボタンが出てきます。自分が試した時は 5.1.2482.0 から 5.5.2641.0 にバージョンアップされました。
それでも動かない: コントローラーの電池を抜いて再起動
接続と切断を繰り返すと、意図しない内部状態になるのか、接続できなくなることがあります。そんな時は電池を抜いて再起動すると、復活する場合があります。
それでも動かない: xpadneoのカーネル関連のissueなどを確認してみる
下記のカーネルに関するスレッドやxpadneoのissueを検索してみるなどすると、解決方法が見つかるかもしれません。[NOT FOR QUESTIONS] Bluetooth connection stability broken after kernel update #198
まとめ
xbox series x向けの2020年版コントローラー(型番1914)をBLEで接続してUbuntuで利用できました。古いコントローラーの設定方法やドライバに惑わされましたが、期待通りに繋がって良かったです。
更新履歴
2021.01.03コントローラーと一緒に紹介していた非公式大容量バッテリーパックがxbox One向けで今回利用したSeries X向けのとは形状が異なるものだったので、どちらでも使える純正バッテリーパックの紹介に変更しました。
2021.01.24
電池を抜いて再起動の手順を追加しました。
2024.10.05
コントローラの商品リンクが切れていたので更新しました。
0 件のコメント :
コメントを投稿