On Mon, Jan 21, 2013 at 11:06 PM, Solovjev P.S. <solov...@rain.ifmo.ru> wrote: > On 21.01.2013 16:56, Xiaofan Chen wrote: >> Thanks. Now the debug log helps. >> >> 1) Firstly this is an USB composite device with 4 interfaces: >> Interface 0: Audio Control (using control endpoint only) >> Interface 1: Audio Streaming (EP03, ISOC OUT) >> Interface 2: HID (EP81, Interrupt IN) >> Interface 3: Custom interface (using control endpoint only). > > All true. > >> >> What is the interface you want to use in your application? >> I believe it is Interface 3 for your DFU. DFU uses control >> endpoint only so it matches with your device. > > Yes.
>> 3) How do you install the driver? Do you install the driver over the >> whole USB composite device or only the specific interface? >> >> You should use Zadig to install the device driver for interface 3. > > For interface 0 and 1 it uses standard drivers that are included with > the operating system. > > For interface 2 it uses libusb-win32 driver every time. You may want to keep the HID driver unless you need to use libusb-win32 API to access this HID interface. Take note libusbx supports native HID driver under Windows. But this is not the real problem here. > For interface 3 it uses Zadig (all three drivers). >> >> 4) You are using a DFU program. What is the program? Do you >> have the URL? > dfu-util 0.7 > Works fine with my usb device on linux. But on windows.... > > http://dfu-util.gnumonks.org/releases/dfu-util-0.7.tar.gz > >> >> 5) The DFU program seems to need to support USB reset. Take >> note WinUSB.sys will not support that. >> >> "Device really in Runtime Mode, send DFU detach request... >> Resetting USB..." > > Yes. program needs USB reset. Then WinUSB driver option is out. >> 6) It seems to me the DFU program may need some >> modification to suit your device. Apparently Interface 0 >> is not what you want, rather interface 3 is what you want. > > This program works fine on linux. Probably because the circumstances. I have not looked at the program, but I can guess why it works under Linux. If you look at Interface 0 and Interface 3, they both use the control endpoint which is common to all interface. So if the interface 0 is not attached to any other kernel driver in Linux other than usbfs or if the program detaches the original kernel driver, it is basically the same as Interface 3. So the program will work under Linux. Anyway, I think the program only needs minor modification to work under Windows. It needs to detect the right DFU interface to use (in this case it is Interface 3) or let the user specify a proper interface to use. You may want to talk to the author of the dfu-util and point them to this thread. -- Xiaofan ------------------------------------------------------------------------------ Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS and more. Get SQL Server skills now (including 2012) with LearnDevNow - 200+ hours of step-by-step video tutorials by Microsoft MVPs and experts. SALE $99.99 this month only - learn more at: http://p.sf.net/sfu/learnmore_122512 _______________________________________________ libusbx-devel mailing list libusbx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libusbx-devel