This is the Readme file to Objective Development's firmware-only USB driver
for Atmel AVR microcontrollers. For more information please visit
http://www.obdev.at/avrusb/
This directory contains the USB firmware only. Copy it as-is to your own
project and add your own version of "usbconfig.h". A template for your own
"usbconfig.h" can be found in "usbconfig-prototype.h" in this directory.
TECHNICAL DOCUMENTATION
=======================
The technical documentation for the firmware driver is contained in the file
"usbdrv.h". Please read all of it carefully!
USB IDENTIFIERS
===============
Every USB device needs a vendor- and a product-identifier (VID and PID). VIDs
are obtained from usb.org for a price of 1,500 USD. Once you have a VID, you
can assign PIDs at will.
Since an entry level cost of 1,500 USD is too high for most small companies
and hobbyists, we provide a single VID/PID pair for free. If you want to use
your own VID and PID instead of our's, define the macros "USB_CFG_VENDOR_ID"
and "USB_CFG_DEVICE_ID" accordingly in "usbconfig.h".
To use our predefined VID/PID pair, you MUST conform to a couple of
requirements. See the file "USBID-License.txt" for details.
HOST DRIVER
===========
You have received this driver together with an example device implementation
and an example host driver. The host driver is based on libusb and compiles
on various Unix flavors (Linux, BSD, Mac OS X). It also compiles natively on
Windows using MinGW (see www.mingw.org) and libusb-win32 (see
libusb-win32.sourceforge.net). The "Automator" project contains a native
Windows host driver (not based on libusb) for Human Interface Devices.
DEVELOPMENT SYSTEM
==================
This driver has been developed and optimized for the GNU compiler version 3
(gcc 3). It does work well with gcc 4 and future versions will probably be
optimized for gcc 4. We recommend that you use the GNU compiler suite because
it is freely available. AVR-USB has also been ported to the IAR compiler and
assembler. It has been tested with IAR 4.10B/W32 and 4.12A/W32 on an ATmega8
with the "small" and "tiny" memory model. Please note that gcc is more
efficient for usbdrv.c because this module has been deliberately optimized
for gcc.
USING AVR-USB FOR FREE
======================
The AVR firmware driver is published under an Open Source compliant license.
See the file "License.txt" for details. Since it is not obvious for many
people how this license applies to their own projects, here's a short guide:
(1) The USB driver and all your modifications to the driver itself are owned
by Objective Development. You must give us a worldwide, perpetual,
irrevocable royalty free license for your modifications.
(2) Since you own the code you have written (except where you modify our
driver), you can (at least in principle) determine the license for it freely.
However, to "pay" for the USB driver code you link against, we demand that
you choose an Open Source compliant license (compatible with our license) for
your source code and the hardware circuit diagrams. Simply attach your
license of choice to your parts of the project and leave our "License.txt" in
the "usbdrv" subdirectory.
(3) We also demand that you publish your work on the Internet and drop us a
note with the URL. The publication must meet certain formal criteria (files
distributed, file formats etc.). See the file "License.txt" for details.
Other than that, you are allowed to manufacture any number of units and sell
them for any price. If you like our driver, we also encourage you to make a
donation on our web site.
COMMERCIAL LICENSES FOR AVR-USB
===============================
If you don't want to publish your source code and the circuit diagrams under
an Open Source license, you can simply pay money for AVR-USB. As an
additional benefit you get USB PIDs for free, licensed exclusively to you.
See http://www.obdev.at/products/avrusb/license.html for details.