mirror of
https://github.com/OpenEPaperLink/OpenEPaperLink.git
synced 2026-03-21 00:04:28 +01:00
[GH-ISSUE #528] esp32-s3 BLE only AP Failed to initialize LittleFS #886
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @benjamin-reuter on GitHub (Nov 22, 2025).
Original GitHub issue: https://github.com/OpenEPaperLink/OpenEPaperLink/issues/528
Describe the bug
I tried several ESP32-S3 and flashed with the web flasher.
Every flash was successful but ended with a LittleFS failure when booting.
E (33) esp_littlefs: ./components/esp_littlefs/src/littlefs/lfs.c:1347:error: Corrupted dir pair at {0x1, 0x0}
E (34) esp_littlefs: mount failed, (-84)
E (36) esp_littlefs: Failed to initialize LittleFS
Information about the ESP32-S3:
esptool v5.1.0
Connected to ESP32-S3 on COM6:
Chip type: ESP32-S3 (QFN56) (revision v0.2)
Features: Wi-Fi, BT 5 (LE), Dual Core + LP Core, 240MHz, Embedded PSRAM 8MB (AP_3v3)
Crystal frequency: 40MHz
MAC: 90:70:69:31:47:54
Stub flasher running.
Flash Memory Information:
Manufacturer: c2
Device: 2018
Detected flash size: 16MB
Flash type set in eFuse: quad (4 data lines)
Flash voltage set by eFuse: 3.3V
What can I do?
@myriky commented on GitHub (Nov 28, 2025):
same issue
@jonasniesner commented on GitHub (Dec 6, 2025):
I know this does not directly solve your issue but what are you trying to do with the BLE only AP? I am thinking about deprecating it because it was never really stable and if you use BLE tags with Home assistant, BLE proxies are the preferred option now.
@sfritz67 commented on GitHub (Dec 16, 2025):
I'm having the same issue, but with the BLE only AP and also the AP and Flasher, did you find a solution ?
@dvorakpt commented on GitHub (Dec 22, 2025):
I'm having the same issue:
web flasher https://install.openepaperlink.de/ .:BLE only AP
E (19) esp_littlefs: ./components/esp_littlefs/src/littlefs/lfs.c:1367:error: Corrupted dir pair at {0x1, 0x0}
E (20) esp_littlefs: mount failed, (-84)
E (22) esp_littlefs: Failed to initialize LittleFS
Failed to open languages.json file
start detect chip...please wait
chip sync ...
Chip is ESP32-S3 (QFN56) (revision v0.2)
Features: Wi-Fi, BT 5 (LE), Dual Core + LP Core, 240MHz, Embedded PSRAM 8MB (AP_3v3)
Crystal is 40MHz
MAC: e8f60a884a2c
Manufacturer: c2
Device: 2018
Status value: 0x71f40
Detected flash size: 16MB
@purndal commented on GitHub (Jan 8, 2026):
I'm experiencing the exact same error.
I tried testing with older versions, but the error persists.
I purchased the hardware according to the recommended list,
yet the problem remains. Has anyone found a solution?
@purndal commented on GitHub (Jan 8, 2026):
https://github.com/littlefs-project/littlefs/issues/461#issuecomment-1546904754
It seems like there is an issue here.
I couldn't get anything done today due to the firmware error.
It's a sad day.
@myriky commented on GitHub (Jan 8, 2026):
Solution: Fixed LittleFS initialization failure by using modified partition table
I encountered the same LittleFS initialization failure issue on ESP32-S3 (N16R8, 16MB flash) with the BLE_ONLY_AP configuration. After investigating, I found that the issue was related to the partition table configuration.
Problem
Corrupted dir pair at {0x1, 0x0}large_spiffs_16MB.csv) used by BLE_ONLY_AP was causing filesystem corruptionSolution
I created a modified partition table file
temp.csvwith adjusted partition sizes that resolved the issue:Original partition table (originally
large_spiffs_16MB.csvwas used by BLE_ONLY_AP, but it was causing the issue):The original partition table had larger app partitions (around 4.5MB each) and a large spiffs partition that didn't align properly with the 16MB flash, causing filesystem corruption.
Modified partition table (
temp.csv):Changes made
app0andapp1partition sizes to 2MB each (from the original larger sizes)spiffspartition offset and size to fit properly within the 16MB flashplatformio.inito usetemp.csvfor theBLE_ONLY_APenvironment:Upload Guide
After creating the
temp.csvfile and updatingplatformio.ini, follow these steps to upload the firmware and filesystem to your ESP32-S3 device:Navigate to the ESP32_AP-Flasher directory:
Erase the flash memory (optional, but recommended for clean install):
Note: Replace
/dev/cu.usbmodem101with your actual serial port (on Windows it will beCOMx, on Linux/Mac it will be/dev/ttyUSBxor/dev/cu.usbmodem*).Build and upload the firmware:
Upload the filesystem (LittleFS):
Monitor the serial output to verify successful initialization:
Or using screen:
Expected output: You should see successful LittleFS initialization without any "Corrupted dir pair" errors.
Result
✅ Successfully flashed firmware and filesystem without LittleFS errors
✅ LittleFS initialized correctly on boot
✅ All operations completed successfully
Test environment
The modified partition table ensures proper alignment and prevents filesystem corruption during initialization. This solution worked consistently across multiple flash attempts.
Good luck 😇
한국어 요약
ESP32-S3 (N16R8, 16MB 플래시) 보드에서 BLE_ONLY_AP 설정 사용 시 발생한 LittleFS 초기화 실패 문제를 해결했습니다.
문제점
Corrupted dir pair at {0x1, 0x0}오류large_spiffs_16MB.csv)이 파일시스템 손상을 유발해결 방법
temp.csv파티션 테이블 파일을 생성하여 문제를 해결했습니다:app0,app1파티션 크기를 2MB로 축소 (원래 더 큰 크기였음)spiffs파티션 오프셋 및 크기를 16MB 플래시에 맞게 조정platformio.ini에서BLE_ONLY_AP환경에temp.csv사용하도록 설정업로드 가이드
ESP32_AP-Flasher디렉토리로 이동pio run -e BLE_ONLY_AP -t erase --upload-port [포트]pio run -e BLE_ONLY_AP -t upload --upload-port [포트]pio run -e BLE_ONLY_AP -t uploadfs --upload-port [포트]pio device monitor -p [포트] -b 115200결과
✅ LittleFS 오류 없이 펌웨어 및 파일시스템 플래시 성공
✅ 부팅 시 LittleFS 정상 초기화 확인
✅ 모든 작업 성공적으로 완료
테스트 환경
수정된 파티션 테이블은 적절한 정렬을 보장하고 초기화 중 파일시스템 손상을 방지합니다. 이 해결책은 여러 번의 플래시 시도에서 일관되게 작동했습니다.
정확하게 기억은 안나지만 결국 이런식으로 해서 업로드를 했고, 구동에 성공했습니다.. 행운을 빕니다.
@jonasniesner commented on GitHub (Jan 10, 2026):
@myriky One problem I see in your summery is that the 32MB_partition table.csv was never used for the BLE only AP
@purndal commented on GitHub (Jan 10, 2026):
Sigh... it's a failure. No matter how many times I try to fix it, even with Gemini's help, and no matter how many times I upload the firmware through PlatformIO, it just doesn't work. I think I need to buy the exact board intended for this to make it work properly. Just buying any board seems to cause problems. Even when a board is labeled as 'N16R8', there are cases where it simply doesn't function. I believe it's best to purchase a product that is guaranteed to work correctly. This project is not something that can be done easily. It's been a series of difficult days.
@myriky commented on GitHub (Jan 10, 2026):
@jonasniesner
Thanks for the correction! You're absolutely right - I've updated my comment to reflect that the original partition table used by BLE_ONLY_AP was
large_spiffs_16MB.csv, not32MB_partition table.csv.Since this work was done a while ago and I reconstructed it from my zsh_history, I made an error in identifying the original partition table. The solution itself (using the modified
temp.csvpartition table) remains valid and successfully resolved the LittleFS initialization issue on my ESP32-S3 board.I've corrected the documentation accordingly. Thanks for keeping the information accurate! 👍
I've also updated my original comment to correctly reference
large_spiffs_16MB.csvas the original partition table.@sfritz67 commented on GitHub (Jan 13, 2026):
I tried with another ESP32-S3, and I had no issues using OEPL BLE only.
Based on my experience, the issue comes from hardware, the first ESP32-S3 was a cheap AE model, maybe the ones having this issue use the same model I did.
@purndal commented on GitHub (Jan 14, 2026):
fail esp32 s3-n16r8 aliexpress board

success esp32 s3-n16r8 aliexpress board

The unit isn't defective;
it powers on, but it fails to run. The version without the 'RGB' text on the board is the one having execution issues.
The new one I bought works fine. I even tested the one that won't run, and it still has the full memory capacity recognized.
I carefully reviewed all the buyer photos before making the purchase. It is incredibly difficult to source the specific product needed for this project.