From: Stuart T. <st...@cs...> - 2003-03-04 06:04:05
|
I have been using my Intel Pocket Concert MP3 player with Linux without problem for some time now. For some reason (maybe due to upgrading the kernel), it no longer works. When using any of the programs such as ./probe it prints "No error." Below is a conversation between myself and the developer of libipc helping me to troubleshoot this. I ran strace on ./probe as well as turned on debugging in the source code. He said it had to do with usb_find_devices(), but that usb_find_busses() is working. I'd really appreciate your help. Thanks :) ---------- Forwarded Message ---------- Subject: Re: [IPC] libipc sample programs just print "No error" Date: Monday 24 February 2003 12:29 am From: "Seagull" <se...@ar...> To: st...@cs... > I turned on the debugging: > > $ ./probe > usb_set_debug: Setting debugging level to 3 (on) > usb_os_init: Found USB VFS at /proc/bus/usb > usb_os_find_busses: Skipping non bus directory devices > usb_os_find_busses: Skipping non bus directory drivers > usb_os_find_busses: Found 002 > usb_os_find_busses: Found 001 You might want to drop this by the libusb folks. usb_find_busses() is finding the USB busses, but usb_find_devices() appears to do nothing. Cheers, John > No error > > $ strace ./probe > execve("./probe", ["./probe"], [/* 50 vars */]) = 0 > uname({sys="Linux", node="my ip address was here", ...}) = 0 > brk(0) = 0x804b700 > mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x459eb000 > open("/etc/ld.so.preload", O_RDONLY) = 3 > fstat64(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > close(3) = 0 > open("/etc/ld.so.cache", O_RDONLY) = 3 > fstat64(3, {st_mode=S_IFREG|0644, st_size=68349, ...}) = 0 > mmap2(NULL, 68349, PROT_READ, MAP_PRIVATE, 3, 0) = 0x459ec000 > close(3) = 0 > open("/usr/lib/libusb-0.1.so.4", O_RDONLY) = 3 > read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\21"..., 1024) > = 1024 > fstat64(3, {st_mode=S_IFREG|0755, st_size=30969, ...}) = 0 > mmap2(NULL, 26100, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x459fd000 > mprotect(0x45a02000, 5620, PROT_NONE) = 0 > mmap2(0x45a02000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, > 0x5) = 0x45a02000 > close(3) = 0 > open("/lib/libc.so.6", O_RDONLY) = 3 > read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0[\1\000"..., > 1024) = 1024 > fstat64(3, {st_mode=S_IFREG|0755, st_size=1449677, ...}) = 0 > mmap2(NULL, 1235172, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x45a04000 > mprotect(0x45b2a000, 30948, PROT_NONE) = 0 > mmap2(0x45b2a000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, > 0x125) > = 0x45b2a000 > mmap2(0x45b2e000, 14564, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x45b2e000 > close(3) = 0 > munmap(0x459ec000, 68349) = 0 > write(2, "usb_set_debug: Setting debugging"..., 49usb_set_debug: Setting > debugging level to 3 (on) > ) = 49 > open("/proc/bus/usb", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 3 > fstat64(3, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0 > fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 > brk(0) = 0x804b700 > brk(0x804d700) = 0x804d700 > brk(0x804e000) = 0x804e000 > getdents64(0x3, 0x804b738, 0x1000, 0) = 160 > close(3) = 0 > write(2, "usb_os_init: Found USB VFS at /p"..., 44usb_os_init: Found USB > VFS at > /proc/bus/usb > ) = 44 > open("/proc/bus/usb", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 3 > fstat64(3, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0 > fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 > getdents64(0x3, 0x804b738, 0x1000, 0) = 160 > write(2, "usb_os_find_busses: Skipping non"..., 55usb_os_find_busses: > Skipping non bus directory devices > ) = 55 > write(2, "usb_os_find_busses: Skipping non"..., 55usb_os_find_busses: > Skipping non bus directory drivers > ) = 55 > write(2, "usb_os_find_busses: Found 002\n", 30usb_os_find_busses: Found 002 > ) = 30 > brk(0x804f000) = 0x804f000 > write(2, "usb_os_find_busses: Found 001\n", 30usb_os_find_busses: Found 001 > ) = 30 > getdents64(0x3, 0x804b738, 0x1000, 0) = 0 > close(3) = 0 > write(2, "No error\n", 9No error > ) = 9 > _exit(1) = ? > > On Saturday 22 February 2003 05:18 pm, you wrote: > > Hmm... > > > > IPC_Discover() calls usb_init() inside of libusb. This, in turn, stats > > the > > > > /proc/bus/usb directory, which is this segment here: > > > open("/proc/bus/usb", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 3 > > > fstat64(3, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0 > > > fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 > > > brk(0) = 0x804b700 > > > brk(0x804d700) = 0x804d700 > > > brk(0x804e000) = 0x804e000 > > > getdents64(0x3, 0x804b738, 0x1000, 0) = 160 > > > close(3) = 0 > > > > Then, IPC_Discover() calls usb_find_busses() in libusb, which in turn > > > > calls usb_os_find_busses(), which is right here: > > > open("/proc/bus/usb", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 3 > > > fstat64(3, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0 > > > fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 > > > getdents64(0x3, 0x804b738, 0x1000, 0) = 160 > > > brk(0x804f000) = 0x804f000 > > > getdents64(0x3, 0x804b738, 0x1000, 0) = 0 > > > close(3) = 0 > > > > What's odd is that usb_find_devices(), which comes next in > > IPC_Discover(), doesn't seem to take any action. It's almost as if > > libusb is not registering having found any USB busses at all. > > > > Add this line to probe.c, just before IPC_Discover() is called: > > > > usb_set_debug(3); > > > > Then recompile and rerun. THis should generate some debug output from > > libusb. > > > > > > Cheers, > > John > > -- > > st...@ia... -- \ carpe cavy! seagull @ aracnet.com \ http://www.aracnet.com/~seagull/ \ (seize the guinea pig!) ------------------------------------------------------- |