Actions











USB joystick

Écrit le 19 juillet 2006 @ 13:02 par Alexandre

Informatique - LinuxJ'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 juillet 2006 @ 21:43 par Alexandre

Commentaire par Alexandre  Score: 2
É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.

Commentaire par Alexandre  Score: 2
Écrit le: 20/07/2006@00:15

Il semblerait que Suse 10.0 et 10.1 n'utilise pas exactement "hotplug", mais une version propre inspirée de cette application. Ce qui fait que je suis à la recherche du fichier où je dois entrer mes informations. Je vais finir par trouver, mais là c'est dodo.

Commentaire par Nick  Score: 2
Écrit le: 20/07/2006@20:17

J'ai hâte d'avoir des nouvelles pour savoir si ton gamepad fonctionne ou pas sur Linux.
J'aime bien les vieux jeux NES, SNES, etc. et le fait de savoir que ça fonctionne aussi bien sur Linux que sur Windows me ferait moins de peine lorsque je vais faire mon switch...
... by the way, il reste moins de deux mois avant que je fasse ça !!

Commentaire par Alexandre  Score: 2
Écrit le: 20/07/2006@23:39

Il marche, mais le module (driver) nécessaire n'est pas parti automatiquement. Il faut que je le parte manuellement. Mais je vais trouver un autre soir.

Commentaire par Alexandre  Score: 2
Écrit le: 25/07/2006@16:11

Ah la connerie! J'aurais dû allumer plus tôt. Puisque devfs a été remplacé par udev, hotplug a probablement aussi été remplacé du même coup. Si je fouille un peu dans cette direction, je devrais trouver. (En passant, j'ai pas eu le temps de jouer sur mon ordi depuis la semaine passée quand j'ai écrit)

Je regarde ça ce soir(si j'ai le temps)!
Dernière modification le 25 juillet 2006 @ 16:13

Commentaire par Alexandre  Score: 2
Écrit le: 25/07/2006@17:04

Voici ce que j'ai appris en cherchant un peu: structure du handle d'un événement

J'ai aussi appris qu'à partir de la version 0.50 de udev, il est possible de s'en servir comme hotplug events manager et donc de ne pas utiliser "hotplug". Je continue à m'instruire.


Tous les blogs
<< Le nouveau design de Microsoft Word | Retour aux blogs | Une peur incontrôlable >>
Blogs de la même catégorie
<< Udev VS devfs | Faire tourner les exe directement sous Linux >>