Open dankamongmen opened 2 weeks ago
this looks pretty complicated, with lots of partitioning and such. ideally we'll find a trustworthy library to handle this.
are we going to have the device pull OTA from the internet, or do we expect it to be sideloaded, or need we support both? pulling it over the internet will require PKI--at the very least, TLS and a cert store on the device. i think we have to support sideload given our "no cloud" guarantee. so let's handle that first. ideally we would have a random password per device, tied to the serial number, but that requires infrastructure as well...
yeah i think sideloading is the way to go, at least at first. we can optionally check to see if there's new firmware, and if we find it, let the user know. even that, though, would require PKI.
https://github.com/arduino-libraries/Arduino_ESP32_OTA explicitly claims esp32-s3 support.. but appears to want to pull it over the internet
https://github.com/gb88/BLEOTA looks nice for using BLE ala nordic's DTU, but there's only one radio on esp32, so you can't use wifi and bluetooth at the same time. we'd probably want to switch to BLE update mode, and if we timeout, switch wifi back on. sounds pretty complex. let's keep looking...
we'll need be able to load new versions of firmware onto the ESP32-S3. once we've got wifi working (see #16), add OTA capabilities.