From: Xiaofan C. <xia...@gm...> - 2009-04-07 14:07:56
|
On Tue, Apr 7, 2009 at 6:47 PM, Richard <rk...@us...> wrote: >> Supposedly libusb-1.0 will try /dev/bus/usb (sysfs) >> first, it that fails, it will try /proc/bus/usb (usbfs). >> So there might be a bug in the code. Maybe you >> can enable debug and send out the log and hopefully >> the developer can find the hidden bug. > > Are there some instructions available how to do this? > Thanks, > You can try call libusb_set_debug() after libusb_init() but it does not seem to work right now (need to check further). Or you can build libusb with the following. ./configure --enable-debug-log --prefix=/usr make sudo make install This is the example output from the example lsusb.c output. [mcuee@acerpc examples]$ ./lsusb libusb:debug [libusb_init] libusb:debug [find_usbfs_path] found usbfs at /dev/bus/usb libusb:debug [op_init] found usb devices in sysfs libusb:debug [usbi_add_pollfd] add fd 3 events 1 libusb:debug [libusb_init] created default context libusb:debug [libusb_get_device_list] libusb:debug [sysfs_scan_device] scan usb1 libusb:debug [sysfs_scan_device] sysfs descriptors available libusb:debug [sysfs_scan_device] bus=1 dev=1 libusb:debug [enumerate_device] busnum 1 devaddr 1 session_id 257 libusb:debug [enumerate_device] allocating new device for 1/1 (session 257) libusb:debug [sysfs_scan_device] scan usb2 libusb:debug [sysfs_scan_device] bus=2 dev=1 libusb:debug [enumerate_device] busnum 2 devaddr 1 session_id 513 libusb:debug [enumerate_device] allocating new device for 2/1 (session 513) libusb:debug [sysfs_scan_device] scan 2-1 libusb:debug [sysfs_scan_device] bus=2 dev=2 libusb:debug [enumerate_device] busnum 2 devaddr 2 session_id 514 libusb:debug [enumerate_device] allocating new device for 2/2 (session 514) libusb:debug [sysfs_scan_device] scan 2-3 libusb:debug [sysfs_scan_device] bus=2 dev=3 libusb:debug [enumerate_device] busnum 2 devaddr 3 session_id 515 libusb:debug [enumerate_device] allocating new device for 2/3 (session 515) libusb:debug [sysfs_scan_device] scan 2-7 libusb:debug [sysfs_scan_device] bus=2 dev=4 libusb:debug [enumerate_device] busnum 2 devaddr 4 session_id 516 libusb:debug [enumerate_device] allocating new device for 2/4 (session 516) libusb:debug [sysfs_scan_device] scan 2-8 libusb:debug [sysfs_scan_device] bus=2 dev=5 libusb:debug [enumerate_device] busnum 2 devaddr 5 session_id 517 libusb:debug [enumerate_device] allocating new device for 2/5 (session 517) libusb:debug [libusb_get_device_descriptor] 1d6b:0002 (bus 1, device 1) libusb:debug [libusb_get_device_descriptor] 1d6b:0001 (bus 2, device 1) libusb:debug [libusb_get_device_descriptor] 058f:9360 (bus 2, device 2) libusb:debug [libusb_get_device_descriptor] 046d:c054 (bus 2, device 3) libusb:debug [libusb_get_device_descriptor] 04d8:0033 (bus 2, device 4) libusb:debug [libusb_get_device_descriptor] 04d8:8001 (bus 2, device 5) libusb:debug [libusb_unref_device] destroy device 1.1 libusb:debug [libusb_unref_device] destroy device 2.1 libusb:debug [libusb_unref_device] destroy device 2.2 libusb:debug [libusb_unref_device] destroy device 2.3 libusb:debug [libusb_unref_device] destroy device 2.4 libusb:debug [libusb_unref_device] destroy device 2.5 libusb:debug [libusb_exit] libusb:debug [usbi_remove_pollfd] remove fd 3 libusb:debug [libusb_exit] freeing default context The relevant code in linux_usbfs.c static const char *find_usbfs_path(void) { const char *path = "/dev/bus/usb"; const char *ret = NULL; if (check_usb_vfs(path)) { ret = path; } else { path = "/proc/bus/usb"; if (check_usb_vfs(path)) ret = path; } usbi_dbg("found usbfs at %s", ret); return ret; } static int op_init(struct libusb_context *ctx) { struct stat statbuf; int r; usbfs_path = find_usbfs_path(); if (!usbfs_path) { usbi_err(ctx, "could not find usbfs"); return LIBUSB_ERROR_OTHER; } r = stat(SYSFS_DEVICE_PATH, &statbuf); if (r == 0 && S_ISDIR(statbuf.st_mode)) { usbi_dbg("found usb devices in sysfs"); } else { usbi_dbg("sysfs usb info not available"); sysfs_has_descriptors = 0; sysfs_can_relate_devices = 0; } return 0; } Regards, Xiaofan |