LUFA (2010)
LUFA (Lightweight USB Framework for AVRs, formerly known as MyUSB) is my first foray into the world of USB. It is an open-source complete USB stack for the USB-enabled Atmel 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 Device
- Generic HID Device
- Generic HID Host
- Joystick Device
- Joystick Host
- Keyboard Device
- Keyboard/Mouse Device
- Keyboard Host
- Keyboard Host/Device Dual Mode
- Mass Storage Device
- Mass Storage/Keyboard Device
- Mass Storage Host
- MIDI Device
- MIDI Host
- Mouse Device
- Mouse Host
- Printer Host
- RNDIS (CDC) Ethernet Device
- RNDIS (CDC) Ethernet Host
- Still Image Host
- Virtual Serial Device
- Virtual Serial/Mouse Device
- Virtual Serial Host
LUFA also contains USB bootloaders for the following USB classes:
- CDC Class, AVR109 protocol compatible (AVRDude)
- DFU Class, Atmel DFU protocol compatible (Atmel FLIP, dfu-programmer)
- HID Class, Teensy protocol compatible (Teensy Loader)
The following LUFA powered open source projects are also included in the LUFA package:
- Arduino Programmer Adapter for the Benito board
- AVRStudio compatible AVRISP-MKII Programmer Clone (ISP, PDI and TPI 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
- Temperature Datalogger project, which logs data to the on-board Dataflash's FAT partition
- Webserver using uIP to serve pages via an attached RNDIS device
- XPLAIN UART-to-USB bridge/PDI Programmer
Downloads
- LUFA 100219 ( Mirror, Prebuilt Docs, Online Docs )
- LUFA 091223 ( Mirror, Prebuilt Docs, Online Docs )
- LUFA 091122 ( Mirror, Prebuilt Docs, Online Docs )
- LUFA 090924 ( Mirror, Prebuilt Docs, Online Docs )
- LUFA 090810 ( Mirror, Prebuilt Docs, Online Docs )
- LUFA 090605 ( Mirror, Prebuilt Docs, Online Docs )
- LUFA 090510 ( Mirror, Prebuilt Docs, Online Docs )
- LUFA 090401 ( Mirror, Prebuilt Docs, Online Docs )
- LUFA 090209 ( Mirror, Prebuilt Docs, Online Docs )
- LUFA 081217 ( Mirror, Prebuilt Docs, Online Docs )
- MyUSB 1.5.3 ( Mirror, Prebuilt Docs )
- MyUSB 1.5.2 ( Mirror, Prebuilt Docs )
- MyUSB 1.5.1 ( Mirror, Prebuilt Docs )
- MyUSB 1.5.0 ( Mirror, Prebuilt Docs )
- MyUSB 1.4.1 ( Mirror )
- MyUSB 1.4.0 ( Mirror )
- MyUSB 1.3.2 ( Mirror )
- MyUSB 1.3.1 ( Mirror )
- MyUSB 1.3.0 ( Mirror )
- MyUSB 1.3.0 ( Mirror )
- MyUSB 1.2.0 ( Mirror )
- MyUSB 1.1.0 ( Mirror )
- MyUSB 1.0.2 ( Mirror )