The core of the device is based on AVR ATMEGA644P
microcontroller. In order to allow users to easily create
their own routines and programs, or to modify the factory
originals which are programmed into the device, the firmware
core is compatible (to a certain extent) with the
libraries and source code of the Arduino platform [16].
Libraries and low-level files rely on an unofficial branch
of Arduino, called Sanguino. The internal libraries and
hardware definitions have been adapted to the characteristics
of the hardware.
This device, like Arduino boards, includes a firmware
bootloader, which simplifies the process of loading new programs
to the microcontroller. Thus, after connecting the
device to the PC, there is a waiting time (62.5 ms) before
the first instruction. During that time, if the device detects
the arrival of a new program, it will load it into the FLASH
memory (64 KB), replacing the existing program. Otherwise,
the last program stored in the memory will start.