<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Need Help with DualOptiboot Fota]]></title><description><![CDATA[<p dir="auto">Hi everyone,<br />
I just discovered MyController, following the use of MySensors 2.3.2 and I see that there is a lot of potential compared to MYScontroller: bravo to the whole team!</p>
<p dir="auto"><strong>What works:</strong> My Nodes and Gateway (serial) work and are recognized in MYController.<br />
<strong>The (minimum) equipment to test FOTA</strong>: I have a 328p Bare Bone (8MHz internal) + SPI Flash memory + 3.3v regulator + RFM69HCW.<br />
<strong>What I would like to do:</strong> if I understood correctly: just burn the DualOptiboot bootloader WITHOUT SKETCH. The first time it is turned on, it will ask MYController for an identifier and I could load the sketch from MYController OTA: <code>Actions &gt;&gt; Upload firmware</code>.</p>
<p dir="auto"><strong>It's just ?</strong></p>
<p dir="auto">For that, I need the <code>DualOptiboot.hex</code> which corresponds to my Node (8MHz internal, BOD 2.7v ...) which I must flash in my 328P with AVRDUDESS.</p>
<p dir="auto">Someone to help me find this bootloader.</p>
]]></description><link>http://forum.mycontroller.org/topic/484/need-help-with-dualoptiboot-fota</link><generator>RSS for Node</generator><lastBuildDate>Fri, 13 Mar 2026 08:46:31 GMT</lastBuildDate><atom:link href="http://forum.mycontroller.org/topic/484.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Feb 2021 20:33:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Need Help with DualOptiboot Fota on Mon, 01 Mar 2021 18:36:47 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/jkandasa" aria-label="Profile: jkandasa">@<bdi>jkandasa</bdi></a> Thank you for your help: I summarize what you asked me to do and which works now:<br />
<strong>The (minimum) equipment to test FOTA:</strong> I have a ATMega 328p BareBones (8MHz internal) + led attached to PB1 (pin15)+ SPI Flash memory + 3.3v regulator + RFM69HCW.</p>
<ul>
<li>Install ArduinoISP program to ProMini (Programmer)</li>
<li>Connect MySensors board on ProMini (ArduinoISP) via ISP header</li>
<li>Select, Programmer="Arduino as ISP", Board:"Sensbender Micro", Processor:"Atmega 328 8Mhz"</li>
<li>Now click on "Burn Bootloader". bootloader will be loaded on MySensors board</li>
<li>Remove ISP header and remove ProMini from your computer</li>
<li>Connect MySensors board to USB via FTDI connector</li>
<li>Upload MySensors sketch(OTA should be enabled on the sketch) to MySensors board</li>
<li>Now the MySensors node will appear in MyController server.</li>
<li>Modify the MySensors sketch and upload it to MyController</li>
<li>Now trigger "Firmware upload" from MyController server page.</li>
</ul>
<p dir="auto"><strong>This is the first sketch to upload one time with the USB to FTDI connector :</strong></p>
<pre><code>//pr1: minimal sketch for fota with blink led


#define blinkTime 200  
#define SKETCH_NAME "SensBender Led 200 -70"  //25 caracteres max
#define SKETCH_VERSION "pr1"

//===== RFM config =====
// Enable and select radio type attached
#define   MY_RADIO_RFM69
//#define   MY_DEBUG_VERBOSE_RFM69
//#define   MY_DEBUG_VERBOSE_RFM69_REGISTERS

#define   MY_RFM69_NEW_DRIVER
//#define MY_RFM69_ATC_MODE_DISABLED
#define MY_RFM69_ATC_TARGET_RSSI_DBM (-70)  // target RSSI -70dBm//BUG
//#define MY_RFM69_MAX_POWER_LEVEL_DBM (20)   // max. TX power 10dBm = 10mW//MARCHE
#define   MY_RFM69_FREQUENCY (RFM69_868MHZ)
#define   MY_IS_RFM69HW //with H(CW)
//#define   MY_RFM69HW (true)
//#define   MY_RFM69_NETWORKID (100)

//#define MY_RFM69_BITRATE_MSB (RFM69_BITRATEMSB_1200)
//#define MY_RFM69_BITRATE_LSB (RFM69_BITRATELSB_1200)

// Enable repeater functionality for this node
//#define MY_REPEATER_FEATURE

#define MY_DEBUG

//===== LED =====
#define LED_BUILTIN 9       //pb1 pin15

//===== This Node ID =====
#define MY_NODE_ID 0x02

//===== Enable OTA feature =====
#define MY_OTA_FIRMWARE_FEATURE
#define MY_OTA_FLASH_SS (8)       //pb0 pin14
#define MY_OTA_FLASH_JDECID 0x00  //0x00 if you don't know

#include &lt;MySensors.h&gt;

//===================================
//=              SETUP              =
//===================================
void setup() {//pas besoin de Serial.begin(115200)
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.print("Start "); Serial.print(SKETCH_NAME); Serial.print(" "); Serial.println(SKETCH_VERSION);
}//FIN du SETUP
//==========================================
//=              PRESENTATION              =
//==========================================
void presentation() {
  // Send the sketch version information to the gateway and controller
  sendSketchInfo(SKETCH_NAME, SKETCH_VERSION);
} // FIN de PRESENTATION
//===================================
//=              LOOP               =
//===================================
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  Serial.print("LED ON ");
  wait(blinkTime);
  digitalWrite(LED_BUILTIN, LOW);  Serial.println("LED OFF ");
  wait(blinkTime);
}// FIN de LOOP
</code></pre>
<p dir="auto">Change <code>blinkTime</code> time and compil the sketch , then upload firmware <code>.hex</code> with MYCONTROLLER.<br />
Enjoy</p>
]]></description><link>http://forum.mycontroller.org/post/2944</link><guid isPermaLink="true">http://forum.mycontroller.org/post/2944</guid><dc:creator><![CDATA[SuperNinja]]></dc:creator><pubDate>Mon, 01 Mar 2021 18:36:47 GMT</pubDate></item><item><title><![CDATA[Reply to Need Help with DualOptiboot Fota on Tue, 02 Feb 2021 17:28:44 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/superninja" aria-label="Profile: superninja">@<bdi>superninja</bdi></a> you can see some staus on the node page. also on the <code>Status &gt;&gt; Resource logs</code>, you can see some messages. Enable <code>Settings &gt;&gt; System &gt;&gt; MyController &gt;&gt; Resources logs level</code> to notice or debug.</p>
<p dir="auto">also try <code>#define MY_OTA_FLASH_JDECID 0x00</code>, which works for me.</p>
]]></description><link>http://forum.mycontroller.org/post/2943</link><guid isPermaLink="true">http://forum.mycontroller.org/post/2943</guid><dc:creator><![CDATA[jkandasa]]></dc:creator><pubDate>Tue, 02 Feb 2021 17:28:44 GMT</pubDate></item><item><title><![CDATA[Reply to Need Help with DualOptiboot Fota on Tue, 02 Feb 2021 17:01:28 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/jkandasa" aria-label="Profile: jkandasa">@<bdi>jkandasa</bdi></a> this is what i do :</p>
<ul>
<li>
<p dir="auto">I loaded the <code>ArduinoISP</code> sketch on an Arduino PRO mini to use as a programmer.<br />
<img src="/assets/uploads/files/1612283322943-isp.jpg" alt="isp.jpg" class=" img-fluid img-markdown" /></p>
</li>
<li>
<p dir="auto">then I configured Arduino IDE with the SensBender 8MHz board like this:<br />
<img src="/assets/uploads/files/1612283481144-bf0ee01d-e78d-479f-9c26-62aa7be20ba3-image.png" alt="bf0ee01d-e78d-479f-9c26-62aa7be20ba3-image.png" class=" img-fluid img-markdown" /><br />
and I started the bootloader burning which went well.</p>
</li>
<li>
<p dir="auto">I unplugged the ProMini and plugged in an FTDI converter to program the ATMega 328P by configuring like this:<br />
<img src="/assets/uploads/files/1612283680024-b9071801-af2a-4aeb-b0dd-a6433bc72434-image.png" alt="b9071801-af2a-4aeb-b0dd-a6433bc72434-image.png" class=" img-fluid img-markdown" /></p>
</li>
</ul>
<p dir="auto">I injected this simple BLINK LED sketch :</p>
<pre><code>// Enable debug prints to serial monitor
//#define MY_DEBUG                  //debug de MySensors
//#define MY_DEBUG_VERBOSE_SIGNING  //debug de la signature

//===== RFM config =====
#define MY_RADIO_RFM69
#define MY_IS_RFM69HW //with H(CW)
#define MY_RFM69_NEW_DRIVER
#define MY_RFM69_FREQUENCY  RFM69_868MHZ
#define MY_SIGNAL_REPORT_ENABLED
//#define MY_RFM69_ATC_TARGET_RSSI_DBM (-80)
//#define MY_RFM69_MAX_POWER_LEVEL_DBM (10)   // max. TX power 10dBm = 10mW
//1mW = 0dBm  10mW = 10dBm  25mW = 14dBm  100mW = 20dBm

//#define MY_DEBUG_VERBOSE_RFM69  //debug du signal RF
//#define MY_RFM69_NETWORKID 101
#define MY_RFM69_IRQ_PIN 2
#define MY_RFM69_CS_PIN 10

//===== LED =====
#define LED_BUILTIN 9       //pb1 pin15

//========== NODE ID ==========
#define MY_NODE_ID 4
//#define MY_NODE_TYPE "NODE"
//#define CHILD_ID 1   // Id of the sensor child

#include &lt;SPI.h&gt;
#include &lt;MySensors.h&gt;
#include &lt;Wire.h&gt;

//pr1:===== FOTA =====
#define MY_OTA_FIRMWARE_FEATURE
#define MY_OTA_FLASH_SS (8)
#define MY_OTA_FLASH_JDECID (0xBF26)  //Use (0x00) if unknown.

//pr2: ===== tempo non bloquante =====
const unsigned long BLINK_INTERVAL = 1000;// Nombre de millisecondes entre deux changements d'état de la LED
unsigned long previousMillis = 0;// Précédente valeur de millis()
byte ledState = LOW;// Précédent état de la LED

//===================================
//=              BEFORE              =
//===================================
void before()
{

} //FIN de before

//===================================
//=              SETUP              =
//===================================
void setup() {//pas besoin de Serial.begin(115200)
  pinMode(LED_BUILTIN, OUTPUT);// Configure la broche de la LED en sortie
  digitalWrite(LED_BUILTIN, ledState);  // Configure l'état initial de la LED

}//FIN du SETUP
//==========================================
//=              PRESENTATION              =
//==========================================
void presentation() {
  // Send the sketch version information to the gateway and controller
  sendSketchInfo("led fota", "1.0");

} // FIN de PRESENTATION
//===================================
//=              LOOP               =
//===================================
void loop() {

  unsigned long currentMillis = millis(); // Récupére la valeur actuelle de millis()
  if (currentMillis - previousMillis &gt;= BLINK_INTERVAL) // Si BLINK_INTERVAL ou plus millisecondes se sont écoulés
  { previousMillis = currentMillis;    // Garde en mémoire la valeur actuelle de millis()
    ledState = !ledState; // Inverse l'état de la LED
    digitalWrite(LED_BUILTIN, ledState); Serial.print("LED  "); Serial.println(ledState);
  }

}// FIN de LOOP
</code></pre>
<ul>
<li>
<p dir="auto">the <strong>led is flashing</strong> well and MYController sees the node<br />
<img src="/assets/uploads/files/1612283965367-9cb52542-b4cf-4ac9-9562-4e3696e99f63-image.png" alt="9cb52542-b4cf-4ac9-9562-4e3696e99f63-image.png" class=" img-fluid img-markdown" /></p>
</li>
<li>
<p dir="auto">I change the flashing delay from 1000 to 500 and the version which goes from 1.0 to 1.1. I <strong>compile</strong> the sketch which gives me: <code>moteino_MySensors_fota_pr1.ino.hex</code></p>
</li>
<li>
<p dir="auto">I go to <code>Utilities&gt;&gt;Firmware</code> and add a Type, Version 1.1 and Firmware (with faster flashing delay)<br />
<img src="/assets/uploads/files/1612284092882-666a0a9f-394f-4b90-aa76-7a977217f3f3-image.png" alt="666a0a9f-394f-4b90-aa76-7a977217f3f3-image.png" class=" img-fluid img-markdown" /></p>
</li>
<li>
<p dir="auto">I go back to <code>Resources&gt;&gt;nodes</code> and upload the firmware of this node n°4<br />
<img src="/assets/uploads/files/1612284522581-f928d4cb-668d-4262-b1fc-87bf0afb60ec-image.png" alt="f928d4cb-668d-4262-b1fc-87bf0afb60ec-image.png" class=" img-fluid img-markdown" /></p>
</li>
<li>
<p dir="auto">and ...nothing after 7 minutes<br />
<img src="/assets/uploads/files/1612285081230-40c2c249-88c4-4b16-b6f0-da27d8ec6d3c-image.png" alt="40c2c249-88c4-4b16-b6f0-da27d8ec6d3c-image.png" class=" img-fluid img-markdown" /></p>
</li>
</ul>
<p dir="auto">Any Idea ? My Sketch is wrong ?</p>
]]></description><link>http://forum.mycontroller.org/post/2942</link><guid isPermaLink="true">http://forum.mycontroller.org/post/2942</guid><dc:creator><![CDATA[SuperNinja]]></dc:creator><pubDate>Tue, 02 Feb 2021 17:01:28 GMT</pubDate></item><item><title><![CDATA[Reply to Need Help with DualOptiboot Fota on Tue, 02 Feb 2021 10:05:06 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/jkandasa" aria-label="Profile: jkandasa">@<bdi>jkandasa</bdi></a> Thanks for this fast and clear response , i'll test this and come back here .</p>
]]></description><link>http://forum.mycontroller.org/post/2941</link><guid isPermaLink="true">http://forum.mycontroller.org/post/2941</guid><dc:creator><![CDATA[SuperNinja]]></dc:creator><pubDate>Tue, 02 Feb 2021 10:05:06 GMT</pubDate></item><item><title><![CDATA[Reply to Need Help with DualOptiboot Fota on Mon, 01 Feb 2021 22:39:39 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/superninja" aria-label="Profile: superninja">@<bdi>superninja</bdi></a> Welcome to MyController <img src="http://forum.mycontroller.org/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=49d1c908e56" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /><br />
I usually go with Sensebender bootloader.<br />
Steps :</p>
<ul>
<li>setup Arduino IDE for Sensebender - <a href="https://github.com/mysensors/ArduinoBoards" rel="nofollow ugc">https://github.com/mysensors/ArduinoBoards</a></li>
<li>Select your hardware details. from your input, the board: sensbender, 328 + 8 Mhz</li>
<li>Burn bootloader from IDE (it should be DualOptiboot)</li>
<li>add a sketch with <code>#define MY_OTA_FIRMWARE_FEATURE</code> - <a href="https://github.com/mysensors/MySensors/blob/2.3.2/MyConfig.h#L1222~L1253" rel="nofollow ugc">https://github.com/mysensors/MySensors/blob/2.3.2/MyConfig.h#L1222~L1253</a></li>
</ul>
<p dir="auto">Afterburn DualOptiboot, you should add a MySensors sketch via serial (OTA feature should be enabled on your sketch). From this point, OTA works with DualOptiboot</p>
]]></description><link>http://forum.mycontroller.org/post/2940</link><guid isPermaLink="true">http://forum.mycontroller.org/post/2940</guid><dc:creator><![CDATA[jkandasa]]></dc:creator><pubDate>Mon, 01 Feb 2021 22:39:39 GMT</pubDate></item></channel></rss>