LUFA is donationware. For author and donation information, see Donating to Support This Project.
LUFA is an open-source USB library for the USB-enabled AVR microcontrollers, released under the MIT license (see Source Code License). It supports a large number of USB AVR models and boards (see Device and Hardware Support). It is designed to provide an easy to use, feature rich framework for the development of USB peripherals and hosts.
LUFA focuses on the microcontroller side of USB development only; it includes no PC host USB driver development facilities - other projects such as the Windows Driver Development Kit, Windows USB Device Mode Framework and libusb may be of interest for developing custom OS drivers. While custom USB devices can be made with LUFA using such tools, the included demos all use the inbuilt OS drivers for each USB class for simplicity.
The library is currently in a stable release, suitable for download and incorporation into user projects for both host and device modes. For information about the project progression, see the blog link at Library Resources.
LUFA is written specifically for the free AVR-GCC compiler, and uses several GCC-only extensions to make the library API more streamlined and robust. You can download AVR-GCC for free in a convenient windows package, from the the WinAVR website (see Library Resources).
The only required AVR peripherals for LUFA is the USB controller itself and interrupts - LUFA does not require the use of the microcontroller's timers or other hardware, leaving more hardware to the application developer.
Accompanying LUFA in the download package is a set of example demo applications, plus several Bootloaders of different classes and open source LUFA powered projects.