On Sat, 19 Jun 2004, Yoichi Aso wrote:
> Hello Alan,
>
> Thank you very much for your advice.
>
> > The key is to use the USBDEVFS_DISCONNECT ioctl call. Open the correct
> > device file /proc/bus/usb/BBB/DDD and send that ioctl. It will unbind
> > whichever kernel driver is currently bound to the device, leaving it
> > available for someone else to use.
>
> This sounds what I'm looking for.
> I wrote the following small program.
>
> --------------release-umass.c-----------------------------------
> #include <fcntl.h>
> #include <sys/ioctl.h>
> #include <linux/usbdevice_fs.h>
> #define ERR -1
>
> int main()
> {
> int d;
> void *p;
> if((d = open("/proc/bus/usb/002/002", O_RDWR | O_NONBLOCK)) == ERR)
> {
> perror("open");
> exit(1);
> }
> if(ioctl(d, USBDEVFS_DISCONNECT, p) == ERR)
> {
> perror("ioctl");
> exit(1);
> }
> return 0;
> }
> --------------------------------------------------
>
> The output of lsusb was,
> >lsusb
> Bus 005 Device 001: ID 0000:0000
> Bus 004 Device 002: ID 046d:c00c Logitech, Inc. Optical Wheel Mouse
> Bus 004 Device 001: ID 0000:0000
> Bus 003 Device 001: ID 0000:0000
> Bus 002 Device 002: ID 04da:1b01 Panasonic (Matsushita)
> Bus 002 Device 001: ID 0000:0000
> Bus 001 Device 001: ID 0000:0000
>
> Panasonic(Matsushita) is the SD card reader.
> However when I executed this program, the following error message was
> displayed.
>
> ioctl: Inappropriate ioctl for device
>
> Since I am a complete novice at system programing, I may have made
> stupid mistakes.
> Do you have any suggestion to solve the problem ?
>
> Regards, Yoichi.
Sorry, it's my mistake, not yours -- I gave you incomplete advice.
What you need to do is something like this:
struct usbdev_ioctl ctrl;
ctrl.ioctl_code = USBDEVFS_DISCONNECT;
ctrl.ifno = interface number of the interface bound to
the usb-storage driver,
look in /proc/bus/usb/devices to see what it is
p = &ctrl;
if (ioctl(d, USBDEVFS_IOCTL, p) == ERR) ...
Alan Stern
-------------------------------------------------------
This SF.Net email is sponsored by The 2004 JavaOne(SM) Conference
Learn from the experts at JavaOne(SM), Sun's Worldwide Java Developer
Conference, June 28 - July 1 at the Moscone Center in San Francisco, CA
REGISTER AND SAVE! http://java.sun.com/javaone/sf Priority Code NWMGYKND
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users