Der richtige Fahrer ist snd_cmipci
. Wenn Sie sich die Dokumentation Documentation/sound/alsa/CMIPCI.txt
in den Kernel-Quellen ansehen, heißt es:
Joystick und Modem
Der ältere Joystick wird unterstützt. Um die Joystick-Unterstützung zu aktivieren, übergeben Sie die
joystick_port=1
Option module. Der Wert 1 bedeutet die automatische Erkennung. Wenn die automatische Erkennung fehlschlägt, versuchen Sie, die genaue E / A-Adresse zu übergeben.Das Modem wird dynamisch über einen Kartensteuerungsschalter "Modem" aktiviert.
Vergewissern Sie sich auch über dmesg
diese snd_cmipci
Modussätze, und bearbeiten Sie Ihre Frage mit Fehlermeldungen, wenn Sie den Grund nicht herausfinden können.
Bearbeiten :
Ok, die Karte wird richtig erkannt. Ich habe mir den Quellcode ( sound/pci/cmipci.c
) und das Datenblatt angesehen . Das einzige, was dort erwähnt wird, ist ein einzelnes Bit, um den Joystick zu aktivieren, und es gibt keine Basisadresse an. Die Basisadresse gehört auch nicht zu den PCI-Regionen, anscheinend haben ältere PCI-Karten dies auch so gemacht (bei den älteren MPU401 / FM / SB16-Basen ist es dasselbe, obwohl Sie diese auswählen können, was bedeutet, dass wir sie kennen können).
Traditionell war das Spiel Port an 0x200
- 0x207
mit 0x201
als derjenige in der Regel verwendet. So wird der Treibercode versucht, nur zu behalten 0x201
und 0x200
in dieser Reihenfolge, für joystick_port=1
und die gegeben Port anders und ermöglicht dann den Joystick in der Karte. Es gibt keine ordnungsgemäße Erkennung und keine Nachrichten.
Überprüfen Sie also zunächst, ob die Ressource frei ist: Wenn der Treiber nicht geladen ist (prüfen Sie mit lsmod
, verwenden Sie ihn rmmod
ggf.), bearbeiten Sie die Frage mit der Ausgabe cat /proc/ioports
als root (als normaler Benutzer werden die Bereiche nicht angezeigt). Wenn der 0x200
Bereich belegt ist, müssen wir einen Weg finden, ihn zu befreien.
Vergewissern Sie sich zum Testen, dass der Treiber noch nicht geladen ist modprobe snd_cmipci joystick_port=0x201
(oder die Option wird nicht verarbeitet).
Ich erinnere mich nicht genau, wo der Gameport auftaucht, aber wenn alles funktioniert (der Bereich ist kostenlos), sollten Sie jetzt gameport
einige andere Module sehen lsmod
und ich denke, Sie sollten ein Gerät /dev/js*
oder ähnliches haben, das Sie mit jscal
oder testen können jstest
. Wenn dies passiert, aber Sie keine Reaktion erhalten, versuchen Sie es als 0x200
nächstes.
Bearbeiten
Wie gesagt, ich kann mich nicht genau an den benötigten Modulstapel erinnern und ich habe keine Gameport-Hardware mehr. Aber ich habe meinen alten Joystick ausgegraben (was auch ein Logitech WingMan Extreme ist, keine Ahnung, ob "Digital" oder nicht), habe alte Dateien angeschaut und ein bisschen gegoogelt. Hier ist mein aktuelles Verständnis des Modulstapels:
gameport
um das Gameport-Register zugänglich zu machenns558
Analoge Signale am Gameport messenanalog
als Treiber für normale analoge Joysticks (wenn Ihr Wingman in diesem Modus funktioniert)adi
für Logitech-Joysticks mit ADI-Protokoll (für die zusätzlichen Schaltflächen usw.) über den Gameport (die wahrscheinlichste Wahl für Ihren Wingman)joydev
für das Eingabegerät
Nachdem Sie den Gameport erworben haben, versuchen Sie Folgendes in dieser Reihenfolge:
modprobe adi modprobe joydev
und schauen dmesg
oder sudo tail -f /var/log/syslog
sehen, was passiert. Sie sollten ein /dev/input/js0
Gerät erhalten, mit dem Sie testen können jstest /dev/input/js0
. Wenn dies nicht funktioniert, versuchen Sie es stattdessen
modprobe ns558 modprobe analog map=auto modprobe joydev
Übrigens, mein Wingman ist ein Multiprotokoll (USB + ADI, möglicherweise auch analog) und wurde mit einem Gameport-zu-USB-Adapterkabel geliefert, mit dem ich es an einen USB-Anschluss anschließen kann. Einfacher als eine alte Soundkarte. :-)