XBox ONE Wireless Controller über Bluetooth nutzen
Achtung!
Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.
Hinweis:
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Problembeschreibung¶
Der Microsoft XBox ONE Controller wird von Linux nur automatisch erkannt, wenn er mit einem USB-Kabel mit dem PC verbunden wird.
Der Controller kann aber auch wireless verwendet werden, er stellt ein Bluetooth-Gerät dar. Hat der PC einen Bluetooth-Host-Adapter, kann auf den (im Bild sichtbaren) USB-Adapter von Microsoft verzichtet werden!
Der Microsoft USB-Adapter wird in diesem Howto daher nicht verwendet. Auch der Kerneltreiber xpad
und der Userspace-Treiber xboxdrv
werden nicht verwendet.
Die Signalkette sieht vereinfacht so aus:
XBoxOne Controller → Bluetooth → Treiber joydev
→ /dev/input/js0
→ Steam 🇬🇧
Der XBox Controller ist per Bluetooth gekoppelt
Der Kerneltreiber
joydev
übernimmt die Verarbeitung und legt für jeden erkannten Controller ein Device an (/dev/input/jsX
). Der Treiber ist bereits in Ubuntu.Programme wie Steam oder auch der Joysticktest jstest-gtk verarbeiten die Daten aus dem Device
Anleitung¶
Bluetooth¶
Zuerst passen wir den Bluetooth-Stack an, Enhanced Retransmission Mode (ERTM) muss deaktiviert sein 🇬🇧, um es temporär zu tun gibt man als Superuser ein:
# echo 1 > /sys/module/bluetooth/parameters/disable_ertm
Für die dauerhafte Deaktivierung installiert man folgendes Paket.
sysfsutils
Befehl zum Installieren der Pakete:
sudo apt-get install sysfsutils
Oder mit apturl installieren, Link: apt://sysfsutils
Danach kann man in der Datei /etc/sysfs.conf
folgende Zeile anhängen:
module/bluetooth/parameters/disable_ertm = 1
Damit die Änderungen wirksam werden, wird im Anschluss der sysfsutils
Dienst neu gestartet:
sudo service sysfsutils restart
Nun sind wir bereit für die Verbindung. Es hat sich bewährt, das Verbinden von Bluetooth-Devices an der Kommandozeile durchzuführen, man erkennt dann in welchem Schritt es scheitert.
Über das Tool bluetoothctl
ist dies komfortabel möglich. Hat man eventuell schon mal versucht den Controller über eine Bluetooth-GUI zu verbinden, dann dort den Controller vor dem Aufruf von bluetoothctl
löschen!
Um den Controller in den Paring-Mode zu versetzen schaltet man ihn ein und drückt 3 Sekunden den Pairing-Button (an der Vorderseite, neben der USB-Buchse). Das weiße Licht am Controller blinkt jetzt in einem anderen Rhythmus.
An einer Shell geben wir bluetoothctl
ein. Daraufhin ändert sich der Prompt, man ist in der Bluetooth-Shell. Folgende Befehle sind für eine Kopplung nötig.
$ bluetoothctl [bluetooth]# power off [bluetooth]# power on [bluetooth]# scan on //you get messages like: [NEW] Device EC:83:50:B0:C6:DE Xbox Wireless Controller [bluetooth]# trust EC:83:50:B0:C6:DE [bluetooth]# pair EC:83:50:B0:C6:DE [bluetooth]# connect EC:83:50:B0:C6:DE
Hinweis:
Die oben angegebene MAC EC:83:50:B0:C6:DE
ist durch die des eigenen Controllers zu ersetzen! Eine MAC bezeichnet eindeutig ein Gerät und wird bei dessen Herstellung vergeben.
Hat das Verbinden funktioniert, schaltet die weiße Lampe am Controller auf Dauerlicht. Gerade im Befehl connect
kommt es immer wieder zu Problemen, eventuell hilft hier das Aus- Einschalten des Controllers (blinkenden Button 5 Sekunden drücken).
Test¶
Mit dem Programm jstest-gtk
lässt sich die Funktion überprüfen.
jstest-gtk
Befehl zum Installieren der Pakete:
sudo apt-get install jstest-gtk
Oder mit apturl installieren, Link: apt://jstest-gtk
Übersicht
Details
Steam¶
Auf dem Rechner ist Steam Build Dec. 12 2018 installiert. Steam erkannte den Controller selbstständig, es war kein Eingriff notwendig.
Links¶
Howto - Übersicht aller Howto-Artikel