USB joystick
J'ai décidé d'utiliser mon joystick (en fait, plus un gamepad) sous Linux pour jouer à Super Metroid (avec l'émulateur zsnes, ça marche). Alors, voilà, je branche mon joystick et... rien ne se passe.
Pourtant, tout mes autres devices USB fonctionnent bien. L'histoire n'est pas encore complète, je vais terminer ça ce soir, mais voici ce que j'ai trouvé pour le moment.
Tout d'abord, en utilisant un utilitaire "USB monitor", j'ai rapidement constaté que la manette était détectée:
Interact Gaming Device
Manufacturer: S.T.D.
Speed: 1.5Mb/s (low)
USB Version: 1.10
Device Class: 00(>ifc )
Device Subclass: 00
Device Protocol: 00
Maximum Default Endpoint Size: 8
Number of Configurations: 1
Vendor Id: 05fd
Product Id: 3000
Revision Number: 1.10
Config Number: 1
Number of Interfaces: 1
Attributes: a0
MaxPower Needed: 100mA
Interface Number: 0
Name: usbhid
Alternate Number: 0
Class: 03(HID )
Sub Class: 0
Protocol: 0
Number of Endpoints: 1
Endpoint Address: 81
Direction: in
Attribute: 3
Type: Int.
Max Packet Size: 8
Interval: 20ms
(D'ailleurs, je vais m'en servir pour envoyer un incident à l'équipe de Udev pour y ajouter un correctif).
Bonne nouvelle donc. Alors pourquoi est-ce que mon joystick n'est pas reconnu pour le configurer. Je me dis qu'il s'agit peut-être d'un module manquant, mais après vérification, ce n'est pas le cas, le module joydev dont j'ai besoin est présent. Je fais donc un petit suivi des événements qui arrivent lors de branchement et débranchement:
UEVENT[1153359531.180718] remove@/class/input/input3/event3
UEVENT[1153359531.180800] remove@/class/input/input3
UEVENT[1153359531.180818] remove@/devices/pci0000:00/0000:00:08.0/usb2/2-1/2-1:1.0
UEVENT[1153359531.180834] remove@/class/usb_device/usbdev2.2
UEVENT[1153359531.180849] remove@/devices/pci0000:00/0000:00:08.0/usb2/2-1
UDEV [1153359531.186610] remove@/class/input/input3/event3
UDEV [1153359531.188232] remove@/devices/pci0000:00/0000:00:08.0/usb2/2-1/2-1:1.0
UDEV [1153359531.190009] remove@/class/usb_device/usbdev2.2
UDEV [1153359531.191908] remove@/class/input/input3
UDEV [1153359531.192970] remove@/devices/pci0000:00/0000:00:08.0/usb2/2-1
UEVENT[1153359533.971392] add@/devices/pci0000:00/0000:00:08.0/usb2/2-1
UEVENT[1153359533.977047] add@/devices/pci0000:00/0000:00:08.0/usb2/2-1/2-1:1.0
UEVENT[1153359534.001932] add@/class/input/input6
UEVENT[1153359534.001994] add@/class/input/input6/event3
UEVENT[1153359534.002011] add@/class/usb_device/usbdev2.3
UDEV [1153359534.053829] add@/devices/pci0000:00/0000:00:08.0/usb2/2-1
UDEV [1153359534.128478] add@/devices/pci0000:00/0000:00:08.0/usb2/2-1/2-1:1.0
UDEV [1153359534.170499] add@/class/input/input6
UDEV [1153359534.225574] add@/class/usb_device/usbdev2.3
UDEV [1153359534.546177] add@/class/input/input6/event3
Tout semble OK du côté de UDEV puisque les événements add et remove sont présents.
Je loade manuellement le module joydev:
modprobe joydev
Tout va bien et je peux maintenant utiliser ma manette et la configurer sans problème. Ceci n'explique pas pourquoi le module n'est pas chargé automatiquement. J'en viens donc à la conclusion que les informations nécessaires à UDEV ne sont pas reconnues ou c'est hotplug qui ne fonctionne pas correctement. Comment régler le problème alors. Je suis tombé sur la page web suivante sur ce site. Je vais donc tester plus tard et si ça marche, je vais soumettre l'incident et le fix.
Dernière modification le 19/07/2006 @ 21:43 par Alexandre
Écrit le: 19/07/2006 @ 21:48
Pour compléter, voici donc l'information important trouvée en faisant:
tail /var/log/messages
Jul 19 21:46:34 Xander kernel: usb 2-1: new low speed USB device using uhci_hcd and address 4
Jul 19 21:46:34 Xander kernel: usb 2-1: new device found, idVendor=05fd, idProduct=3000
Jul 19 21:46:34 Xander kernel: usb 2-1: new device strings: Mfr=4, Product=18, SerialNumber=0
Jul 19 21:46:34 Xander kernel: usb 2-1: Product: Interact Gaming Device
Jul 19 21:46:34 Xander kernel: usb 2-1: Manufacturer: S.T.D.
Jul 19 21:46:34 Xander kernel: usb 2-1: configuration #1 chosen from 1 choice
Jul 19 21:46:34 Xander kernel: input: S.T.D. Interact Gaming Device as /class/input/input7
Jul 19 21:46:34 Xander kernel: input: USB HID v1.00 Joystick [S.T.D. Interact Gaming Device] on usb-0000:00:08.0-1
Il me reste donc à ajouter l'information dans le fichier:
/etc/hotplug/usb.agent
Des nouvelles plus tard.