Benefits over Alternative Solutions

Why not choose a microcontroller with built-in USB hardware? There are several of these available (see Or combine the microcontroller of your choice with a USB chip?

Advantages over Microcontrollers with USB Hardware

  • Standard AVR controllers are usually easier to obtain.
  • Most of the controllers with USB support are only available in SMD, which is almost impossible to handle for hobbyists.
  • V-USB comes with a free shared Vendor- / Product-ID pair.
  • A good free ANSI-C compiler (GNU gcc) and a free development system for Windows (WinAVR) are available for AVR.
  • AVR controllers are faster than most of the controllers with integrated USB and cost less.
  • Stand-alone operation: Some of the USB controllers download their firmware from the host computer into RAM. They don’t work without connection to the host.
  • AVR controllers have on-chip EEPROM.

Advantages over separate USB Peripheral

  • No additional cost.
  • No additional hardware complexity: simpler PCB, less failures.
  • More freedom in the choice of USB descriptors.
  • V-USB comes with a free shared Vendor- / Product-ID pair.
  • Little hardware resources used: only two to three I/O pins.
  • USB chips are often hard to obtain.

Advantages over other Firmware-Only Implementations

A similar driver for the AVR series of microcontrollers is available from Igor Češko. Our USB driver has the following advantages over Igor’s driver:

  • All customizable code written in ANSI-C and thus easier to maintain.
  • Modular concept: easier to integrate into existing designs.
  • Slightly smaller code size in spite of high level language modules.
  • Faster: All encoding/decoding (USB requires NRZI coding and bit stuffing) is done in real-time, not in the main loop after storing away the raw data stream.
  • More endpoints, USB descriptors can be better customized.
  • V-USB comes with a free shared Vendor- / Product-ID pair.
  • The level of standards conformance is documented (description of limitations and potential problems).
  • Licensed under the terms of the GNU General Public License or alternatively under a commercial license.

Dick Streefland has stripped down an older version of V-USB to the basics. His code is easier to read and understand, but lacks some of the features found in V-USB:

  • V-USB supports up to 4 endpoints. This allows implementing devices conforming to the HID or CDC device class.
  • V-USB passes the tests in’s test utility.
  • V-USB supports many different clock rates, some even with the internal RC oscillator.