Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
Als zweiter USB-Joystick (nach dem Speed Link Game Pad) ist jetzt eine Neuauflage des legendären Competition Pro in meine Hände gelangt.
Dieser Stick ist auch von der Firma Speed Link (Jöllenbeck GmbH), scheint jedoch einen gänzlich anderen Chip zu besitzen.
Er meldet sich als Mosaic 2A4k Game Pad. Der "Vendor" ist laut ID die Firma Weltrend Semiconductors. Auf der Website von Weltrend sind auch mehrere Game-Pad Chips vorgestellt, alle basieren auf einer 6502 CPU mit 6MHz - also der CPU, die im Atari 800 XL (und im Prinzip auch im C64) steckte - nur daß damals 2MHz state of the art war. Na, wenn das nicht stilecht ist. Schade nur, daß man das Ding nicht programmieren kann, dann hätte der gute alte Atmas II oder der Mac 65 noch etwas zu tun bekommen Erstaunlich ist, daß der Stick 2 Achsen und 8 Buttons zurückmeldet. Das ist schon fast korrekt, er hat in Wirklichkeit nur 4 Knöpfe. Die höheren, nicht vorhandenen sind aber alle 0, also nicht gedrückt und machen mit dem Atari Emulator keine Probleme. Somit läßt sich das komische Verhalten des wohl Game-Pads auf Designfehler in der Hardware zurückführen. Die Linux-Treiberseite scheint sauber zu sein. Trotzdem würde mich interessieren wie Windows die "echte" Anzahl Buttons beim Game Pad ermittelt. |
![]() |
Das Daddelgefühl ist ein ganz anderes als mit dem Game Pad. Damit macht sogar Xgalaga spaß! Der einzige Nachteil ist, daß der Joystick nicht über USB-Hotplug erkannt wird, d.h. man muß die Module joydev
und ggf. hid
von Hand per modprobe
laden (Kernel 2.4) was auf die Dauer (wenn man den Stick oft von einem Rechner zum anderen stöpselt) unbefriedigend ist. Doch dem kann abgeholfen werden!
Update: dies ist mit aktuellen Kerneln und hotplug-Versionen nicht mehr nötig, der Joystick wird mittlerweile erkannt! Trotzdem ist es gut zu wissen wie es prinzipiell funktioniert, deshalb bleibt der Text bestehen!
In der Datei /etc/hotplug/usb.handmap
steht die Zuordnung von USB-Geräten zu einem bestimmten Kernel-Modul. Die USB-Geräte werden durch eine Typ, Hersteller und Geräte-ID eindeutig identifiziert. Diese Infos liest der Treiber aus dem USB-Gerät aus.
Unser Joystick ist ein HID-Gerät (Human Input Device = Typ-ID 3), die Hersteller-ID ist 040b, die Geräte ID lautet 6533. Diese Werte kann man mit lsusb
oder unter X und grafisch niedlicher mittels usbview
(emerge usbview
) ermitteln.
In die oben angegebenene Datei trägt man nun diese Zeile ein:
joydev 0x0003 0x040b 0x6533 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
...und beim nächsten Abziehen und wieder Anstöpseln sollte wie von Geisterhand joydev
mit allen abhängigen Modulen geladen werden!
Es kann der Fall eintreten (gerade eben), das der Joystick nicht mehr erkannt wird. Ist mir gerade passiert, gestern (gefühlt) ging es noch. Wo liegt, das Problem? https://github.com/mikyll/SDL2-Controller-Tester runtergeladen:
und wirklich, kein Joystick wird erkannt. In der dmesg wird aber angezeigt, das ein HID-Gerät angestöppselt ist. Hersteller-ID 040b wurde erkannt. Mal als root gestartet und voila, Joystick ist doch vorhanden. Mann muss in der Gruppe 'Input' sein, dann klappt es auch. Dort war ich bisher nicht verteten, aber jetzt und nun klappt es wieder mit dem Knüppel.