- Notifications
You must be signed in to change notification settings - Fork7.8k
Closed
Labels
Milestone
Description
Board
ESP32-C3
Device Description
Adafruit QT Py ESP32-C3
Hardware Configuration
Nothing attached.
Version
latest master
IDE Name
Arduino IDE
Operating System
macOS
Flash frequency
80Mhz
PSRAM enabled
no
Upload speed
115200
Description
Attempts to mount a LittleFS filesystem fails on ESP32-C3...
I am using the FS read PR (#6569) as well.
LittleFS configuration settings:
[LittleFS] data : /Users/brent/Downloads/esp32_esp8266_test_littlefs/data[LittleFS] offset : 0[LittleFS] start : 2686976[LittleFS] size : 1472[LittleFS] page : 256[LittleFS] block : 4096->/secrets.json[LittleFS] upload : /var/folders/k6/g066g1tn567fn8mj2p42x4240000gn/T/arduino_build_941002/esp32_esp8266_test_littlefs.littlefs.bin[LittleFS] address: 2686976[LittleFS] port : /dev/cu.usbmodem1433301[LittleFS] speed : 115200[LittleFS] mode : dout[LittleFS] freq : 80mSketch
/* Checks and writes out the files on a LittleFS filesystem on ESP8266 and ESP32 platforms This sketch only performs READ operations on the LittleFS filesystem and should not modify the filesystem's contents. NOTE: The LittleFS image must have already been uploaded prior to using this sketch.*/#include<Arduino.h>#include<FS.h>#include<LittleFS.h>#include<ArduinoJson.h>StaticJsonDocument<512> jsonDoc;///< JSON document// Via https://github.com/espressif/arduino-esp32/blob/master/libraries/LittleFS/examples/LITTLEFS_test/LITTLEFS_test.inovoidlistDir(fs::FS &fs,constchar * dirname,uint8_t levels){ Serial.printf("Listing directory: %s\r\n", dirname); #ifdef ARDUINO_ARCH_ESP8266 File root = fs.open(dirname,"r"); #else File root = fs.open(dirname); #endifif(!root){ Serial.println("- failed to open directory");return; }if(!root.isDirectory()){ Serial.println(" - not a directory");return; } File file = root.openNextFile();while(file){if(file.isDirectory()){ Serial.print(" DIR :"); Serial.println(file.name());if(levels){ #ifdef ARDUINO_ARCH_ESP8266listDir(fs, file.fullName(), levels -1); #elselistDir(fs, file.path(), levels -1); #endif } }else { Serial.print(" FILE:"); Serial.print(file.name()); Serial.print("\tSIZE:"); Serial.println(file.size()); } file = root.openNextFile(); }}// via https://github.com/espressif/arduino-esp32/blob/master/libraries/LittleFS/examples/LITTLEFS_test/LITTLEFS_test.inovoidreadFile(fs::FS &fs,constchar * path){ Serial.printf("Reading file: %s\r\n", path); #ifdef ARDUINO_ARCH_ESP8266 File file = fs.open(path,"r"); #else File file = fs.open(path); #endifif(!file || file.isDirectory()){ Serial.println("- failed to open file for reading");return; } Serial.println("- read from file:");while(file.available()){ Serial.write(file.read()); } Serial.println(""); file.close();}voidsetup() { Serial.begin(115200);while (!Serial) { ;// wait for serial port to connect. Needed for native USB }// attempt to mount LittleFS filesystem Serial.print("Mounting LittleFS filesystem...");if(!LittleFS.begin()){ Serial.println("ERROR: LittleFS Mount Failed!");return; } Serial.println("Mounted!");// list everything on the filesystem '/' directory where secrets is expectedlistDir(LittleFS,"/",3);// check if WipperSnapper's `secrets.json` file exists on filesystemif (!LittleFS.exists("/secrets.json")) { Serial.println("ERROR: Unable to find secrets.json file on LittleFS filesystem!");while (1);// wait forever }// read out the secrets.json file in plain-textreadFile(LittleFS,"/secrets.json");// Test we can open the secrets file using ArduinoJSON File secretsFile = LittleFS.open("/secrets.json","r");if (!secretsFile) { Serial.println("ERROR: Unable to open secrets.json file from the LittleFS filesystem!");while (1);// wait forever }// Test we can deserialize the secrets file using ArduinoJSON DeserializationError err =deserializeJson(jsonDoc, secretsFile);if (err) { Serial.print("ERROR: Failed to deserialize secrets.json file with code:"); Serial.println(err.c_str());while (1);// wait forever }// Test parsing username from secrets.json fileconstchar *io_username = jsonDoc["io_username"];// error check against default values [ArduinoJSON, 3.3.3]if (io_username ==nullptr) { Serial.println("ERROR: Failed to parse io_username!");while(1);// wait forever }// Get IO key from JSONconstchar *io_key = jsonDoc["io_key"];// error check against default values [ArduinoJSON, 3.3.3]if (io_key ==nullptr) { Serial.println("ERROR: Failed to parse io_key!");while(1);// wait forever }// Parse SSIDconstchar *network_type_wifi_native_network_ssid = jsonDoc["network_type_wifi_native"]["network_ssid"];if (network_type_wifi_native_network_ssid ==nullptr) { Serial.println("ERROR: Failed to parse network_type_wifi_native_network_ssid!");while(1);// wait forever }// Parse SSID passwordconstchar *network_type_wifi_native_network_password = jsonDoc["network_type_wifi_native"]["network_password"];// error check against default values [ArduinoJSON, 3.3.3]if (network_type_wifi_native_network_password ==nullptr) { Serial.println("ERROR: Failed to parse network_type_wifi_native_network_password!");while(1);// wait forever } Serial.println("Parsed `secrets.json` values..."); Serial.print("\tio_username:"); Serial.println(io_username); Serial.print("\tio_key:"); Serial.println(io_key); Serial.print("\tWiFi SSID:"); Serial.println(network_type_wifi_native_network_ssid); Serial.print("\tWiFi Password:"); Serial.println(network_type_wifi_native_network_password);// close the file secretsFile.close();// clear the JSON document and release all memory from the memory pool jsonDoc.clear();// close fs LittleFS.end(); Serial.println("DONE!");}voidloop() {// no-op}
Debug Message
14:33:38.869 -> Mounting LittleFS filesystem..../components/esp_littlefs/src/littlefs/lfs.c:1071:error: Corrupted dir pair at {0x0, 0x1}14:33:38.869 -> E (5935) esp_littlefs: mount failed, (-84)14:33:38.869 -> E (5936) esp_littlefs: Failed to initialize LittleFS14:33:38.869 -> [ 3023][E][LittleFS.cpp:94] begin(): Mounting LittleFS failed! Error: -114:33:38.869 -> ERROR: LittleFS Mount Failed!Other Steps to Reproduce
No response
I have checked existing issues, online documentation and the Troubleshooting Guide
- I confirm I have checked existing issues, online documentation and Troubleshooting guide.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Done