Self-Updating Firmware - Anyone Done Anything Like This?

This is a long-shot, but I'll give it a go anyway...

I'm building a system that include a half-dozen or so Arduinos, with a daisy-chained serial connection through all of them. One of the Arduinos (at the head of the chain) is the "master". I'd like to be able to update the firmware in ALL of them, either one-at-a-time, or all-at-once, using the serial chain. I know it is possible to do this, but just wondering if anyone has seen or done anything along the same lines I can use as a starting point.

Speed is not a concern, reliability is, as updates would be rare, but performed by people having NO knowledge about the hardware or firmware.

What I envision is something like this:

The Arduinos are all 328's, on custom boards. Each would be runnign a custom boot-loader.

New firmware would be sent to the master via Bluetooth, or a dedicated serial connection. A command would be sent to one, or all, Arduinos, telling them to update their firmware. They would all then set an "updating" flag in EEPROM, to indicate the application firmware may be corrupt, then transfer control to the bootloader. The bootloader would see the "updating" flag is set, and enter a mode where it waits for new FLASH data from "up the chain". The new firmware would then be sent, byte-by-byte, to the master, and the master would transfer each byte "down the chain" to the other devices, probably with a confirmation from all devices after every 8 or 16 bytes. The data would be programmed into each devices FLASH by its bootloader. On completion, they would all send checksums/CRCs back to the master to confirm they all received correct images. The master would confirm the checksums and, if correct, issue a command telling them all to clear the "updating" flag and return to normal operation, now with the new application code loaded.

Does that make sense? Is there anything remotely like that out there already?

I have my modified "Arduino Virus" code I could use as a starting point, but perhaps there is something closer to what I need already out there?

Ray L.

Not sure if they use a similar scheme, but there are several OTA (Over the Air) reprogramming of Arduino products that I have read about recently. I wasn't interested enough to note what they were, but you may get some clues as to how they do it by searching for them.