Skip to content

Give the 8MB boards a filesystem that fits - #16

Merged
LouisHitchcock merged 1 commit into
mainfrom
fix/8mb-partition-size
Sep 11, 2026
Merged

LouisHitchcock merged 1 commit into
mainfrom
fix/8mb-partition-size

Conversation

@LouisHitchcock

Copy link
Copy Markdown
Owner

spiffs on custom_8mb.csv is 1 MB. It was sized in v1.3.1, when data/ was
around 650 KB. data/ is now 907 KB on v1.7.3, and LittleFS rounds every file up
to a 4096-byte block, so the filesystem image is roughly 95% full and any further
UI work fails to build:

lfs warn:475: No more free space
lfs_write error(-28): File system is full.

That is not hypothetical — it currently blocks #15.

Why the table, rather than shrinking data/

Nothing was using the 2.94 MB of the 8 MB chip past 0x510000, and the layout was
lopsided. The 4 MB SuperMini already gets 1.4 MB of filesystem and the 16 MB
XIAO S3 Plus gets 2 MB, so the 8 MB boards had the smallest filesystem of any
target.

spiffs becomes 0x3E0000 (3.875 MB), which takes the image to about 25% full,
and the last 64 KB becomes a coredump partition so panics leave a backtrace.
The table now ends exactly at 0x800000.

Compatibility

  • nvs, otadata, app0 and app1 keep their original offsets and sizes, so
    an OTA app update still lands correctly and saved settings survive.
  • spiffs keeps its 0x410000 offset, so the documented esptool command,
    .github/workflows/manual-release-build.yml and every per-release
    FLASH_INSTRUCTIONS.txt are unchanged.

Affects all seven targets using custom_8mb.csv: FPVGateAIO, FPVGateLCDAIO,
FPVGateSolo, ESP32S3, SeeedXIAOESP32S3, LilyGOTEnergyS3, WaveshareESP32S3LCD2.

Release note required

A device that OTA-updates only the app keeps its old 1 MB table, so it cannot take
a filesystem image built against this one. Those users need one full reflash
(bootloader + partitions + firmware + littlefs) to migrate. This must be called
out in the release notes for whichever version ships it.

Verified

FPVGateAIO, ESP32S3 and FPVGateSolo all build a 4,063,232 byte image.
Flashed to an AIO: the self test reports LittleFS Total: 3968KB, Used: 1028KB, R/W OK and Storage Type: SD, and the web UI serves normally.

spiffs on custom_8mb.csv was 1MB, sized back in v1.3.1 when data/ was around
650KB. data/ has since grown to 907KB on v1.7.3, and LittleFS rounds every file
up to a 4096-byte block, so the AIO image now lands at roughly 95% full and any
further UI work fails to build with "No more free space".

Nothing was using the 2.94MB of the 8MB chip past 0x510000, and the layout was
lopsided: the 4MB SuperMini already gets 1.4MB of filesystem and the 16MB
XIAO S3 Plus gets 2MB, so the 8MB boards had the smallest filesystem of any
target. spiffs is now 0x3E0000 (3.875MB), which takes the image to about 25%
full, and the last 64KB becomes a coredump partition so panics leave a
backtrace.

nvs, otadata, app0 and app1 keep their original offsets and sizes, so an OTA
app update still lands correctly and saved settings survive. spiffs keeps its
0x410000 offset, so the documented esptool command and the per-release
FLASH_INSTRUCTIONS.txt are unchanged.

Devices that OTA-update only the app keep their old 1MB table and need one full
reflash before they can take a filesystem image built against this one. That
needs calling out in the release notes for whichever version ships it.

Verified: FPVGateAIO, ESP32S3 and FPVGateSolo all build a 4,063,232 byte image.
@coderabbitai

coderabbitai Bot commented Sep 11, 2026

Copy link
Copy Markdown

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • custom_8mb.csv is excluded by !**/*.csv

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 79a1422c-f969-4e3f-bc93-13277c287a71

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@LouisHitchcock
LouisHitchcock merged commit 3707cbb into main Sep 11, 2026
2 checks passed
@LouisHitchcock
LouisHitchcock deleted the fix/8mb-partition-size branch September 12, 2026 14:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant