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.

Official LUFA Logo

The Official LUFA Project Logo, by Studio Monsoon Photography

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:

Downloads
 

Vital Stats

  • 25 Years Old
  • Australian
  • Lover of embedded systems
  • Firmware engineer at LIFX
  • Self-Proclaimed Geek