Index: src/squeezeplay_fab4/share/applets/SqueezeCenter/SqueezeCenterApplet.lua =================================================================== --- src/squeezeplay_fab4/share/applets/SqueezeCenter/SqueezeCenterApplet.lua (revision 8408) +++ src/squeezeplay_fab4/share/applets/SqueezeCenter/SqueezeCenterApplet.lua (working copy) @@ -21,6 +21,7 @@ local Task = require("jive.ui.Task") local Timer = require("jive.ui.Timer") local Window = require("jive.ui.Window") +local squeezeos = require("squeezeos_bsp") local appletManager = appletManager local jiveMain = jiveMain @@ -268,6 +269,28 @@ end +function killSqueezeCenter(self) + -- first try the regular way + self:_stopServer(true) + + -- try harder if this didn't work + if self:serverRunning() then + -- stop scanner + local pid = _pidfor('scanner.pl') + if pid then + squeezeos.kill(pid, 3) + end + + -- stop server + pid = _pidfor('slimserver.pl') + if pid then + squeezeos.kill(pid, 3) + end + + os.remove("/var/run/squeezecenter.pid") + end +end + function _getStatusText(self) Index: src/squeezeplay_fab4/share/applets/SqueezeCenter/SqueezeCenterMeta.lua =================================================================== --- src/squeezeplay_fab4/share/applets/SqueezeCenter/SqueezeCenterMeta.lua (revision 8408) +++ src/squeezeplay_fab4/share/applets/SqueezeCenter/SqueezeCenterMeta.lua (working copy) @@ -28,6 +28,7 @@ meta:registerService("udevEventHandler") meta:registerService("squeezecenterStartupCheck") meta:registerService("isBuiltInSCRunning") + meta:registerService("killSqueezeCenter") end function configureApplet(meta) Index: src/squeezeplay_squeezeos/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua =================================================================== --- src/squeezeplay_squeezeos/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua (revision 8408) +++ src/squeezeplay_squeezeos/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua (working copy) @@ -541,6 +541,11 @@ -- interrupted during the firmware upgrade. appletManager:callService("disconnectPlayer") + -- stop memory hungry services before upgrading + if (System:getMachine() == "fab4") then + appletManager:callService("killSqueezeCenter") + end + -- start the upgrade Task("upgrade", self, _t_upgrade, _upgradeFailed):addTask() Index: src/squeezeplay_squeezeos/share/applets/SetupFirmwareUpgrade/UpgradeUBI.lua =================================================================== --- src/squeezeplay_squeezeos/share/applets/SetupFirmwareUpgrade/UpgradeUBI.lua (revision 8408) +++ src/squeezeplay_squeezeos/share/applets/SetupFirmwareUpgrade/UpgradeUBI.lua (working copy) @@ -303,6 +303,11 @@ self.downloadBytes = self.downloadBytes + #chunk if _action == "store" then + if not _fhsink then + log:error("_fhsink not defined") + return nil, "Something went wrong... _fhsink not defined" + end + -- write content to fhsink local t, err = _fhsink(chunk) if not t then