LUFA 090209 Released – Better than sliced bread!

LUFA 090209 has now been officially released, the second official release to carry the new LUFA project name. As always, there are plenty of improvements over previous iterations, but this one’s a “big ‘un” — I’ve found and fixed a massive number of bugs in the library, and added lots of new functionality. If you use LUFA (or even an ancient MyUSB version) now’s the time to upgrade to a much more stable platform.

Thanks to everyone who have contacted me with bug reports since the last release, and/or posted on the open LUFA development and support discussion list. I appreciate all the remote debugging efforts people have made, and I hope that this new release will be sufficient payback for their efforts.

Special thanks to Matt over at AVROpendous, who’s agreed to have his AVRISP project incorporated into the main releases. You’ll find Matt’s project in the Projects/ directory, which converts any USB AVR into a ISP programmer with the use of some open-source software. Very neat – here’s the project information page.

  • PWM timer mode in AudioOut demo changed to Fast PWM for speed
  • Updated Magstripe project to work with the latest hardware revision
  • Fixed library not responding to the BCERRI flag correctly in host mode, leading to device lockups
  • Fixed library handling Get Descriptor requests when not addressed as standard requests to the device or interface
  • Fixed serious data corruption issue in MassStorage demo dataflash write routine
  • Added new NO_CLEARSET_FEATURE_REQUEST compile time token
  • USB task now restores previous global interrupt state after execution, rather than forcing global interrupts to be enabled
  • Fixed USB_DeviceEnumerationComplete event firing after each configuration change, rather than once after the initial configuration
  • Added ENDPOINT_DOUBLEBANK_SUPPORTED() macros to Endpoint.h, altered ENDPOINT_MAX_SIZE() to allow user to specify endpoint
  • ENDPOINT_MAX_ENDPOINTS changed to ENDPOINT_TOTAL_ENDPOINTS, PIPE_MAX_PIPES changed to PIPE_TOTAL_PIPES
  • Endpoint and Pipe non-control stream functions now ensure endpoint or pipe is ready before reading or writing
  • Changed Teensy bootloader to use a watchdog reset when exiting rather than a software jump
  • Fixed integer promotion error in MassStorage and MassStorageHost demos, corrupting read/write transfers
  • SPI_SendByte is now SPI_TransferByte, added new SPI_SendByte and SPI_ReceiveByte functions for fast one-way transfer
  • MassStorage demo changed to use new fast one-way SPI transfers to increase throughput
  • MassStorage handling of Mass Storage Reset class request improved
  • Altered MassStorage demo dataflash block read code for speed
  • Added USB_IsSuspended global flag
  • Simplified internal Dual Mode (OTG) USB library code to reduce code size
  • Extended stream timeout period to 100ms from 50ms
  • Mass Storage Host demo commands now all return an error code from the Pipe_Stream_RW_ErrorCodes_t enum
  • Added SubErrorCode parameter to the USB_DeviceEnumerationFailed event
  • VBUS drop interrupt now disabled during the manual-to-auto VBUS delivery handoff
  • Simplified low level backend so that device/host mode initialization uses the same code paths
  • Added workaround for faulty Mass Storage devices which do not implement the required GET_MAX_LUN request
  • Removed buggy Telnet application from the RNDIS demo
  • Moved Mass Storage class requests in the Mass Storage Host demo to wrapper functions in MassStoreCommands.c
  • Fixed incorrect SCSI command size value in the Request Sense command in MassStoreCommands.c
  • Added SetProtocol request to HID class non-parser Mouse and Keyboard demos to force devices to use the correct Boot Protocol
  • Added new “dfu” and “flip” programming targets to project makefiles
  • HID_PARSE_Sucessful enum member typo corrected to HID_PARSE_Successful
  • Changed COLLECTION item strucutres in the HID descriptor parser to include the collection’s Usage Page value
  • Serial driver now sets Tx line as output, enables pullup on Rx line
  • Fixed smaller USB AVRs raising multiple connection and disconnection events when NO_LIMITED_CONTROLLER_CONNECT is disabled
  • Added HOST_DEVICE_SETTLE_DELAY_MS to give the host delay after a device is connected before it is enumerated
  • Fixed KeyboardHostWithParser demo linking against the wrong global variables
  • Completed doxygen documentation of remaining library bootloaders, demos and projects
  • Fixed incorrect bootloader start address in the TeensyHID bootloader
  • Added HWB button whole-disk ASCII dump functionality to MassStoreHost demo
  • Replaced printf_P(PSTR(“%c”), {Variable}) calls with putchar(<Variable>) for speed and size savings
  • Serial driver now accepts baud rates over 16-bits in size, added double speed flag option
  • Fixed incorrect callback abort return value in Pipe.c
  • Added new flip-ee and dfu-ee makefile targets (courtesy of Opendous Inc.)
  • Removed reboot-on-disconnect code from the TeensyHID bootloader, caused problems on some systems
  • Fixed AudioOutput and AudioInput demos looping on the endpoint data, rather than processing a sample at a time and returning each time the task runs to allow for other tasks to execute
  • Added support for the Atmel ATAVRUSBRF01 board
  • Added AVRISP Programmer Project, courtesy of Opendous Inc.
  • Fixed CDC Host demo not searching through both CDC interfaces for endpoints
  • Fixed incorrect Product String descriptor length in the DFU class bootloader
  • Fixed failed descriptor searches in ConfigDescriptor.c eating the last checked descriptor when another search is started
  • Added new USB_Host_GetPreviousDescriptor() function to ConfigDescriptor.c to move back one descriptor

Let me know what you think of the new release, via email, the support group, a comment here, carrier pigeon, semaphore, smoke signals or TCP/IP-over-Slinky.

 

Comments: 5

Leave a reply »

 
 
 

I tried downloading the new version, but windows states that the .zip file is corrupted.

7-Zip yielded a file (not a folder), with no file extension, labelled “LUFA 090209.”

Could you please verify the functionality of the zip file you have on your website?

Thanks for the neat projects!
Roboguy

 

Try downloading again – I think the server is corrupting some people’s downloads, as this problem is only being reported by a small number of users. I created the archive with 7Zip in the first place, so it should definitely be able to open it.

Cheers!
– Dean

 

I’ve tried it over the last few days, and it still doesn’t work. Do you have a seperate mirror or something for your files?

Thanks again for your time!

 

Are you a SVN user? If so, you can grab the latest version straight from the repository, at:

http://code.google.com/p/lufa-lib/

If not, email me and I’ll send you the latest revision as an attachment.

– Dean

 

Whoops, figured it out a few minutes ago – I had only unzipped the .zip file with 7-zip.

If you unzip the .zip and then the file inside that (not a folder, no extension either) you get the data.

I tested out the MassStorage project, and it works nicely “out of box.”

Thanks for your time and sorry for the confusion!

 

Leave a Reply

 
(will not be published)
 
 
Comment
 
 

 

Vital Stats

  • 35 Years Old
  • Australian
  • Lover of embedded systems
  • Firmware engineer
  • Self-Proclaimed Geek

Latest Blog Posts

RSS