Squeezebox Radio fails to connect to LMS 8: "Update required" - gordonb3/bubba-overlay GitHub Wiki

Unfortunately the latest Squeezebox Radio firmware (7.7.3) comes with a bug which prevents it from connecting to Logitech Media Server 8+. The recommended method is to install a patch while you are still on LMS 7.x:

  • On the Radio go to Settings/Advanced/Applet Installer, install the Patch Installer. The Radio will re-boot.
  • Once it's back, go to Settings/Advanced/Patch Installer and install the "Version Comparison Fix".

Should you have been confronted with this issue after having upgraded to LMS 8.0 there is an alternative method that involves making an SSH connection to the Radio:

  • On the Radio go to Settings/Advanced/Remote Access, enable the checkbox
  • Use your preferred SSH client to connect to the Radio as user root and password 1234 (note: this requires KexAlgorithms=diffie-hellman-group1-sha1 and 3des-cbc cipher)
  • Download or copy this patch file onto the Radio
  • change dir to / and run patch -p1 < /root/SBRadio-SlimServer-Version.patch
  • reboot the Radio

The patch code is as follows:

--- a/usr/share/jive/jive/net/SocketHttp.lua
+++ b/usr/share/jive/jive/net/SocketHttp.lua
@@ -276,6 +276,7 @@
 			System:getMachine(),
 			'/',
 			string.gsub(JIVE_VERSION, "%s", "-"),
+			'-lms8',
 			' (',
 			System:getArch(),
 			')'})
--- a/usr/share/jive/jive/slim/SlimServer.lua
+++ b/usr/share/jive/jive/slim/SlimServer.lua
@@ -1213,17 +1213,21 @@
 	if not self.state.version then
 		return nil
 	end
+
+	return self:isMoreRecent(self.state.version, minimumVersion)
+end

-	local serVer = string.split("%.", self.state.version)
-	local minVer = string.split("%.", minimumVersion)
+function isMoreRecent(self, new, old)
+	local newVer = string.split("%.", new)
+	local oldVer = string.split("%.", old)

-	for i,v in ipairs(serVer) do
-		if minVer[i] and v < minVer[i] then
-			return false
+	for i,v in ipairs(newVer) do
+		if oldVer[i] and tonumber(v) > tonumber(oldVer[i]) then
+			return true
 		end
 	end

-	return true
+	return false
 end