USB HID Report Descriptor

Le nouveau support USB Gadget du noyau permet de facilement composer des périphériques USB via configfs et ceci inclus les périphériques USB HID.

Il faut cependant écrire le descripteur de rapport dans un fichier report_desc, par exemple depuis un script bash et la commande echo.

On peut facilement récupérer cette information depuis un périphérique HID existant (celui qu’on veut simuler) avec lsusb -v, mais le format n’est pas directement utilisable.

Si, en revanche on utilise usbhid-dump livré avec les usbutils, on obtient un format plus facile à gérer :

% sudo usbhid-dump -d 1d34:0004
001:106:000:DESCRIPTOR 1474883599.550267
 05 01 09 10 A1 01 05 00 19 10 29 11 15 00 25 0F
 75 08 95 08 91 02 19 10 29 11 15 00 25 0F 75 08
 95 08 81 00 C0

Avec quelques coups de grep et de sed, on peut transformer cela en quelque chose de directement utilisable avec un script :

% sudo usbhid-dump -d 1d34:0004 | grep "^ " | sed ':a;N;$!ba;s/\n//g;s/ /\\x/g' 
\x05\x01\x09\x10\xA1\x01\x05\x00\x19\x10\x29\x11\x15\x00\x25\x0F\x75\x08\x95\x08\x91\x02\x19\x10\x29\x11\x15\x00\x25\x0F\x75\x08\x95\x08\x81\x00\xC0

Et pour la taille du descripteur :

% sudo usbhid-dump -d 1d34:0004 | grep "^ " | sed ':a;N;$!ba;s/\n//g;s/ /\\x/g' | grep -Fo x | wc -l
37

PS : Oui, ce billet est surtout un mémo mais cela pourra peut-être faire économiser 5mn à quelqu’un d’autre ;)

Laisser un commentaire