Bootloader ATmega 2560 for OTA

  • Hi,

    I have been searching the web for a while now, but I am still confused about all the OTA stuff, which seems only to work on 328 devices for MySensors.

    For a sensor node I want to use an ATmega 2560 (can't use 328), which is supported by the current Optiboot v8 by westfw (

    Is it possible to use optiboot v8 with MySensors? The DualOptiboot project does not support the 2560, was not updated for a long time and looks deserted to me.

    I have been digging around in optiboot's and dualoptiboot's code for some time, but I am not sure where to begin yet (as I did not understand much of the bootloader magic)

    The current optiboot v8 also supports direct EEPROM writes via the dospm function. (see git optiboot\optiboot\examples\test_dospm). Does this help in any way to integrate it into MySensors?

    If you could point me in a promising direction I would be happy to contribute the results 🙂


  • After some intensified research, I am pretty sure, that my desired OTA (MySensor sketch directly to MCU flash without requiring external flash (DualOptiBoot requires flash) and being transport-agnostic (not MYSBootloader uses RF24)) with a 2560 can be done with the optiboot-fork bootloader by MCUdude (for the ATMega 2560 the variant is called "MegaCore", see The MegaCore provides some macros for the SPM (storage programable memory) functions, which are passed to the bootloader like __boot_page_fill_short, __boot_page_write_short and __boot_page_erase_short.

    The repository comes with precompiled bootloaders as .hex files and a nice Arduino GUI integration (see wiki).

    My next step is to integrate the example sketch SerialReadWrite.ino into MySensors/core/MyOTAFirmwareUpdate.[c|h].

    Currently I am still a bit confused about the used defines. As far as I understand the

    #define MCUBOOT_PRESENT represents the MySensors bootloader by Tekka,
    the #else or #ifndef MCUBOOT_PRESENT branches are for the DualOptiboot bootloader (which is somehow deprecated).

    It looks like several defines are declared in #include "generated_dts_board.h", but I cannot find the file. Also there must be some kind of #include towards the dualoptiboot or mysensors specific bootloader header files, right?