1 /* This file is generated with usbsnoop2libusb.pl from a usbsnoop log file. */
2 /* Latest version of the script should be in http://iki.fi/lindi/usb/usbsnoop2libusb.pl */
11 #include <linux/usbdevice_fs.h>
12 #define LIBUSB_AUGMENT
13 #include "libusb_augment.h"
16 struct usb_dev_handle
*devh
;
18 void release_usb_device(int dummy
) {
20 ret
= usb_release_interface(devh
, 0);
22 printf("failed to release interface: %d\n", ret
);
25 printf("failed to close interface: %d\n", ret
);
31 for (bus
= usb_get_busses(); bus
; bus
= bus
->next
) {
32 struct usb_device
*dev
;
34 for (dev
= bus
->devices
; dev
; dev
= dev
->next
)
35 printf("0x%04x 0x%04x\n",
36 dev
->descriptor
.idVendor
,
37 dev
->descriptor
.idProduct
);
41 struct usb_device
*find_device(int vendor
, int product
) {
44 for (bus
= usb_get_busses(); bus
; bus
= bus
->next
) {
45 struct usb_device
*dev
;
47 for (dev
= bus
->devices
; dev
; dev
= dev
->next
) {
48 if (dev
->descriptor
.idVendor
== vendor
49 && dev
->descriptor
.idProduct
== product
)
56 void print_bytes(char *bytes
, int len
) {
59 for (i
=0; i
<len
; i
++) {
60 printf("%02x ", (int)((unsigned char)bytes
[i
]));
63 for (i
=0; i
<len
; i
++) {
64 printf("%c", isprint(bytes
[i
]) ? bytes
[i
] : '.');
71 int main(int argc
, char **argv
) {
72 int ret
, vendor
, product
;
73 struct usb_device
*dev
;
74 char buf
[65535], *endptr
;
87 printf("usage: %s vendorID productID\n", argv
[0]);
88 printf("ID numbers of currently attached devices:\n");
92 vendor
= strtol(argv
[1], &endptr
, 16);
93 if (*endptr
!= '\0') {
94 printf("invalid vendor id\n");
97 product
= strtol(argv
[2], &endptr
, 16);
98 if (*endptr
!= '\0') {
99 printf("invalid product id\n");
102 dev
= find_device(vendor
, product
);
105 devh
= usb_open(dev
);
108 signal(SIGTERM
, release_usb_device
);
110 ret
= usb_get_driver_np(devh
, 0, buf
, sizeof(buf
));
111 printf("usb_get_driver_np returned %d\n", ret
);
113 printf("interface 0 already claimed by driver \"%s\", attempting to detach it\n", buf
);
114 ret
= usb_detach_kernel_driver_np(devh
, 0);
115 printf("usb_detach_kernel_driver_np returned %d\n", ret
);
117 ret
= usb_claim_interface(devh
, 0);
119 printf("claim failed with error %d\n", ret
);
123 ret
= usb_set_altinterface(devh
, 0);
126 ret
= usb_get_descriptor(devh
, 0x0000001, 0x0000000, buf
, 0x0000012);
127 printf("1 get descriptor returned %d, bytes: ", ret
);
128 print_bytes(buf
, ret
);
131 ret
= usb_get_descriptor(devh
, 0x0000002, 0x0000000, buf
, 0x0000009);
132 printf("2 get descriptor returned %d, bytes: ", ret
);
133 print_bytes(buf
, ret
);
136 ret
= usb_get_descriptor(devh
, 0x0000002, 0x0000000, buf
, 0x0000027);
137 printf("3 get descriptor returned %d, bytes: ", ret
);
138 print_bytes(buf
, ret
);
141 ret
= usb_release_interface(devh
, 0);
142 if (ret
!= 0) printf("failed to release interface before set_configuration: %d\n", ret
);
143 ret
= usb_set_configuration(devh
, 0x0000001);
144 printf("4 set configuration returned %d\n", ret
);
145 ret
= usb_claim_interface(devh
, 0);
146 if (ret
!= 0) printf("claim after set_configuration failed with error %d\n", ret
);
147 ret
= usb_set_altinterface(devh
, 0);
148 printf("4 set alternate setting returned %d\n", ret
);
150 memcpy(buf
, "\x10\x00\x00\x00\x01\x00\x02\x10\x00\x00\x00\x00\x01\x00\x00\x00", 0x0000010);
151 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x0000010, 1000);
152 printf("5 bulk write returned %d, bytes: ", ret
);
153 print_bytes(buf
, ret
);
156 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
157 printf("6 bulk read returned %d, bytes: ", ret
);
158 print_bytes(buf
, ret
);
161 memcpy(buf
, "\x0c\x00\x00\x00\x01\x00\x01\x10\x01\x00\x00\x00", 0x000000c);
162 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x000000c, 1000);
163 printf("7 bulk write returned %d, bytes: ", ret
);
164 print_bytes(buf
, ret
);
167 ret
= usb_interrupt_read(devh
, 0x00000083, buf
, 0x0000008, 1000);
168 printf("8 interrupt read returned %d, bytes: ", ret
);
169 print_bytes(buf
, ret
);
172 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
173 printf("9 bulk read returned %d, bytes: ", ret
);
174 print_bytes(buf
, ret
);
177 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
178 printf("10 bulk read returned %d, bytes: ", ret
);
179 print_bytes(buf
, ret
);
182 memcpy(buf
, "\x0c\x00\x00\x00\x01\x00\x04\x10\x02\x00\x00\x00", 0x000000c);
183 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x000000c, 1000);
184 printf("11 bulk write returned %d, bytes: ", ret
);
185 print_bytes(buf
, ret
);
188 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
189 printf("12 bulk read returned %d, bytes: ", ret
);
190 print_bytes(buf
, ret
);
193 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
194 printf("13 bulk read returned %d, bytes: ", ret
);
195 print_bytes(buf
, ret
);
197 memcpy(buf
, "\x0c\x00\x00\x00\x01\x00\x03\x10\x03\x00\x00\x00", 0x000000c);
198 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x000000c, 1000);
199 printf("14 bulk write returned %d, bytes: ", ret
);
200 print_bytes(buf
, ret
);
203 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
204 printf("15 bulk read returned %d, bytes: ", ret
);
205 print_bytes(buf
, ret
);
207 memcpy(buf
, "\x10\x00\x00\x00\x01\x00\x02\x10\x00\x00\x00\x00\x01\x00\x00\x00", 0x0000010);
208 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x0000010, 1000);
209 printf("16 bulk write returned %d, bytes: ", ret
);
210 print_bytes(buf
, ret
);
213 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
214 printf("17 bulk read returned %d, bytes: ", ret
);
215 print_bytes(buf
, ret
);
218 memcpy(buf
, "\x0c\x00\x00\x00\x01\x00\x01\x10\x01\x00\x00\x00", 0x000000c);
219 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x000000c, 1000);
220 printf("18 bulk write returned %d, bytes: ", ret
);
221 print_bytes(buf
, ret
);
224 ret
= usb_interrupt_read(devh
, 0x00000083, buf
, 0x0000008, 1000);
225 printf("19 interrupt read returned %d, bytes: ", ret
);
226 print_bytes(buf
, ret
);
229 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
230 printf("20 bulk read returned %d, bytes: ", ret
);
231 print_bytes(buf
, ret
);
234 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
235 printf("21 bulk read returned %d, bytes: ", ret
);
236 print_bytes(buf
, ret
);
239 memcpy(buf
, "\x0c\x00\x00\x00\x01\x00\x04\x10\x02\x00\x00\x00", 0x000000c);
240 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x000000c, 1000);
241 printf("22 bulk write returned %d, bytes: ", ret
);
242 print_bytes(buf
, ret
);
245 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
246 printf("23 bulk read returned %d, bytes: ", ret
);
247 print_bytes(buf
, ret
);
250 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
251 printf("24 bulk read returned %d, bytes: ", ret
);
252 print_bytes(buf
, ret
);
255 memcpy(buf
, "\x18\x00\x00\x00\x01\x00\x01\x92\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 0x0000018);
256 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x0000018, 1000);
257 printf("25 bulk write returned %d, bytes: ", ret
);
258 print_bytes(buf
, ret
);
261 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
262 printf("26 bulk read returned %d, bytes: ", ret
);
263 print_bytes(buf
, ret
);
266 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
267 printf("27 bulk read returned %d, bytes: ", ret
);
268 print_bytes(buf
, ret
);
271 memcpy(buf
, "\x18\x00\x00\x00\x01\x00\x01\x92\x04\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 0x0000018);
272 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x0000018, 1000);
273 printf("28 bulk write returned %d, bytes: ", ret
);
274 print_bytes(buf
, ret
);
277 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
278 printf("29 bulk read returned %d, bytes: ", ret
);
279 print_bytes(buf
, ret
);
282 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
283 printf("30 bulk read returned %d, bytes: ", ret
);
284 print_bytes(buf
, ret
);
287 memcpy(buf
, "\x0c\x00\x00\x00\x01\x00\x02\x92\x05\x00\x00\x00", 0x000000c);
288 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x000000c, 1000);
289 printf("31 bulk write returned %d, bytes: ", ret
);
290 print_bytes(buf
, ret
);
293 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
294 printf("32 bulk read returned %d, bytes: ", ret
);
295 print_bytes(buf
, ret
);
298 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
299 printf("33 bulk read returned %d, bytes: ", ret
);
300 print_bytes(buf
, ret
);
303 memcpy(buf
, "\x10\x00\x00\x00\x01\x00\x03\x92\x06\x00\x00\x00\x01\xd2\x00\x00", 0x0000010);
304 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x0000010, 1000);
305 printf("34 bulk write returned %d, bytes: ", ret
);
306 print_bytes(buf
, ret
);
309 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
310 printf("35 bulk read returned %d, bytes: ", ret
);
311 print_bytes(buf
, ret
);
314 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
315 printf("36 bulk read returned %d, bytes: ", ret
);
316 print_bytes(buf
, ret
);
319 memcpy(buf
, "\x10\x00\x00\x00\x01\x00\x03\x92\x07\x00\x00\x00\x03\xd2\x00\x00", 0x0000010);
320 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x0000010, 1000);
321 printf("37 bulk write returned %d, bytes: ", ret
);
322 print_bytes(buf
, ret
);
325 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
326 printf("38 bulk read returned %d, bytes: ", ret
);
327 print_bytes(buf
, ret
);
330 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
331 printf("39 bulk read returned %d, bytes: ", ret
);
332 print_bytes(buf
, ret
);
335 memcpy(buf
, "\x10\x00\x00\x00\x01\x00\x03\x92\x08\x00\x00\x00\x05\x50\x00\x00", 0x0000010);
336 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x0000010, 1000);
337 printf("40 bulk write returned %d, bytes: ", ret
);
338 print_bytes(buf
, ret
);
341 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
342 printf("41 bulk read returned %d, bytes: ", ret
);
343 print_bytes(buf
, ret
);
346 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
347 printf("42 bulk read returned %d, bytes: ", ret
);
348 print_bytes(buf
, ret
);
351 memcpy(buf
, "\x10\x00\x00\x00\x01\x00\x03\x92\x09\x00\x00\x00\x13\x50\x00\x00", 0x0000010);
352 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x0000010, 1000);
353 printf("43 bulk write returned %d, bytes: ", ret
);
354 print_bytes(buf
, ret
);
357 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
358 printf("44 bulk read returned %d, bytes: ", ret
);
359 print_bytes(buf
, ret
);
362 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
363 printf("45 bulk read returned %d, bytes: ", ret
);
364 print_bytes(buf
, ret
);
367 memcpy(buf
, "\x10\x00\x00\x00\x01\x00\x03\x92\x0a\x00\x00\x00\x04\x50\x00\x00", 0x0000010);
368 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x0000010, 1000);
369 printf("46 bulk write returned %d, bytes: ", ret
);
370 print_bytes(buf
, ret
);
373 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
374 printf("47 bulk read returned %d, bytes: ", ret
);
375 print_bytes(buf
, ret
);
378 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
379 printf("48 bulk read returned %d, bytes: ", ret
);
380 print_bytes(buf
, ret
);
383 memcpy(buf
, "\x10\x00\x00\x00\x01\x00\x06\x92\x0b\x00\x00\x00\x10\xd2\x00\x00", 0x0000010);
384 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x0000010, 1000);
385 printf("49 bulk write returned %d, bytes: ", ret
);
386 print_bytes(buf
, ret
);
389 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
390 printf("50 bulk read returned %d, bytes: ", ret
);
391 print_bytes(buf
, ret
);
394 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
395 printf("51 bulk read returned %d, bytes: ", ret
);
396 print_bytes(buf
, ret
);
399 memcpy(buf
, "\x10\x00\x00\x00\x01\x00\x03\x92\x0c\x00\x00\x00\x11\xd2\x00\x00", 0x0000010);
400 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x0000010, 1000);
401 printf("52 bulk write returned %d, bytes: ", ret
);
402 print_bytes(buf
, ret
);
405 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
406 printf("53 bulk read returned %d, bytes: ", ret
);
407 print_bytes(buf
, ret
);
410 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
411 printf("54 bulk read returned %d, bytes: ", ret
);
412 print_bytes(buf
, ret
);
415 memcpy(buf
, "\x10\x00\x00\x00\x01\x00\x06\x92\x0d\x00\x00\x00\x0f\xd2\x00\x00", 0x0000010);
416 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x0000010, 1000);
417 printf("55 bulk write returned %d, bytes: ", ret
);
418 print_bytes(buf
, ret
);
421 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
422 printf("56 bulk read returned %d, bytes: ", ret
);
423 print_bytes(buf
, ret
);
426 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
427 printf("57 bulk read returned %d, bytes: ", ret
);
428 print_bytes(buf
, ret
);
431 memcpy(buf
, "\x18\x00\x00\x00\x01\x00\x01\x92\x0e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 0x0000018);
432 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x0000018, 1000);
433 printf("58 bulk write returned %d, bytes: ", ret
);
434 print_bytes(buf
, ret
);
437 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
438 printf("59 bulk read returned %d, bytes: ", ret
);
439 print_bytes(buf
, ret
);
441 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
442 printf("60 bulk read returned %d, bytes: ", ret
);
443 print_bytes(buf
, ret
);
445 // get info (bulk read 62)
447 memcpy(buf
, "\x0c\x00\x00\x00\x01\x00\x08\x92\x0f\x00\x00\x00", 0x000000c);
448 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x000000c, 1000);
449 printf("61 bulk write returned %d, bytes: ", ret
);
450 print_bytes(buf
, ret
);
453 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
454 printf("62 bulk read returned %d, bytes: ", ret
);
455 print_bytes(buf
, ret
);
458 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
459 printf("63 bulk read returned %d, bytes: ", ret
);
460 print_bytes(buf
, ret
);
462 // 9207: close down aperture
464 memcpy(buf
, "\x10\x00\x00\x00\x01\x00\x07\x92\x10\x01\x00\x00\x07\x50\x00\x00", 0x0000010);
465 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x0000010, 1000);
466 printf("1147 bulk write returned %d, bytes: ", ret
);
467 print_bytes(buf
, ret
);
470 memcpy(buf
, "\x0d\x00\x00\x00\x02\x00\x07\x92\x10\x01\x00\x00\x01", 0x000000d);
471 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x000000d, 1000);
472 printf("1148 bulk write returned %d, bytes: ", ret
);
473 print_bytes(buf
, ret
);
476 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
477 printf("1149 bulk read returned %d, bytes: ", ret
);
478 print_bytes(buf
, ret
);
481 // get info (bulk read 62)
483 memcpy(buf
, "\x0c\x00\x00\x00\x01\x00\x08\x92\x0f\x00\x00\x00", 0x000000c);
484 ret
= usb_bulk_write(devh
, 0x00000001, buf
, 0x000000c, 1000);
485 printf("61 bulk write returned %d, bytes: ", ret
);
486 print_bytes(buf
, ret
);
489 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
490 printf("62 bulk read returned %d, bytes: ", ret
);
491 print_bytes(buf
, ret
);
494 ret
= usb_bulk_read(devh
, 0x00000082, buf
, 0x0000200, 1030);
495 printf("63 bulk read returned %d, bytes: ", ret
);
496 print_bytes(buf
, ret
);
499 ret
= usb_release_interface(devh
, 0);
501 ret
= usb_close(devh
);