This page serves as documentation for the ioNode.


  • Microcontroller: ATMEGA1284P
  • CPU Clock: 10MHz
  • 18 Digital-only I/O
  • 8 Digital/Analog I/O


USB (kiwi)

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:

avrdude -c arduino -P /dev/ttyUSB0 -p atmega1284p -U flash:w:YOUR_APPLICATION.hex


Flashing through ISP is the "classic" way to put any code onto an AVR microcontroller, especially when no bootloader is present.
Your options here are the following:
  • use a dedicated ISP programmer (such as the AVRISP)
  • use another microcontroller as ISP (such as the Arduino as ISP)
Using ISP for flashing is useful when:
  • your target does not have a bootloader (and therefore does not provide any other flashing interface)
  • you want to change microcontroller fuse bits
  • you want to install/replace a bootloader

The commands to flash your device using ISP will change depending on the type of programmer you're using.