Man, I hate level one tech support. Seriously, replace them all with answering machines instead, and save a few dollars a year. I just sent a message to an unspecified computer company yesterday which paraphrased read like this:
Hi, my three week old laptop’s hard disk has died. When turned on, the BIOS does not detect any disks on the bus, and it emits a horrible screeching sound when the disk tries to spin up. Where should I ship it to for a warranty replacement?
And a day later, got back a message asking me to reformat the disk and reinstall Windows, to see if that is at fault. Yes, I realize they’re just monkeys with a giant keyboard full of macros with labels like “Reinstall Windows“, “I’ll need to elevate your request” and “Sorry, your 12 hours warranty expired yesterday” – but still, why haven’t they been replaced by a knowledge-base and a smaller set of competent engineers? It turns a simple warranty replacement problem into a multi-week saga.
You know what? Screw it. It’s Acer. The same monkeys who held my *brand new* netbook for a month of its 12 month warranty, for a simple noisy fan replacement. Nuts to them.
Yesterday I went to a Connected Community Hackerspace meeting, where I got to meet “the REAL geek squad” and showed off my LUFA powered Webserver. As is the case with all public demonstrations, the first 20 minutes was comprised of me swearing while trying to get my JTAG to connect to my USBKEY, until it spontaneously fixed itself and all was well. I’ve handed off my donated ARM7 board to the much capable Angus (hoster of this website, in fact) so that he can set up an environment for me so that I can actually use it.
On and a special mention to Michael McKenzie and Dave Fletcher, who donated AU$1 and AU$0.1 respectively. With PayPal fees, I’m now $0.67 richer!
It seems like every second post I make is a release announcement for LUFA. Not to worry – it looks like the project is starting to wind down, so I’ll probably have to come up with a totally new project to get started on for the new year soon.
LUFA 100219 is released, the first for 2010! This new release contains a corrected AVRISP programmer project (now with TPI programming support for the TINY10 and others), a new TemperatureDataLogger project which logs temperatures to the dataflash’s FAT partition via the FatFs project (something that’s been requested from me quite a lot), a new uIP powered Webserver which can connect to any RNDIS compliant device and serve out pages, and a million tiny bugs fixed.
I’m hoping the new “complete projects” I’m adding will give inspiration and instruction to those wanting to use LUFA – they’re similar to my demos, but have a specific application in mind, and are a little more complete/complex. I think it’s important to have both the simplified demos showing off a single concept, as well as the larger project showing how to accomplish a specific goal.
As I said above, LUFA looks to be petering out; I can’t think of much more to do other than flesh out the documentation. I will be experimenting with CDC-Ethernet soon (the standards compliant way to get Ethernet through USB, instead of Microsoft’s proprietary RNDIS class) but other than that, it’ll probably be mostly bug fixes from here on out. Here comes the hard part – trying to thing of a new project to do!
As always I’ll put the full changelog at the end of the post. Please try to use the Google Code primary mirrors where possible for the actual release downloads, to spare the server bandwidth.
Thank you all once again for your continued support, contributions, and complaints.
LUFA 100219 DOWNLOAD PAGE
=============================
New:
- Added TPI programming support for 6-pin ATTINY devices to the AVRISP programmer project (thanks to Tom Light)
- Added command timeout counter to the AVRISP project so that the device no longer freezes when incorrectly connected to a target
- Added new TemperatureDataLogger application, a USB data logger which writes to the device’s dataflash and appears to the host as a standard Mass Storage device when inserted
- Added MIDI event packing support to the MIDI Device and Host mode Class drivers, allowing for multiple MIDI events to sent or received in packed form in a single USB packet
- Added new MIDI send buffer flush routines to the MIDI Device and Host mode Class drivers, to flush packed events
- Added master mode hardware TWI driver for easy TWI peripheral control
- Added ADC MUX masks for the standard ADC input channels on all AVR models with an ADC, altered demos to use these masks as on some models, the channel number is not identical to its single-ended ADC MUX mask
- New Webserver project, a RNDIS host USB webserver using the open source uIP TCP/IP network stack and FatFS library
- New BOARD value option BOARD_NONE (equivelent to not specifying BOARD) which will remove all board hardware drivers which do not adversely affect the code operation (currently only the LEDs driver)
- Added keyboard modifier masks (HID_KEYBOARD_MODIFER_*) and LED report masks (KEYBOARD_LED_*) to the HID class driver and Keyboard demos
- Added .5MHz recovery clock to the AVRISP programmer project when in ISP programming mode to correct mis-set fuses
Changed:
- Slowed down software USART carried PDI programming in the AVRISP project to prevent transmission errors
- Renamed the AVRISP project folder to AVRISP-MKII to reduce confusion
- Renamed the RESET_LINE_* makefile tokens in the AVRISP MKII Project to AUX_LINE_*, as they are not always used for target reset
- Changed over the MassStorageKeyboard Class driver device demo to use Start of Frame events rather than a timer to keep track of elapsed milliseconds
- Inlined currently unused (but standardized) maintenance functions in the Device and Host Class drivers to save space
- The XPLAINBridge project now selects between a USB to Serial bridge and a PDI programmer on startup, reading the JTAG port’s TDI pin to determine which mode to use
- Removed the stream example code from the Low Level VirtualSerial demos, as they were buggy and only served to add clutter
Fixed:
- Fixed AVRISP project not able to enter programming mode when ISP protocol is used
- Fixed AVRISP PDI race condition where the guard time between direction changes could be interpreted as a start bit
- Fixed ADC_IsReadingComplete() returning an inverted result
- Fixed blocking CDC streams not aborting when the host is disconnected
- Fixed XPLAIN board Dataflash driver broken due to incorrect preprocessor commands
- Fixed inverted XPLAIN LED driver output (LED turned on when it was supposed to be turned off, and vice-versa)
- Fixed Class Driver struct interface numbers in the KeyboardMouse and VirtualSerialMouse demos (thanks to Renaud Cerrato)
- Fixed invalid USB controller PLL prescaler values for the ATMEGAxxU2 controllers
- Fixed lack of support for the ATMEGA32U2 in the DFU and CDC class bootloaders
- Fixed Benito project not resetting the target AVR automatically when programming has completed
- Fixed DFU bootloader programming not discarding the correct number of filler bytes from the host when non-aligned programming ranges are specified (thanks to Thomas Bleeker)
- Fixed CDC and RNDIS host demos and class drivers – bidirectional endpoints should use two seperate pipes, not one half-duplex pipe
- Fixed Pipe_IsEndpointBound() not taking the endpoint’s direction into account
- Fixed EEPROM and FLASH ISP programming in the AVRISP project
- Fixed incorrect values of USB_CONFIG_ATTR_SELFPOWERED and USB_CONFIG_ATTR_REMOTEWAKEUP tokens (thanks to Claus Christensen)
- Fixed SerialStream driver blocking while waiting for characters to be received instead of returning EOF
- Fixed SerialStream driver not setting stdin to the created serial stream (thanks to Mike Alexander)
- Fixed USB_GetHIDReportSize() returning the number of bits in the specified report instead of bytes
- Fixed AVRISP project not extending the command delay after each successful page/word/byte program
- Fixed accuracy of the SERIAL_UBBRVAL() and SERIAL_2X_UBBRVAL() macros for higher baudrates (thanks to Renaud Cerrato)
As of yesterday, I am now 21 years of age. Not much to say about it other than I’m now officially not a kid any more in most countries! I’ll sum up the Beauty and the Geek party I had thusly:





Thank you to everyone for supporting me over the last few years!
Two days later. Thanks everyone for your input on the new site design – I’m still playing with it to make it the best I can. I can now categorically say I hate Javascript, the people who invented Javascript and, (by proxy) the parents of the people who invented Javascript by bumping uglies. This afternoon I did a bit of firefighting after it was pointed out that the server had randomly deleted the most important freaking page on my whole website, and nothing else. Some browser-cache trickery later and some rewriting of the LUFA download list scripts and everything is back to normal. If you encounter any other dead links or broken functionality, please email me ASAP so I can get it sorted out.
A bit of jQuery study later, and the LUFA download page has the downloads separated by age – newer ones are immediately visible, older releases are available via a toggle button so as not to clutter the page too much. Of course, it degrades nicely for those not using Javascript, just like the rest of the site. I’ve also combined the LUFA download links into single lines, giving the primary/mirror download links as well as the documentation links.
I’ve just released BETA2 of the 100219 LUFA package, ready for testing. This package contains a bunch of fixes, and TPI programming finally works in the AVRISP-MKII package!
Last night I got fed up with having the world’s cruddiest website, so I searched around for something better. Lacking anything even approaching graphic design skills, I found the nicest looking free site template I could, and used that as a base for the site. Like many programmers, I’m happy with source code, but can’t draw worth a damn.
In any case, you’ve no doubt noticed the completely new uniform theme on the site, with the new seamless blog integration. I’m a terrible web-developer, but I think the new design is much more accessible and less, well, ugly. Don’t worry, the page and download URLs should remain the same between versions for my projects.
Like the new site? Hate it? Suggestions on things to add, remove or alter? Post here, so I can work out what changes still need to be made to make FourWalledCubicle better than ever.
EDIT: Thanks to Ian Banks for the new totally awesome site logo!