diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index 0f8575394..2e9f478f3 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -555,11 +555,21 @@ void deserializeConfigFromFS() { DEBUG_PRINTLN(F("Reading settings from /cfg.json...")); success = readObjectFromFile("/cfg.json", nullptr, &doc); - if (!success) { //if file does not exist, try reading from EEPROM + if (!success) { // if file does not exist, optionally try reading from EEPROM and then save defaults to FS + releaseJSONBufferLock(); #ifdef WLED_ADD_EEPROM_SUPPORT deEEPSettings(); #endif - releaseJSONBufferLock(); + + // save default values to /cfg.json + // call readFromConfig() with an empty object so that usermods can initialize to defaults prior to saving + JsonObject empty = JsonObject(); + usermods.readFromConfig(empty); + serializeConfig(); + // init Ethernet (in case default type is set at compile time) + #ifdef WLED_USE_ETHERNET + WLED::instance().initEthernet(); + #endif return; } @@ -568,7 +578,7 @@ void deserializeConfigFromFS() { bool needsSave = deserializeConfig(doc.as(), true); releaseJSONBufferLock(); - if (needsSave) serializeConfig(); // usermods required new prameters + if (needsSave) serializeConfig(); // usermods required new parameters } void serializeConfig() { diff --git a/wled00/wled_eeprom.cpp b/wled00/wled_eeprom.cpp index 5e56a8b0e..0b9e76423 100644 --- a/wled00/wled_eeprom.cpp +++ b/wled00/wled_eeprom.cpp @@ -467,11 +467,5 @@ void deEEPSettings() { EEPROM.begin(EEPSIZE); loadSettingsFromEEPROM(); EEPROM.end(); - - //call readFromConfig() with an empty object so that usermods can initialize to defaults prior to saving - JsonObject empty = JsonObject(); - usermods.readFromConfig(empty); - - serializeConfig(); } #endif