On Tue, 29 May 2007, Guillaume Dargaud wrote: > Hello all, > I just subscribed to the list and since the archive seems to be offline I > don't know if this has been answered before or if it is innapropriate. > > I'm trying to write code on Linux to communicate with a Cypress card. We > already have code running on windows using a customized version of libusb. > Running the same libusb on Linux or calling IOCTL directly doesn't work. > > Here's a little rundown: > - I first reused code from loadfx to upload our firmware to the card and > this seems to run fine. > - then when I want to start configuring the card and then doing bulk on it, > it won't work. > > [...] device configuration, fxload code, ... > > int ret, Config, Interface; > struct usbdevfs_setinterface interface; > struct usbdevfs_connectinfo connect={0xDEAD,0xBE}; > struct usbdevfs_getdriver driver; > > errno=0; > Config=1; > ret = ioctl(fd, USBDEVFS_SETCONFIGURATION, &Config); > if (ret < 0) > perror("Error setting Usb config"); > // seems to work > > errno=0; > Interface=0; > ret = ioctl(fd, USBDEVFS_CLAIMINTERFACE, &Interface); > if (ret < 0) > perror("Error claiming interface"); > // returns "Device or resource busy" > > // This is necessary > interface.interface = Interface; > interface.altsetting = 1; > errno=0; > ret = ioctl(fd, USBDEVFS_SETINTERFACE, &interface); > if (ret < 0) > perror("Error setting Usb alternate"); > // returns "Device or resource busy" > > errno=0; > ret = ioctl(fd, USBDEVFS_CONNECTINFO, &connect); > if (ret < 0) perror("Error getting connect info"); > else printf("Connect info: devnum %d, slow: %x\n", > connect.devnum, connect.slow); > // Returns Connect info: devnum 6, slow: 0 > > errno=0; > ret = ioctl(fd, USBDEVFS_GETDRIVER, &driver); > if (ret < 0) perror("Error getting driver info"); > else printf("Driver info: interface: %d, driver: %s\n", > driver.interface, driver.driver); > // returns "No data available" > > Any attempt at bulk transfer also returns "Device or resource busy" > > Checked the user permission on the dev file: > > $ ll $(./getdevpath -v 0547 -p 2235) > -rw-rw-rw- 1 root root 236 May 29 10:48 /proc/bus/usb/001/006 > > I've tried plenty of things (a C++ library based on libusb fails in the same > way) and I really don't know what to try next. I have the feeling I've > overlooked something obvious... Please enlighten me !!!
What do you see in /proc/bus/usb/devices? Maybe the interface is already claimed by another driver. Alan Stern ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Linux-usb-users@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-users