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