Something I'd like information on is whether it is possible to upload a SPIFFS filesystem image to the ESP8266. In theory it might work: It can be uploaded over USB, and according to the logs the flash location changes, but that's about it. PlatformIO also seems to offer an Upload SPIFFS option in a platform that's set to an OTA port, but that could just be it not checking the upload type.

So, what I want to know is how I can configure (or otherwise make) a SPIFFS image OTA-uploadable. I have two main OTA methods: Option One is the default Arduino OTA library, and Option Two is a re-skin of the OTA method-whose-name-is-forgettable where I can upload a file on a webpage hosted by the ESP8266 and it will read the file and update its firmware.

I'm assuming that there's a configuration parameter for this somewhere, but I don't know where to start looking, and the documentation on these libraries has a few very basic examples that don't cover complex or advanced use cases.

(The web server--though essentially unrelated to this issue, it's a great example--is the most egregious of these; the code is complex and now templated too, so I can't make sense of it, and the "examples" consist largely of compressed javascript that doesn't show the user anything. Then you get to the interesting stuff like actually getting the real size of an uploading file, or want to know how uploading things actually works (or why it fails), or you want to serve a file piecemeal by assembling bits of text (in the same way that debug statements usually make use of multiple Serial.print() statements), and there's just nothing)

  • 1
    ESP8266HTTPUpdateServer supports SPIFFS
    – Juraj
    Apr 6, 2020 at 4:56
  • How is that integrated? Does it detect the image (or does the user use a different upload page/form/button), how does it perform the physical update, etc?
    – user47164
    Apr 7, 2020 at 7:44
  • 1
    – Juraj
    Apr 7, 2020 at 8:05
  • all ways of OTA updates are applied with Update object from core
    – Juraj
    Apr 7, 2020 at 8:08

1 Answer 1


Basicly OTA supports the upload of *.bin files. Wether this contains compiled code or a filesystem (SPIFFS/LittleFS) is irrelevant. BUT The space for the OTA (partition) has to be min the size of the *.bin plus an overhead for processing. So with 4MB at all, you would need 2.5MB OTA for 1.5MB App/SPIFFS.
To tweak partition sizes (or custom partitions) you have to go into the boards.txt file.
OTA - Details and Info here

File system - Details and Info here

  • Thank you for the links. One of them did hint at the ability, but it's still not clear how it's actually set up, accessed, or used.
    – user47164
    Apr 7, 2020 at 7:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.