Tengo un lanzador de cohetes USB con el que deseo experimentar libusb
. Sin embargo, libusb no puede reclamar la interfaz; presumiblemente porque la salida de las usb-devices
listas 'usbhid' como el controlador del dispositivo.
Después de leer en Internet, solo llegué a la conclusión de que necesito desconectar este controlador del dispositivo para poder usarlo con libusb. Sin embargo, no he encontrado una sola forma definitiva de hacerlo, solo varias ideas diferentes e informes de errores.
Entonces, ¿hay alguna forma de desconectar el controlador usbhid de un dispositivo que sería relevante con el kernel y las herramientas suministradas con Ubuntu 11.04?
EDITAR:
Traté de crear el archivo
/etc/udev/rules.d/10-usbhid.rules
y escribiendo lo siguiente:
ATTRS{idVendor}=="0a81", ATTRS{idProduct}=="0701", OPTIONS=="ignore_device"
Guardando, luego reiniciando. El archivo todavía está allí, pero no parece estar funcionando en absoluto.
EDITAR:
Bien, probé esto:
sudo -i
echo -n "0003:0A81:0701.0006" > /sys/bus/hid/drivers/generic-usb/unbind
Después de eso, navegando a /sys/bus/hid/devices/0003:0A81:0701.0006 y ls produce:
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
Ya no enumera un enlace simbólico de "controlador" como lo hizo antes, por lo que supongo que lo desvincula. Sin embargo, toda la evidencia parece sugerir que el controlador todavía está usbhid. Por ejemplo, los dispositivos usb producen:
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 todavía vuelve a ejecutar -1 en usb_claim_interface () ....