| « Per SSH-Tunnel schnell mal auf einen geschützten Dienst im Intranet zugreifen | Feedback erwünscht » |
Joystick am Soundkarten-Adapter zum Laufen überreden
Ich habe zwar schon lange nichts mehr gespielt, aber da ich gerade dabei bin, meinen Rechner neu einzurichten, mir beim Aufrämen ein alter Analog-Joystick in die Hände gefallen ist und ich gerade Urlaub habe, dachte ich mir: "Wie wäre es denn, mal wieder ein paar uralte C64-Spiele per C64-Emulator zu zocken?" Wie ich feststellen musste, steckt der Teufel manchmal im Detail.
Follow up:
Hier das Ausgangsszenario: Ein IBM-kompatibler PC mit Betriebssystem-Kern (Kernel) Version 2.2.26, eine alte Soundblaster-Karte und ein alter Analog-Joystick. Meine im Folgenden beschriebene Vorgehensweise ist nicht nur genau auf mein Szenario anwendbar, sondern es kann bei ähnlichen Komponenten auch übertragen werden und man wird dort auf die gleichen Probleme stoßen.
Warum spielt die Soundkarte eine Rolle? Ganz einfach: Bevor es USB-Joysticks gab hat man Joysticks meistens an einen 15-poligen Gameport an der Soundkarte angeschlossen. Diesen bringt auch meine Soundkarte mit. Um ein neues Betriebssystem mit den passenden Modulen bauen zu können, gilt es zuerst herauszufinden, um welche Soundkarte es sich genau handelt. Da ich einfach zu faul bin, den Rechner aufzuschrauben und nachzuschauen, tut es auch der Befehl lspci, der im Resultat folgende Zeile enthät:
05:06.0 Multimedia audio controller: Ensoniq ES1370 [AudioPCI] (rev 01)
Das bedeutet, dass der entscheidende Chip auf der Karte der Ensoniq ES1370 ist. Dies hat funktioniert, da ich einen aktuellen Rechner habe und die Soundkarte daher eine PCI-Karte sein muss. Für den Kern wählen wir also erst einmal "Advanced Linux Sound Architecture" (ALSA) aus, den "Sequencer support", "Support old ALSA API" (für den Fall, dass noch alte Software in Verwendung ist) und bei den PCI-Geräten "(Creative) Ensoniq AudioPCI 1370". Letzteres generiert das später noch wichtige Modul snd-ens1370.
Nun fehlt noch die eigentliche Joystick-Unterstützung. Dazu wälen wir aus den Eingabegeräten "Joystick interface" (Modul joydev) und bei den Joysticks und Gamepads "Classic PC analog joysticks and gamepads" (Modul analog). Ein weiterer Punkt und zwar "Gameport support" (Modul gameport) wurde automatisch aktiviert. Der Punkt "Classic ISA and PnP gameport support" (Modul ns558) muss nicht augewählt werden, da bei PCI-Soundkarten, im Gegensatz zu ISA-Soundkarten, der Soundkarten-Treiber den Joystick-Treiber bereits enthält. Nachdem jetzt alle notwendigen Module zusammengestellt haben, geht es an's übersetzen: make; make install; make modules_install
Dies alles reicht noch nicht aus, da bei vielen Soundkarten per Voreinstellung der Joystick-Port deaktiviert ist. Mehr Informationen dazu findet man in Documentation/sound/alsa/Joystick.txt. Für meine Soundkarte wird als Parameter für modprobe (Befehl zum Laden von Modulen) "joystick=1" benötigt.
Im Verzeichnis "/etc/modprobe.d/" befinden sich die Konfigurationsdateien, die modprobe verwendet. Interessant für uns ist die Datei "options". Dort fügen wir die Zeile
options snd-ens1370 joystick=1
ein. Sie bewirkt, dass immer, wenn das Modul snd-end1370 geladen wird, zusätzlich "joystick=1" als Paramter automatisch mitgegeben wird.
Die letzte Hürde stellt die initrd, die initiale Ramdisk, die zum Starten des Rechner verwendet wird (sie muss nicht vorhanden sein), dar. Wenn über diese unsere obigen Module geladen werden sollen, dann muss "etc/modprobe.d/options" natürlich auch dort angepasst werden.