VIRPIL und VKB HOTAS unter Linux (Steam) zum Laufen bekommen.

Tipps, Tricks und Anleitungen rund um Technik und Hardware
Antworten
Benutzeravatar
Pit Cock
Beiträge: 48
Registriert: So 4. Sep 2022, 17:18
Hat sich bedankt: 128 Mal
Danksagung erhalten: 99 Mal

VIRPIL und VKB HOTAS unter Linux (Steam) zum Laufen bekommen.

#1

Achtung: Der hier vorgestellte Fix funktioniert nicht mehr mit aktuellen Proton Versionen. Habt ihr diese Version des Fixes drin und eure Controller funktionieren nicht mehr, dann schaut euch das Update im nächsten Beitrag an.

Ihr habt Linux installiert und wollt via Steam Elite Dangerous zocken? An und für sich ist das heute kein Problem mehr, da Linux von Steam unterstützt wird, und viele auf Steam erhältliche Spiele auch unter Linux lauffähig sind. Manche mit Einschränkungen, andere laufen auf einem Linux-Rechner vielleicht sogar besser als unter Windows. Aber dann kommt es doch immer mal wieder vor, dass die geliebte Hardware streikt, oder sich nicht so verhält wie sie es sollte. So auch diverse HOTAS (Schubregler und Joysticks) die von Steam (oder besser gesagt von Proton) falsch interpretiert und eingebunden werden.

Lange Rede gar kein Sinn: Hier kommt die Anleitung wie ich meine geliebten VIRPIL Schubregler und Joysticks für Elite fit gemacht habe. In der Theorie sollte das auch für alle anderen HOTAS funktionieren, kann ich aber nicht garantieren, weil ich es nicht testen kann.

Das Problem: Die Geräte werden zwar am USB-Port erkannt, aber falsch eingebunden. Proton, das ist die Software die die Kompatiblitätsschicht zu Windows zur Verfüngung stellt, bindet diese Geräte als X-Box Gamekontroller ein. Das geht natürlich gründlich in die Hose, und VIRPILs und VKBs werden somit in Elite unter Linux unbrauchbar. Das müssen wir abstellen, indem wir in der Registry, die steuert wie die Hardware eingebunden wird, einige Änderungen vornehmen.

Ich zeige euch den Weg anhand einer Linux-Mint (Version 22.1). Auf anderen Distributionen kann der Weg leicht unterschiedlich sein.

Das wine-Paket muss installiert sein, damit wir unter Linux den Registry-Editor starten können. Ist wine bei euch nicht installiert könnt ihr das normalerweise ganz einfach über die Anwendungsverwaltung (bzw. Paketmanager oder wie auch immer das bei eurer Distribution heißt) nachinstallieren.
Oder ihr macht das über die Konsole. Bei einer auf Ubuntu-Linux basieren Distribution wie Linux-Mint ware das die Befehlszeile: sudo apt-get install wine.

Ihr müsst wissen unter welcher ID am USB-Port eure Geräte angesprochen werden. Mit dem Befehl lsusb in der Konsole bekommt ihr eine Liste aller USB-Geräte angezeigt:
...
Bus 003 Device 006: ID 03eb:2045 Atmel Corp. LUFA Mass Storage Demo Application
...
Bus 005 Device 002: ID 03eb:2054 Atmel Corp. LEFT VPC Throttle MT-50 CM2
...

Meine VIRPILs haben also die IDs 03eb:2045 und 03eb:2054. Merken!

Ihr baucht die Steam Game-ID für euer Spiel. Bei Elite Dangerous sollte das 359320 sein. Die bekommt ihr heraus wenn ihr im Steam-Shop das Spiel anwählt, dann steht ganz oben Links in der Adresszeile der Link zum Spiel, und darin verbirgt sich die Game-ID.

Als nächstes braucht ihr den Ort, an dem Steam euer Elite Dangerous installiert hat. Das ist leider von Distribution zu Distribution unterschiedlich. Ich kann euch daher nur nur ein Beispiel geben, wie das bei mir aussieht.
Bei meinem Linux-Mint ist das: "/home/uwe/.steam/debian-installation/steamapps"
Unter Nobara-Linux war das bei mir: "/home/.local/share/Steam/steamapps"

In "/home/uwe/.steam/debian-installation/steamapps/compatdata/359320/pfx" befinden sich die Registry Dateien für das Spiel. Legt euch davon Sicherheitskopien an, für den Fall, dass etwas schief geht. Kopiert alle Dateien mit der Erweiterung ".reg" irgendwo hin wo ihr sie wiederfindet. Eventuell braucht ihr dazu Administrator-Rechte.

Mit folgenden zwei Zeilen in der Konsole sollte dann der Registry-Editor mit der Registry für euer Elite-Dangerous starten:

STEAM_LIBRARY="${HOME}/.steam/debian-installation/steamapps"
WINEPREFIX="${STEAM_LIBRARY}/compatdata/359320/pfx" wine regedit


Navigiert zu HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\WINEXINPUT
Löscht darunter alle Einträge die auf die ID eurer Problemgeräte hinweisen.

Navigiert zu HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\WINEBUS
Klappt alle Ordner auf die die ID eurer Problemgeräte haben.
Ihr sollet dann einige Ordner mit elend langen Namen sehen wie etwa: 273&03000000443300009043000011010000&0&0.
Ändert darin folgende Werte:

Im Schlüssel Service: ändert ihr von xinput zu winehid

Im Schlüssel DeviceDesc: ändert ihr von Wine XInput compatible device zu Wine HID compatible device

Im Schlüssel CompatiableIds: Dieses Feld ist ein mehrzeiliges Eingabefeld. Löscht darin alle Einträge außer WINEBUS\WINE_COMP_HID. Das lasst ihr bitte stehen!

Beendet den Registry-Editor mit einem Klick auf das x oben rechts.

Nun könnt ihr Elite starten. Wenn ihr alles richtig gemacht habt sollten eure HOTAS funktionieren.
Bei mir hat das sowohl mit Nobara-Linux (42) wie auch mit Linux-Mint (22.1) funktioniert.

Viel Spaß und Glück
Euer oller Pit :wink:
Folgende Benutzer bedankten sich beim Autor Pit Cock für den Beitrag (Insgesamt 8):
nOrmAlKOLUMBUSGeometertimeagentLiptomSanyarinragnarMax Bothin
Bild
Benutzeravatar
Pit Cock
Beiträge: 48
Registriert: So 4. Sep 2022, 17:18
Hat sich bedankt: 128 Mal
Danksagung erhalten: 99 Mal

Re: VIRPIL und VKB HOTAS unter Linux (Steam) zum Laufen bekommen.

#2

Valve hat einiges in Proton umgestellt, was die Einbindung von HID-Geräten über die Kompatiblitätsschicht Proton betrifft. Das mag sinnvoll sein für Steam-Deck und Steam-Machine, aber uns PC-Nutzer stellt das vor große Probleme.
Nach drei Tagen mehr oder weniger erfolgreichen Basteleien, mit Zurhilfenahme der künstlichen Inkompetenzen von Chat-GPT, Claude und google, habe ich folgenden Fix gefunden:

Ihr braucht zwingend eine Proton-Version von GloriusEggroll. Für mich hat die Version GE-Proton 10-10 gut funktioniert. Die Proton-Versionen die Valve zur Verfügung stellt sind für unser Ansinnen nicht mehr hilfreich!
GE-Proton könnt ihr mit einem Tool wie z.B. "ProtonUp-Qt" installieren.

In eurem System müsst ihr eine udev-Regel setzen. Ich zeige hier den Weg wie es bei mir in "Linux Mint 22.3" und "PopOS 24.04" (Beide Ubuntu/Debian basiert) funktioniert hat. Nutzt ihr eine andere Distribution kann der Weg der Gleiche sein, muss aber nicht.

Zuerst müsst ihr wissen mit welcher Vendor-ID (Hersteller-ID) sich euer Gerät am USB-Bus meldet. Das erfahrt ihr im Terminal (Konsole) mit dem Befehl lsusb . Schaut hier in der Ausgabe nach euren Problemgeräten.
In meinem Fall sieht das aktuell so aus:

Bus 001 Device 006: ID 3344:40d5 Leaguer Microelectronics (LME) R-VPC Stick WarBRD
Bus 003 Device 002: ID 3344:8193 Leaguer Microelectronics (LME) L-VPC Throttle MT-50CM2

Für mein Setup möchte ich auch den PS4-Controller einbeziehen:

lsusb | grep "Sony"
Bus 001 Device 008: ID 054c:09cc Sony Corp. DualShock 4 [CUH-ZCT2x]

Die erste Zahl (hexadezimal) vor dem Doppelpunkt ist die Vendor-ID. Hier bei mir also die "3444" für die zwei Virpil-Geräte,und "054c" für den PlayStation-Controller. (Merkt euch auch die Zahl nach dem Doppelpunkt!)

Nun müsst ihr die Datei "/etc/udev/rules.d/60-steam-input.rules" erstellen. Dazu benötigt ihr Admin-Rechte. Das geht zum Beispiel mit dem Editor Nano.
Ihr gebt im Terminal ein: sudo nano /etc/udev/rules.d/60-steam-input.rules. Dann werdet ihr nach dem Superuser-Passwort (Admin-Passwort) gefragt.
Hier fügt ihr dann folgende Zeilen ein:

SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3344", MODE="0666", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="3344", MODE="0666", TAG+="uaccess"


Und für mich (Sony) zusätzlich die zwei Zeilen:
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="054c", MODE="0666", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="054c", MODE="0666", TAG+="uaccess"

Die zwei Zeilen braucht ihr für alle Geräte die euch Probleme bereiten. Nutzt ihr z.B. Joystick und Schubregler unterschiedlicher Hersteller mag es sein, dass ihr diese beiden Zeilen mehrmals einfügen müsst. Mit unterschiedlichen Vendor-IDs.

Im Editor Nano speichert ihr mit Strg + o, dann Enter. Beenden könnt ihr Nano mit Strg + x.

Die neue Regel muss aktiviert werden. Im Terminal eingeben:

sudo udevadm control --reload-rules && sudo udevadm trigger

Das müsst ihr nur einmal machen. Bei einem Neustart des PC wird die Regel automatisch aktiviert.

Nun müssen wir uns an die Registry-Dateien der Spielinstallation wagen.
In meinem Linux Mint ist der Pfad dahin:
"${HOME}/.steam/debian-installation/steamapps/compatdata/359320/pfx"
In der Pop!_OS installation lautet der Pfad zu den Registrys:
"${HOME}/.local/share/Steam/steamapps/compatdata/359320/pfx"
Das müsst ihr an eure Steam-Installation anpassen. Und ganz wichtig: Legt hier von allen Dateien die auf ".reg" enden Sicherheitskopien an! Damit ihr wieder zum Ursprungszustand zurück könnt, sollte etwas schief gehen!

Im Terminal gebt ihr dann folgendes ein (angepasst an eure Pfade):

STEAM_LIBRARY="${HOME}/.steam/debian-installation/steamapps"
WINEPREFIX="${STEAM_LIBRARY}/compatdata/359320/pfx" wine regedit


Wahrscheinlich spammt wine jetzt euer Terminal mit allerlei Warnungen und Fehlermeldungen voll. Wenn der vom Windows bekannte Registry-Editor erscheint könnt ihr diese Meldungen ignorieren.

Navigiert zu HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\winebus
Hier legt ihr zwei neue DWORT-Werte an, mit den Namen Enable SDL und Map Controllers. Beide mit dem Wert 0.

Beendet den Registry-Editor mit einem Klick auf das x oben rechts.

In eurer Steam-Biblothek macht ihr nun einen Rechtklick auf "Elite Dangerous" und wählt "Eigenschaften" aus. Unter "Kompatiblität" stellt ihr das zuvor installiere GE-Proton ein. Ich empfehle die Version GE-Proton 10-10, die funktioniert bei mir. Ihr könnt auch gerne eine neuere Version ausprobieren, aber ob die funktioniert weiß ich nicht.
Im Reiter "Allgemein" müsst ihr nun eine Startoption eingeben. Ihr erinnert euch an die Ausgabe von "lsusb"? Ihr braucht dazu die Vendor-ID gefolg von der Geräte-ID (die nach dem Doppelpunkt).
Ihr gebt jetzt als Startoption ein:

PROTON_ENABLE_HIDRAW=0x3344/0x8193,0x3344/0x40d5 SDL_JOYSTICK_HIDAPI=0 %command%

Das ist für meine zwei Virpil Geräte. Mehrere Vendor/Geräte-IDs können eingegeben werden, und durch ein Komma getrennt.

Für meine Konfiguration, zusätzlich mit dem PS4-Controller sieht das so aus:
PROTON_ENABLE_HIDRAW=0x3344/0x8193,0x3344/0x40d5,0x054c/0x09cc SDL_JOYSTICK_HIDAPI=0 %command%


Macht das Einstellungs-Fenster zu und startet euer Spiel. Wenn ihr alles richtig gemacht habt sollte Elite eure Geräte jetzt wieder unterstützen.

Anmerkung: Solltet ihr den "alten" Registry-Fix schon drin haben macht das nach meinen Erfahrungen keine Probleme. Den könnt ihr drin lassen.

Mein ganz besonderer Dank gilt Matt Moore, ohne dessen Arbeit ich das Ganze nicht hätte umsetzen können!
Folgende Benutzer bedankten sich beim Autor Pit Cock für den Beitrag (Insgesamt 4):
SanyarintimeagentMax BothinLiptom
Bild
Antworten

Zurück zu „Technik & Hardware“