Filesystem upload option not available

Right now I’m trying to set up an esp8266 (esp01) with ESP3D for my printer like in this tutorial (17) Add Wifi To A 3D Printer - SKR 1.4 - ESP8266 - ESP3D - Chris’s Basement - YouTube. Everything works just fine with building and uploading until i get to uploading a filesystem image (in the tutorial after 17:00). Neither I can find any options for uploading a FS in the mentioned task, nor can I find any task suggested in some other treads in this forum.

has anyone had the same problem and can help me?
Thank you in advance

  • Can you build the project and it compiles?
  • Do the tasks appear when you click the refresh button in the top right corner of the “Project Tasks” panel?

it compiles, unfortunately refreshing and re-building don’t change anything

Can you upload whole project somewhere for reproduction? (Github, GoogleDrive…)

https://drive.google.com/drive/folders/12Xk0Y92yCoI8muJn5kIX-gE79tUQvgF2?usp=sharing
This is the complete esp3D folder with the platformio.ini inside. It’s all downloaded from github, i did minor changes in the *.ini

[env:esp8266]
;esp8266 core 2.5.2
platform = espressif8266@2.2.0
platform_packages      = toolchain-xtensa@2.40802.200502

This is explicitly using an older Espressif8266 platform version, 2.2.0, from May 2019. The PlatformIO core and APIs to VSCode have been updated and as a result the upload task doesn’t show up anymore when using a recent PIO core + older platforms. This is a PlatformIO internal failure.

Two ways to fix this:

  • Open a PlatformIO CLI and execute pio run -t uploadfs. This is exactly equivalent to clicking on a “Upload Filesystem” button if there were one and is documented here.
  • Make the project use a recent platform but specifically downgrade the Arduino-ESP8266 core package (which the comment says must be 2.5.2. Can be achieved using platform_packages (which this project is already using for the compiler) and looking up the version code for `framework-arduinoespressif8266.

For the first solution, the result should be something like

PS C:\Users\Max\Downloads\ESP3D-2.1.1-20210922T110446Z-001\ESP3D-2.1.1> pio run -t uploadfs
Processing esp8266 (platform: espressif8266@2.2.0; board: esp01_1m; framework: arduino)
----------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/esp01_1m.html
..
Building in release mode
Building SPIFFS image from 'esp3d\data' directory to .pioenvs\esp8266\spiffs.bin
/404.htm
/favicon.ico
/index.html.gz
Looking for upload port...
Auto-detected: COM3
Uploading .pioenvs\esp8266\spiffs.bin
esptool.py v2.6
Serial port COM3
Connecting........

For the latter solution, change the platformio.ini to

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[platformio]
src_dir     = esp3d
build_dir   = .pioenvs
lib_dir     = libraries
libdeps_dir = .piolibdeps
data_dir = esp3d/data
default_envs = esp8266

[env:esp32dev]
platform = https://github.com/platformio/platform-espressif32.git
;theboard
board = esp32dev
framework = arduino
monitor_speed = 115200
; set frequency to 240MHz
board_build.f_cpu = 240000000L
; set frequency to 80MHz
board_build.f_flash = 80000000L
board_build.flash_mode = qio
; None
build_flags = -DCORE_DEBUG_LEVEL=0
board_build.partitions = min_spiffs.csv
upload_speed = 921600
lib_ignore = 
    ESPAsyncTCP

[env:esp8266]
;esp8266 core 2.5.2
; use latest platform-espressif8266 as of now, but downgrade
; Arduino-ESP8266 to 2.5.2
platform = espressif8266@3.2.0
platform_packages = 
   toolchain-xtensa@2.40802.200502
   framework-arduinoespressif8266@~2.20502.0
board = esp01_1m
framework = arduino
monitor_speed = 115200
; set frequency to 160MHz
board_build.f_cpu = 80000000L
; set frequency to 40MHz
board_build.f_flash = 40000000L
board_build.flash_mode = dio
upload_resetmethod = ck
build_flags = 
    -Wl,-Teagle.flash.1m256.ld
    -D PIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY
    -DNONOSDK221=1
    -DNDEBUG
    -DVTABLES_IN_FLASH
upload_speed = 115200
lib_ignore = 
    AsyncTCP
    ESP32NetBIOS
    ESP32SSPD

This makes the task appear again

grafik

And the project builds as before.

RAM:   [====      ]  38.6% (used 31636 bytes from 81920 bytes)
Flash: [======    ]  55.7% (used 424660 bytes from 761840 bytes)

the options are now available, thank you! nevertheless, building and uploading doesn’t work either. There are multiple assertion errors causing the build to fail:


is there something i can do about this? Did i have to download anything else i wasn’t aware of?
thank you and best regards!

You are right, this doesn’t work. The culprit is that the PlatformIO builder script parses the linker file to search for the filesystem start and length end info, but it does so with the new names of the symbols (FS_START, FS_END).

2.5.2 did

Recent is

One possible fix for that would be to go into the linker file and give it the expected symbol names, that is, open C:\Users\<user>\.platformio\packages\framework-arduinoespressif8266@2.20502.0\tools\sdk\ld\eagle.flash.1m256.ld and add the block

PROVIDE ( _FS_start = 0x403C0000 );
PROVIDE ( _FS_end = 0x403FB000 );
PROVIDE ( _FS_page = 0x100 );
PROVIDE ( _FS_block = 0x1000 );

after the last _SPIFFS_block declaration line.

At this point though it’s easier to use the old platform and trigger the filesystem upload via the CLI as described above.

I’ll open an issue so that newer platform-espressif8266 versions work with older frameworks (and have the upload task available), but that will take time to fix.

Issues New PlatformIO core with old platform-espressif8266 makes platform tasks disappear · Issue #259 · platformio/platform-espressif8266 · GitHub and Restore compatibility when selecting older Arduino-ESP8266 versions · Issue #258 · platformio/platform-espressif8266 · GitHub are open in regards to this.

Thank you, the upload works great now. I used your second solution with modifying the eagle.flash.1m256.ld. The ESP starts working and I can log into the AP. However, now there is a index.html.gz missing. It is inside the right folder, but won’t get flashed with the FS. My guess is “not enough space”.Trying to upload as demanded results in an error like mentioned here: [BUG] SPIFFS : Upload failed(3): File write failed · Issue #380 · luc-github/ESP3D

I would like to try just giving more memory to the FS (1m512 instead of 1m256). Therefore I want to try modifying the eagle.flash.1m512.ld similar to the “256k”-file. I assume that I need other hex adresses. Do you know them or can I look them up somewhere?

My bad, the project is using

but I quotes the fields for 2m256.

The source of these symbols is Arduino-ESP8266. For the 1m512 configuration, see here.

You most then also change the linker script filename in the platformio.ini as referenced above.