When you say "by default", do that means that there is a way of modify that default? If so, how?

This specific node that I'm testing with, have a fixed node id (I use OpenHAB). But with the recompiled bootloader it "knows" which firmware download. Where does it gets from? Is the bootloader accessing the main sketch? Or is the node id info fixed in eeprom.

If the node id info is in eeprom, could we also have the channel there? It would be so great not having to compile the bootloader.

I guess the main hurdle would be that while MySensors stores the node id in eeprom today, the nrf channel is not stored in eeprom. Since bootloader and sketch use the same eeprom, there would have to be some sort of agreement on where to store the channel.

Hello, I have my MySensors gateway permanently attached to my openhab server (RPI3), but i want to do FOTA uploads from my desktop. How do I do this since MYSController needs to attatch to a gateway? Can i use an other gateway, both with the same address (ID0)? Thanks

@guillermo-schimmel Thanks for the reply.
Very useful, but can you tell me more accurately what software to use to recompile after making the change ????
Maybe some links to the software to download ..... thanks again for the availability

@sindrome73 Hi Good evening, and I'm sorry for the delay in the reply.
As you have never done a Bootloader, if you are kind enough to do it, I thank you.
The channel I'm using is the "Channel 84" for now I'm using only the 16MHZ Bootloade, but if you want, the others are fine too.
In addition you can give me some starting point to be able to fill in too ??
Thanks for your availability, greetings

Hello!! And thank you again ......
A really good job, it's something that was definitely missing ......
I would suggest to the directors to expand the guide on OTA you better explain the steps to change channels and make a link to your great job !!

Now if I understand this and the Bootloader that I have to load on my Arduino Pro-Mini, in practice insert in the path of the IDE of Arduino when I make the updates use that channel

As soon as I can I try them and I'll let you know, in a lot of thanks again ......

So, I’m answering my own question a little here after digging into the gateway/node logs and code - and so I'm replying to my own post.

Should FOTA work with personalized nodes/gateway?

Yes, it should and it does. FOTA (and any other internal commands) works with personalization (signed commands) using the MYSController.

What doesn’t appear to work is if you’re using smartSleep and asking the MYSController app to trigger sending your internal command upon receiving from the node - in this case, simply a heartbeat from smartSleep.

Does that make sense?

So, if I don’t sleep the node, I can issue reboots and other internal commands that are signed, no problem.

As soon as I switch to using smartSleep(DURATION) instead of wait(DURATION) and ask the MYSController app to trigger sending, for example, an internal reboot command “Upon RX”, then the reboot command never makes it to the node before it goes back to sleep. So the gateway tries to send the queued command, but the node has already gone back to sleep, and so it gets ignored.

I’ve tried varying the smartSleep duration as well as the MY_SMART_SLEEP_WAIT_DURATION_MS define.

I haven’t tried varying the MY_SLEEP_TRANSPORT_RECONNECT_TIMEOUT_MS define, but it didn’t immediately appear that this was a transport connection issue.

It looks like the gateway/node do all their NONCE request/response just fine, but it could be something to do with how all that gets queued and ordered.

Doesn’t look like it has anything to do with ATC at all, since I’ve tried enabling/disabling on both node and gateway.

Also doesn’t look like it has anything to do with the new driver, since I’ve tried both the old and the new and get the same behaviour.

The only difference appears to be the way smartSleep interacts with signed messages.

I’ll keep digging, but if anyone has any ideas what I might be doing wrong here, I’d appreciate any help or advice.