From: TongKe X. <ton...@gm...> - 2009-05-27 04:39:12
|
Hi! I realize this email is almost useless, but please stay with me -- I'm dealing with a non-standard usb device, and I'm not sure what information to log + collect to help with this. Here's my situation, we have a custom made USB device, let's call it XYZ. It's using a Cypress chip, with some custom written code for async io. XYZ, connected to Windows with our self written code <--> works fine. XYZ, connected to Linux, with code ported to libusb <--> works fine XYZ, connected to MacOS X, with libusb 1.0.1, with linux code <--> _crashes_ Mac OS X. I'm not kidding. It crashes my Mac -- forcing an entire reboot (of going to EFI, choosing between MacOSX / Ubuntu, before booting up). So at this point, I'm not sure how to begin debugging this -- and I would like to ask, what information should I collect? how should I collect it? to make this most useful for me to post on to the list so we can together figure out how I've managed to crash MacOSX using libusb 1.0.1 Thanks! --TongKe |
From: Xiaofan C. <xia...@gm...> - 2009-05-27 05:06:16
|
On Wed, May 27, 2009 at 12:39 PM, TongKe Xue <ton...@gm...> wrote: > I realize this email is almost useless, but please stay with me -- > I'm dealing with a non-standard usb device, and I'm not sure what > information to log + collect to help with this. > > Here's my situation, we have a custom made USB device, let's call it > XYZ. It's using a Cypress chip, with some custom written code for > async io. > > XYZ, connected to Windows with our self written code <--> works fine. > XYZ, connected to Linux, with code ported to libusb <--> works fine Is this using libusb 1.0.1? > XYZ, connected to MacOS X, with libusb 1.0.1, with linux code <--> > _crashes_ Mac OS X. So it seems to be a Mac OS X problem or a problem with the libusb implementation under Mac OS X. > I'm not kidding. It crashes my Mac -- forcing an entire reboot (of > going to EFI, choosing between MacOSX / Ubuntu, before booting up). > > So at this point, I'm not sure how to begin debugging this -- and I > would like to ask, what information should I collect? how should I > collect it? to make this most useful for me to post on to the list so > we can together figure out how I've managed to crash MacOSX using > libusb 1.0.1 > I do not have a Mac OS X and i do not know much about it. But anyway, normally the following would help to debugging the issues. 1) More details of the device, what does it do, etc. 2) Output of "lsusb -vvv", you can do it under Linux. 3) Before you run your libusb application, does Mac OS X already recognize your device? 4) Enable debugging and logging of USB communication in your libusb application. And hopefully the log can survive the crash. 5) Run your application under a debugger, like gdb and post your findings. 6) If it is possible, post your codes. For logging, here is an example. It is for libusb 0.1 but you can easily adapt it to libusb 1.0. http://ww1.microchip.com/downloads/en/DeviceDoc/pk2cmdv1.20LinuxMacSource.tar.gz # define PICKIT_USB(direction) usb_interrupt_##direction int readBlock(pickit_dev *d, int len, byte *dest) { int i, j, r; byte bfr[reqLen + 1]; r = PICKIT_USB(read)(d, pickit_endpoint_in, (char *) bfr, reqLen, pickit_timeout); if (r != reqLen) { if (verbose) { printf("USB read did not return 64 bytes\n"); fflush(stdout); } return 0; } if (usbdebug & USB_DEBUG_RECV) { if (!usbFile) usbFile = stdout; fprintf(usbFile, "USB<"); for (i=0, j=0; i<len; i++) { fprintf(usbFile, " %02x", bfr[i] & 0xff); j++; if ((j > 15) && (i < (len - 1))) { j = 0; fprintf(usbFile, "\n "); } } fprintf(usbFile, "\n"); fflush(usbFile); } for (i=0; i<len; i++) dest[i] = bfr[i]; return len; } -- Xiaofan http://mcuee.blogspot.com |