LUFA (2013)
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 AVR8 and (some of the) AVR32 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 Atmel 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 (most in both Low Level API and Library USB Class Driver variants):
- Android Accessory Host
- Audio In Device
- Audio In Host
- Audio Out Device
- Audio Out Host
- Bulk Vendor Device
- Dual MIDI 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 Host
- Virtual Serial/Mass Storage Device
- Virtual Serial/Mouse Device
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, with an included custom cross-platform loader application
- Printer Class, using the OS's native printer drivers
- Mass Storage Class, using the OS's native USB storage drivers
The following LUFA powered open source projects are also included in the LUFA package:
- Atmel Studio 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
- HID Device Report viewer
- LED Notifier project, with several .NET host examples
- Media Player Controller
- MIDI Tone Generator project
- OBinou's Relay Board controller project
- Temperature Datalogger project, which logs data to the on-board Dataflash's FAT partition
- USB to Serial adapter
- Webserver using uIP to serve pages via an attached RNDIS device
- XPLAIN UART-to-USB bridge/PDI Programmer
Downloads
- LUFA 170418 ( Mirror, Prebuilt Docs, Online Docs, Atmel Studio Extension )
- LUFA 151115 ( Mirror, Prebuilt Docs, Online Docs, Atmel Studio Extension )
- LUFA 140928 ( Mirror, Prebuilt Docs, Online Docs, Atmel Studio Extension )
- LUFA 140302 ( Mirror, Prebuilt Docs, Online Docs, Atmel Studio Extension )
- LUFA 130901 ( Mirror, Prebuilt Docs, Online Docs, Atmel Studio Extension )
- LUFA 130303 ( Mirror, Prebuilt Docs, Online Docs, Atmel Studio Extension )
- LUFA 120730 ( Mirror, Prebuilt Docs, Online Docs )
- LUFA 120219 ( Mirror, Prebuilt Docs, Online Docs )
- LUFA 111009 ( Mirror, Prebuilt Docs )
- LUFA 110528 ( Mirror, Prebuilt Docs )
- LUFA 101122 ( Prebuilt Docs )
- LUFA 100807 ( Prebuilt Docs )
- LUFA 100513 ( Prebuilt Docs )
- LUFA 100219 ( Prebuilt Docs )
- LUFA 091223 ( Prebuilt Docs )
- LUFA 091122 ( Prebuilt Docs )
- LUFA 090924 ( Prebuilt Docs )
- LUFA 090810 ( Prebuilt Docs )
- LUFA 090605 ( Prebuilt Docs )
- LUFA 090510 ( Prebuilt Docs )
- LUFA 090401 ( Prebuilt Docs )
- LUFA 090209 ( Prebuilt Docs )
- LUFA 081217 ( Prebuilt Docs )
- MyUSB 1.5.3 ( Prebuilt Docs )
- MyUSB 1.5.2 ( Prebuilt Docs )
- MyUSB 1.5.1 ( Prebuilt Docs )
- MyUSB 1.5.0 ( Prebuilt Docs )
- MyUSB 1.4.1 ( )
- MyUSB 1.4.0 ( )
- MyUSB 1.3.2 ( )
- MyUSB 1.3.1 ( )
- MyUSB 1.3.0 ( )
- MyUSB 1.3.0 ( )
- MyUSB 1.2.0 ( )
- MyUSB 1.1.0 ( )
- MyUSB 1.0.2 ( )