diff --git a/de_web.pro b/de_web.pro
index 4ef4f72f01..bd8a313758 100644
--- a/de_web.pro
+++ b/de_web.pro
@@ -61,6 +61,7 @@ DEFINES += GIT_COMMMIT=\\\"$$GIT_COMMIT\\\" \
# Minimum version of the RaspBee firmware
# which shall be used in order to support all features for this software release (case sensitive)
+DEFINES += GW_AUTO_UPDATE_FW_VERSION=0x260b0500
DEFINES += GW_MIN_RPI_FW_VERSION=0x261f0500
# Minimum version of the deRFusb23E0X firmware
diff --git a/firmware_update.cpp b/firmware_update.cpp
index 5d073b4d7a..6a3058c420 100644
--- a/firmware_update.cpp
+++ b/firmware_update.cpp
@@ -140,12 +140,13 @@ void DeRestPluginPrivate::updateFirmwareWaitFinished()
// done
if (fwProcess == 0)
{
+ gwFirmwareVersion == QLatin1String("0x00000000"); // force reread
fwUpdateStartedByUser = false;
gwFirmwareNeedUpdate = false;
updateEtag(gwConfigEtag);
apsCtrl->setParameter(deCONZ::ParamFirmwareUpdateActive, deCONZ::FirmwareUpdateIdle);
fwUpdateState = FW_Idle;
- fwUpdateTimer->start(FW_IDLE_TIMEOUT_LONG);
+ fwUpdateTimer->start(FW_IDLE_TIMEOUT);
}
else // recheck
{
@@ -400,6 +401,18 @@ void DeRestPluginPrivate::queryFirmwareVersion()
fwUpdateState = FW_WaitUserConfirm;
fwUpdateTimer->start(FW_WAIT_USER_TIMEOUT);
apsCtrl->setParameter(deCONZ::ParamFirmwareUpdateActive, deCONZ::FirmwareUpdateReadyToStart);
+
+ // auto update factory fresh devices with too old firmware
+ if (gwDeviceName == QLatin1String("RaspBee") &&
+ !gwSdImageVersion.isEmpty() && nodes.empty() && sensors.empty())
+ {
+ if (fwVersion <= GW_AUTO_UPDATE_FW_VERSION)
+ {
+ DBG_Printf(DBG_INFO, "GW firmware start auto update\n");
+ startUpdateFirmware();
+ }
+ }
+
return;
}
else