staging.inyokaproject.org

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:

Diese Howto-Anleitung wurde zuletzt von Limag am 22.12.2018 unter Ubuntu 18.04.1 LTS erfolgreich getestet.

Diese Howto-Anleitung wurde zuletzt von pygospa am 21.09.2020 unter Ubuntu 20.04.1 LTS erfolgreich getestet.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Problembeschreibung

xbox-one 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/js0Steam 🇬🇧

  1. Der XBox Controller ist per Bluetooth gekoppelt

  2. 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.

  3. 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
jstest1

Details
jtest2

Steam

Auf dem Rechner ist Steam Build Dec. 12 2018 installiert. Steam erkannte den Controller selbstständig, es war kein Eingriff notwendig.

  • Howto - Übersicht aller Howto-Artikel

Diese Revision wurde am 21. September 2020 18:08 von pygospa erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Howto