The ioNode features a USB port which exposes a generic serial device to any host it is connected to.While this is useful for communication between your application and a host (PC / smartphone / whatever), it can also be used to flash the device.

Every ioNode is shipped pre-loaded with the kiwi bootloader. Upon start, the kiwi bootloader will expose a simplified STK500 programmer interface through the onboard USB and wait for commands from the host.

If nothing is received after 4 seconds, the bootloader runs whatever application was last stored in flash.

This means we can flash an ioNode very easily, even after it's been soldered in place into a final hardware application.avrdude is a very widely used software tool to flash microcontrollers. We use it all the time.

To flash an ioNode through USB with avrdude, reset the ioNode (if you're powering from USB, just disconnect and reconnect it) and immediately run the following: