diff --git a/tasmota/settings.h b/tasmota/settings.h
index af74422df..8b7fe2822 100644
--- a/tasmota/settings.h
+++ b/tasmota/settings.h
@@ -91,7 +91,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu
uint32_t grouptopic_mode : 1; // bit 25 (v7.0.0.1) - SetOption75 - GroupTopic replaces %topic% (0) or fixed topic cmnd/grouptopic (1)
uint32_t bootcount_update : 1; // bit 26 (v7.0.0.4) - SetOption76 - Enable incrementing bootcount when deepsleep is enabled
uint32_t slider_dimmer_stay_on : 1; // bit 27 (v7.0.0.6) - SetOption77 - Do not power off if slider moved to far left
- uint32_t spare28 : 1;
+ uint32_t compatibility_check : 1; // bit 28 (v7.1.2.6) - SetOption78 - Disable OTA compatibility check
uint32_t spare29 : 1;
uint32_t shutter_mode : 1; // bit 30 (v6.6.0.14) - SetOption80 - Enable shutter support
uint32_t pcf8574_ports_inverted : 1; // bit 31 (v6.6.0.14) - SetOption81 - Invert all ports on PCF8574 devices
@@ -428,7 +428,7 @@ struct SYSCFG {
unsigned long weight_calibration; // 7C4
unsigned long energy_frequency_calibration; // 7C8 also used by HX711 to save last weight
uint16_t web_refresh; // 7CC
- char mems[MAX_RULE_MEMS][10]; // 7CE
+ char mems[MAX_RULE_MEMS][10]; // 7CE - Used by scripter as script_pram
char rules[MAX_RULE_SETS][MAX_RULE_SIZE]; // 800 uses 512 bytes in v5.12.0m, 3 x 512 bytes in v5.14.0b
diff --git a/tasmota/settings.ino b/tasmota/settings.ino
index b572ca645..afbd7b223 100644
--- a/tasmota/settings.ino
+++ b/tasmota/settings.ino
@@ -345,6 +345,10 @@ void SetFlashModeDout(void)
uint32_t OtaVersion(void)
{
+ if (Settings.flag3.compatibility_check) {
+ return 0xFFFFFFFF;
+ }
+
eboot_command ebcmd;
eboot_command_read(&ebcmd);
uint32_t start_address = ebcmd.args[0];
diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino
index fe10e4cd3..8aece2be8 100644
--- a/tasmota/xdrv_01_webserver.ino
+++ b/tasmota/xdrv_01_webserver.ino
@@ -511,9 +511,8 @@ const char kUploadErrors[] PROGMEM =
D_UPLOAD_ERR_1 "|" D_UPLOAD_ERR_2 "|" D_UPLOAD_ERR_3 "|" D_UPLOAD_ERR_4 "|" D_UPLOAD_ERR_5 "|" D_UPLOAD_ERR_6 "|" D_UPLOAD_ERR_7 "|" D_UPLOAD_ERR_8 "|" D_UPLOAD_ERR_9
#ifdef USE_RF_FLASH
"|" D_UPLOAD_ERR_10 "|" D_UPLOAD_ERR_11 "|" D_UPLOAD_ERR_12 "|" D_UPLOAD_ERR_13
-#else
- "|" D_UPLOAD_ERR_14
#endif
+ "|" D_UPLOAD_ERR_14
;
const uint16_t DNS_PORT = 53;
@@ -2141,9 +2140,10 @@ void HandleUploadDone(void)
if (Web.upload_error) {
WSContentSend_P(PSTR("%06x'>" D_FAILED "
"), WebColor(COL_TEXT_WARNING));
#ifdef USE_RF_FLASH
- if (Web.upload_error < 14) {
+ if (Web.upload_error < 15) {
#else
- if (Web.upload_error < 11) {
+ if ((Web.upload_error < 10) || (14 == Web.upload_error)) {
+ if (14 == Web.upload_error) { Web.upload_error = 10; }
#endif
GetTextIndexed(error, sizeof(error), Web.upload_error -1, kUploadErrors);
} else {
@@ -2238,7 +2238,7 @@ void HandleUploadLoop(void)
Update.end(); // End esp8266 update session
Web.upload_file_type = UPL_EFM8BB1;
- Web.upload_error = SnfBrUpdateInit();
+ Web.upload_error = SnfBrUpdateInit(); // 10, 11
if (Web.upload_error != 0) { return; }
} else
#endif // USE_RF_FLASH
@@ -2246,7 +2246,7 @@ void HandleUploadLoop(void)
if ((WEMOS == my_module_type) && (upload.buf[0] == ':')) { // Check if this is a ARDUINO SLAVE hex file
Update.end(); // End esp8266 update session
Web.upload_file_type = UPL_TASMOTASLAVE;
- Web.upload_error = TasmotaSlave_UpdateInit();
+ Web.upload_error = TasmotaSlave_UpdateInit(); // 0
if (Web.upload_error != 0) { return; }
} else
#endif
@@ -2281,13 +2281,13 @@ void HandleUploadLoop(void)
free(efm8bb1_update);
efm8bb1_update = nullptr;
if (result != 0) {
- Web.upload_error = abs(result); // 2 = Not enough space, 8 = File invalid
+ Web.upload_error = abs(result); // 2 = Not enough space, 8 = File invalid, 12, 13
return;
}
}
ssize_t result = rf_search_and_write(upload.buf, upload.currentSize);
if (result < 0) {
- Web.upload_error = abs(result);
+ Web.upload_error = abs(result); // 8, 12, 13
return;
} else if (result > 0) {
if ((size_t)result > upload.currentSize) {
@@ -2379,7 +2379,7 @@ void HandleUploadLoop(void)
}
if (OtaVersion() < VERSION_COMPATIBLE) {
AbandonOta();
- Web.upload_error = 10; // Not compatible
+ Web.upload_error = 14; // Not compatible
return;
}
}