If you do have a driver already driving your device, and you need to 
remove that driver, you can use a UsbInterfacePolicy while claiming the 
UsbInterface, and make the "forceClaim" method in the policy return true.

You will need a kernel with USBDEVFS_DISCONNECT support in it.  While 
building the javax-usb-ri-linux package, the JNI code will display a 
warning if you do not have this support in your kernel (header files).

Your code indicates that you are doing a SET_REPORT (not set descriptor) 
to a HID device.  All HID devices are claimed by the HID driver and so you 
will need to do the forceClaim to remove HID from your interface.  Your 
interface is interface 0 (according to your code) so you need to 
forceClaim interface 0 on your device.  Then you should be able to do the 
SET_REPORT.


On Thu, 15 Jul 2004, Tomaz Hutter wrote:

>Hello,
>
>I am trying to submit a control IRP packet to an USB device (UsbDevice.
>asyncSubmit(UsbControlIrp irp)) and I get the following Exception:
>
>javax.usb.UsbException: Error submitting IRP : Device or resource busy
>       at
>com.ibm.jusb.os.linux.LinuxPipeRequest.completeUsbIrp(LinuxPipeRequest.j
>ava:84)
>       at
>com.ibm.jusb.os.linux.LinuxPipeRequest.setCompleted(LinuxPipeRequest.jav
>a:74)
>       at com.ibm.jusb.os.linux.JavaxUsb.nativeDeviceProxy(Native
>Method)
>       at
>com.ibm.jusb.os.linux.LinuxDeviceProxy$1.run(LinuxDeviceProxy.java:87)
>       at java.lang.Thread.run(Thread.java:536)
>
>My question:
>I assume the problem is because Linux loads an USB driver for this
>device (keyboard driver). Is that true or is there some other issue to
>this problem? If it is true, how can I remove the driver?
>
>Thank you very much and kind regards,
>Tomaz
>
>
>My code:
>//I search for my USB device and put it into this.m_udDevice
>//create control IRP
>UsbControlIrp uciSetDescriptorRequest =
>this.m_udDevice.createUsbControlIrp(
>              (byte) 0x21,
>              (byte) 0x09,
>              (short) 0x0300,
>              (short) 0x0000);
>uciSetDescriptorRequest.setData(new byte[] {0x02});
>//submit control IRP
> try
> {
>   this.m_udDevice.syncSubmit(uciSetDescriptorRequest);
>   //exception is thrown in above method
> }
> catch (IllegalArgumentException ex)
> {
>   ex.printStackTrace();
> }
> catch (UsbException ex)
> {
>   ex.printStackTrace();
> }
>
>
>
>-------------------------------------------------------
>This SF.Net email is sponsored by BEA Weblogic Workshop
>FREE Java Enterprise J2EE developer tools!
>Get your free copy of BEA WebLogic Workshop 8.1 today.
>http://ads.osdn.com/?ad_idG21&alloc_id040&opĚk
>_______________________________________________
>javax-usb-devel mailing list
>[EMAIL PROTECTED]
>https://lists.sourceforge.net/lists/listinfo/javax-usb-devel
>

-- 
Dan Streetman
[EMAIL PROTECTED]
---------------------
186,272 miles per second:
It isn't just a good idea, it's the law!


-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_idG21&alloc_id040&op=click
_______________________________________________
javax-usb-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/javax-usb-devel

Reply via email to