Continue to Site

Welcome to

Welcome to our site! is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

How to write USB drivers ?

Not open for further replies.


Full Member level 3
Sep 19, 2002
Reaction score
Trophy points
Poland, Białystok
Activity points
I know exactly that the answer to my question is very difficult.
However, i have managed to understand USB protocol at last at the side of USB device. It's bot as difficult as it seems. The most difficult thing is to properly send device descriptors to the host. The rest is simple. More and more popular microcontrollers are supplied with USB harware port. One can utilize USB port to interface them to the PC by means of standard device class cuh as Mass Storage Class or Communication Class. However, it's not always convinient way of transferring data to the device. The device will shown itself in the PC as additional COM Port or a disc. I was told that USB drivers can work in user mode. Is it possible to access USB ports using API functions ?
The second question i want to ask is how to learn windows architecture and writing drivers in more convinient and clearer way that this is done in DDK ?

There are tools used to write USB driver. I know Snoopy and Jungo.
**broken link removed**

I hope it help.


You don't need to write a specific driver for your application. You should use a generic driver which is able to handle iso, bulk and/or interrupt transferts.

Libusb is a free generic driver but it dosen't support isochronous transfert. However, it is easy to use and available on linux and windows (libusb for c# too...).

I use winusb. This driver is provided by microsoft in the vista wdk. This driver works perfectly on WinXP.

Those two driver are the only free generic driver I know .There is also some free drivers provided by chip manufacturer (cypress, microchip,...) but I'm not sure you can use it if you don't use their chip...


Not open for further replies.

Part and Inventory Search

Welcome to