LUFA (2010)
LUFA (Lightweight USB Framework for AVRs, formerly known as MyUSB) is my first foray into the world of USB. Originally based on the AT90USBKEY from Atmel, it is an open-source, driver for the USB-enabled AT90USBxxxx and ATMEGAxxUx AVR microcontroller series, released under the permissive MIT License (see documentation or project source for full license details). The complete line of Atmel USB AVRs and USB AVR boards are supported by the library, as are any custom user boards, via custom board hardware drivers supplied by the user.
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, check out my blog.
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.
Included with the library source are many demonstration applications showing off the use of the library. Currently the library includes the following demonstration applications designed for the USBKEY, STK525, STK526, EVK527, XPLAIN and RZUSBSTICK boards (most in both Low Level API and Library USB Class Driver variants):
- Audio In Device
- Audio Out Device
- Dual Virtual Serial
- Joystick Device
- Keyboard Device
- Keyboard and Mouse Device
- Keyboard Host
- Keyboard Host/Device Dual Mode
- Mass Storage Device
- Mass Storage/Keyboard Composite Device
- Mass Storage Host
- MIDI Device
- Mouse Device
- Mouse Host
- Printer Host
- RNDIS (CDC) Ethernet Device
- RNDIS (CDC) Ethernet Host
- Still Image Host
- Virtual Serial Device
- Virtual Serial Host
LUFA also contains USB bootloaders for the following USB classes:
- CDC Class Bootloader, compatible with the AVR109 protocol (AVRDude compatible)
- DFU Class Bootloader, compatible with the Atmel DFU protocol (Atmel FLIP, dfu-programmer compatible)
- HID Class Bootloader, compatible with the Teensy protocol (Teensy Loader compatible)
The following LUFA powered open source projects' source code is also included in the LUFA package:
- Arduino Programmer Adapter for the Benito board
- AVRStudio compatible AVRISP-MKII Programmer Clone (ISP and PDI protocols)
- Dave Fletcher's USB Missile Launcher Host
- Denver Gingerich's Stripe Snoop compatible Magnetic Stripe reader
- LED Notifier Project, with several .NET host examples
- USB to Serial adapter
- XPLAIN UART-to-USB bridge
Project Links:
- LUFA Public Support Mailing List
- LUFA Project Issue Tracker
- LUFA Subversion Repository Mirror
- LUFA Git Repository Mirror
- Latest In-Development Source
Downloads
- LUFA 100219 BETA.zip (Mirror) (Beta Release - For Testing Only)
- LUFA 091223.zip (Mirror) (Latest Official Release)
- LUFA 091122.zip (Mirror)
- LUFA 090924.zip (Mirror)
- LUFA 090810.zip (Mirror)
- LUFA 090605.zip (Mirror)
- LUFA 090510.zip (Mirror)
- LUFA 090401.zip (Mirror)
- LUFA 090209.zip (Mirror)
- LUFA 081217.zip (Mirror)
- MyUSB 1.5.3.zip (Mirror) (Obsolete)
- MyUSB 1.5.2.zip (Mirror) (Obsolete)
- MyUSB 1.5.1.zip (Mirror) (Obsolete)
- MyUSB 1.5.0.zip (Mirror) (Obsolete)
- MyUSB 1.4.1.zip (Mirror) (Obsolete)
- MyUSB 1.4.0.zip (Mirror) (Obsolete)
- MyUSB 1.3.2.zip (Mirror) (Obsolete)
- MyUSB 1.3.1.zip (Mirror) (Obsolete)
- MyUSB 1.3.0.zip (Mirror) (Obsolete)
- MyUSB 1.2.0.zip (Mirror) (Obsolete)
- MyUSB 1.1.0.zip (Mirror) (Obsolete)
- MyUSB 1.0.2.zip (Mirror) (Obsolete)
- LUFA 091223 Documentation.zip (Online Version)
- LUFA 091122 Documentation.zip (Online Version)
- LUFA 090924 Documentation.zip (Online Version)
- LUFA 090810 Documentation.zip (Online Version)
- LUFA 090605 Documentation.zip (Online Version)
- LUFA 090510 Documentation.zip (Online Version)
- LUFA 090401 Documentation.zip (Online Version)
- LUFA 090209 Documentation.zip (Online Version)
- LUFA 081217 Documentation.zip (Online Version)
- MyUSB 1.5.3 Documentation.zip (Online Version)
- MyUSB 1.5.2 Documentation.zip (Online Version)
- MyUSB 1.5.1 Documentation.zip (Online Version)
- MyUSB 1.5.0 Documentation.zip (Online Version)