All Projects → pfalcon → Yaota8266

pfalcon / Yaota8266

Yet another OTA solution for ESP8266, this time supporting large (>512KB) firmwares even on 1MB devices (repo is rebased)

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Yaota8266

Mycontroller V1 Legacy
The Open Source Controller
Stars: ✭ 135 (+20.54%)
Mutual labels:  esp8266, ota
Esp Webota
Simple web based Over-the-Air (OTA) updates for ESP based projects
Stars: ✭ 189 (+68.75%)
Mutual labels:  esp8266, ota
Elegantota
Push OTAs to ESP8266 or ESP32 Elegantly.
Stars: ✭ 128 (+14.29%)
Mutual labels:  esp8266, ota
Tasmota
Alternative firmware for ESP8266 with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at
Stars: ✭ 16,624 (+14742.86%)
Mutual labels:  esp8266, ota
Deviot
Sublime Text plugin for IoT development based in PlatformIO ecosystem (Arduino IDE)
Stars: ✭ 281 (+150.89%)
Mutual labels:  esp8266, ota
Esphelper
A library to make using WiFi & MQTT on the ESP8266 easy.
Stars: ✭ 310 (+176.79%)
Mutual labels:  esp8266, ota
Blynk Server
Blynk is an Internet of Things Platform aimed to simplify building mobile and web applications for the Internet of Things. Easily connect 400+ hardware models like Arduino, ESP8266, ESP32, Raspberry Pi and similar MCUs and drag-n-drop IOT mobile apps for iOS and Android in 5 minutes
Stars: ✭ 8 (-92.86%)
Mutual labels:  esp8266, ota
Kboot
K210 bootloader
Stars: ✭ 29 (-74.11%)
Mutual labels:  ota, bootloader
kocherga
Robust platform-agnostic Cyphal/DroneCAN bootloader for deeply embedded systems
Stars: ✭ 21 (-81.25%)
Mutual labels:  ota, bootloader
Blynk Library
Blynk library for embedded hardware. Works with Arduino, ESP8266, Raspberry Pi, Intel Edison/Galileo, LinkIt ONE, Particle Core/Photon, Energia, ARM mbed, etc.
Stars: ✭ 3,305 (+2850.89%)
Mutual labels:  esp8266, ota
Esp Mqtt Json Multisensor
(OBSOLETE) ESP MQTT JSON Multisensor for Home Assistant. Supported sensors include the TEMT6000 light, AM312 PIR, DHT22 temperature/humidity sensors. RGB led supports flash, fade, and transition. Over-The-Air (OTA) uploading, too!
Stars: ✭ 323 (+188.39%)
Mutual labels:  esp8266, ota
Esp8266
ESP8266 NodeMCU Workshop
Stars: ✭ 109 (-2.68%)
Mutual labels:  esp8266
Pagebuilder
An arduino library to create html string in the sketch for ESP8266/ESP32 WebServer.
Stars: ✭ 104 (-7.14%)
Mutual labels:  esp8266
Wled Wemos Shield
Wemos D1 Mini (ESP8266) or Wemos ESP32 D1 Mini (ESP32) based shield for WLED firmware
Stars: ✭ 105 (-6.25%)
Mutual labels:  esp8266
Jesfs
Jo's Embedded Serial File System (for Standard Serial NOR-Flash)
Stars: ✭ 104 (-7.14%)
Mutual labels:  bootloader
Button2
Arduino Library to simplify working with buttons. It allows you to use callback functions to track single, double, triple and long clicks. It also takes care of debouncing.
Stars: ✭ 109 (-2.68%)
Mutual labels:  esp8266
Tomatboot
A UEFI 64bit Bootloader
Stars: ✭ 109 (-2.68%)
Mutual labels:  bootloader
App Release
An IoT Solution,this is the android release app | download ios app in app store
Stars: ✭ 104 (-7.14%)
Mutual labels:  esp8266
Ctf Writeups
Writeups of Capture The Flag Competitions
Stars: ✭ 101 (-9.82%)
Mutual labels:  ota
Monkos
an experimental 64-bit operating system
Stars: ✭ 100 (-10.71%)
Mutual labels:  bootloader

yaota8266

yaota8266 is yet another bootloader/over-the-air (OTA) update solution for ESP8266 WiFi SoC. Unlike many other solutions, yaota8266 does not require reserving FlashROM space of 2x the size of the firmware. Instead, it updates the firmware in-place. Of course, this means that if an OTA update fails, there's no previous firmware to fallback to. On the other hand, if OTA update fails, you likely will repeat it again, until it succeeds. So, for many usecases the process of OTA update will be the same - a user will just repeat it until it succeeds, regardless whether there's a fallback firmware or not.

yaota8266 is written with big firmwares and small flash sizes in mind. For example, it allows to have an OTA for full-fledged MicroPython (firmware sizes of 512+KB) on 1MB flash devices, and still have a small, but a filesystem.

Structure and algorithm

yaota8266 consists of two parts:

  • 2nd-stage bootloader boot8266
  • ota-server application

boot8266 works in the following way:

  1. 1st-stage bootloader in ESP8266 BootROM loads boot8266 (from sector 0). It is small and fits within a single FlashROM sector (4K).
  2. boot8266 checks whether an OTA button on device is pressed. If it is, it goes in OTA mode.
  3. If the button is not pressed, it verifies a checksum of a user application. If it fails (for example, because of unsuccessful, partial previous firmware update), it goes into OTA mode.
  4. If OTA mode is requested, boot8266 loads an application starting at the sector 1. This is intended to be the ota-server, but from boot8266's point of view, it's just a standard ESP8266 application, which it loads recursively in the same (or very similar) way as BootROM does it.
  5. If OTA mode was not requested, boot8266 loads a user application which lies beyond the ota-server application end (offset is configurable). The same note as above applies - boot8266 just loads one or another application in the same way, and doesn't care what they do (but boot8266 has partially hardcoded knowledge about sizes of these applications, and verifies checksum only of the second one).

ota-server works in the following way:

  1. Starts a UDP server on port 8266.
  2. Expects consecutive UDP datagram containing chunks of new firmware.
  3. Each datagram is signed with RSA private key. Only someone with a valid private key may produce valid datagrams, information from which ota-server will flash as a user application. (The public key is configured when building ota-server.)
  4. ota-client host-side application is provided to drive OTA upgrade process for a device in OTA mode.

Known issues

yaota8266 is a work in progress and is not yet fully working per the spec above.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].