diff --git a/data_embed/index.html b/data_embed/index.html
index ca75c85..bf73bf3 100644
--- a/data_embed/index.html
+++ b/data_embed/index.html
@@ -853,7 +853,9 @@
id="lora.rxSpreadingFactor"
required=""
>
-
+
+
+
@@ -873,7 +875,9 @@
id="lora.txSpreadingFactor"
required=""
>
-
+
+
+
diff --git a/src/LoRa_APRS_iGate.cpp b/src/LoRa_APRS_iGate.cpp
index 0fd5d11..a280100 100644
--- a/src/LoRa_APRS_iGate.cpp
+++ b/src/LoRa_APRS_iGate.cpp
@@ -67,8 +67,8 @@ ___________________________________________________________________*/
#endif
-String versionDate = "2025-12-29";
-String versionNumber = "3.1.7";
+String versionDate = "2026-01-07";
+String versionNumber = "3.1.7.1";
Configuration Config;
WiFiClient aprsIsClient;
WiFiClient mqttClient;
diff --git a/src/configuration.cpp b/src/configuration.cpp
index adbcc3b..4d2e0c2 100644
--- a/src/configuration.cpp
+++ b/src/configuration.cpp
@@ -92,15 +92,31 @@ bool Configuration::writeFile() {
data["lora"]["rxActive"] = loramodule.rxActive;
data["lora"]["rxFreq"] = loramodule.rxFreq;
- data["lora"]["rxSpreadingFactor"] = loramodule.rxSpreadingFactor;
data["lora"]["rxCodingRate4"] = loramodule.rxCodingRate4;
data["lora"]["rxSignalBandwidth"] = loramodule.rxSignalBandwidth;
data["lora"]["txActive"] = loramodule.txActive;
data["lora"]["txFreq"] = loramodule.txFreq;
- data["lora"]["txSpreadingFactor"] = loramodule.txSpreadingFactor;
data["lora"]["txCodingRate4"] = loramodule.txCodingRate4;
data["lora"]["txSignalBandwidth"] = loramodule.txSignalBandwidth;
- data["lora"]["power"] = loramodule.power;
+ data["lora"]["power"] = loramodule.power;
+
+ int rxSpreadingFactor = loramodule.rxSpreadingFactor;
+ int txSpreadingFactor = loramodule.txSpreadingFactor;
+ #if defined(HAS_SX1276) || defined(HAS_SX1278)
+ const int minSF = 6, maxSF = 12;
+ #endif
+ #if defined(HAS_SX1262) || defined(HAS_SX1268)
+ const int minSF = 5, maxSF = 12;
+ #endif
+ #if defined(HAS_LLCC68)
+ const int minSF = 5, maxSF = 11;
+ #endif
+
+ rxSpreadingFactor = (rxSpreadingFactor < minSF) ? minSF : (rxSpreadingFactor > maxSF) ? maxSF : rxSpreadingFactor;
+ txSpreadingFactor = (txSpreadingFactor < minSF) ? minSF : (txSpreadingFactor > maxSF) ? maxSF : txSpreadingFactor;
+
+ data["lora"]["rxSpreadingFactor"] = rxSpreadingFactor;
+ data["lora"]["txSpreadingFactor"] = txSpreadingFactor;
data["display"]["alwaysOn"] = display.alwaysOn;
data["display"]["timeout"] = display.timeout;