J'ai un lance-roquettes USB que je souhaite expérimenter libusb
. Cependant, libusb ne peut pas revendiquer l'interface; probablement parce que la sortie des usb-devices
listes «usbhid» comme pilote pour le périphérique.
Après avoir lu sur Internet, je suis seulement arrivé à la conclusion que je dois détacher ce pilote de l'appareil afin de pouvoir l'utiliser avec libusb. Cependant, je n'ai trouvé aucun moyen définitif de le faire, seulement plusieurs idées et rapports de bogues différents.
Alors, existe-t-il un moyen de détacher le pilote usbhid d'un périphérique qui serait pertinent avec le noyau et les outils fournis avec Ubuntu 11.04?
ÉDITER:
J'ai essayé de créer le fichier
/etc/udev/rules.d/10-usbhid.rules
et en écrivant ce qui suit:
ATTRS{idVendor}=="0a81", ATTRS{idProduct}=="0701", OPTIONS=="ignore_device"
Sauvegarde, puis redémarrage. Le fichier est toujours là, mais il ne semble pas fonctionner du tout.
ÉDITER:
D'accord, j'ai essayé ceci:
sudo -i
echo -n "0003:0A81:0701.0006" > /sys/bus/hid/drivers/generic-usb/unbind
Après cela, la navigation vers /sys/bus/hid/devices/0003:0A81:0701.0006 et ls donne:
drwxr-xr-x 2 root root 0 2011-05-29 15:46 power
lrwxrwxrwx 1 root root 0 2011-05-29 13:19 subsystem -> ../../../../../../../../../bus/hid
-rw-r--r-- 1 root root 4096 2011-05-29 13:19 uevent
Il ne répertorie plus un lien symbolique de "pilote" comme il le faisait auparavant, donc je suppose qu'il l'a dissocié. Cependant, toutes les preuves semblent suggérer que le conducteur est encore usbhid. Par exemple, les périphériques USB produisent:
T: Bus=02 Lev=03 Prnt=07 Port=00 Cnt=01 Dev#= 9 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0a81 ProdID=0701 Rev=00.01
S: Manufacturer=Dream Link
S: Product=USB Missile Launcher v1.0
C: #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
libusb retuns toujours -1 sur usb_claim_interface () ....