Bugzilla – Bug 9170
xPL IR Code Broadcast Broken
Last modified: 2009-07-31 10:27:21 UTC
When IR keypress broadcasts are enabled in the xPL Plugin, the following error appears in server.log when a keypress is received: "Slim::Plugin::xPL::Plugin::xplExecuteCallback (575) Warning: Called without a client:" The appropriate xPL message is NOT sent on the network. Other xPL messages are sent and received correctly ie. status messages are broadcast and xPL commands are correctly responded to by SqueezeCenter. Looking in the code, the xPL Plugin has been called without a client set by the notify() code when a IR remote key is pressed. This was working prior to the transition to v7.x.
Andy McCallum: do you have a patch for this? I don't think we have a way to test the xPL plugin here.
Dean, Unfortunately I haven't been able to work out why SqueezeCenter doesn't pass the correct data to the Plugin. The symptom of not sending the xPL message is caused by the plugin not receiving the required data from SqueezeCenter. The Plugin must be informed of the device receiving the IR data. So I am currently thinking that the bug is in SqueezeCenter not forwarding the data - it does so for other events, and the plugin correctly processes the events. A simple test is to enable the xPL PLugin and set it to broadcast IR key presses in the xPL PLugin configuration page. Then use the IR remote on a connected SqueezeBox. The server.log file will show the error. Since the xPL protocol side of the plugin is working, I presume fixing the error as logged will solve the problem.
QA to verify this method of reproductions works okay, then pass it to the devs.
Version 7.1 of SqueezeCenter fixes one of the causes of this bug. This was the problem causing the log message in the original report. Below is a patch to fully resolve the problem. Just a simple missing line in the xPL Plugin itself. Could someone please apply this patch to: server/Slim/Plugin/xPL/Plugin.pm Index: Plugin.pm =================================================================== --- Plugin.pm (revision 22874) +++ Plugin.pm (working copy) @@ -57,6 +57,7 @@ $localip = inet_ntoa((gethostbyname($computername))[4]); $xpl_interval = $prefs->get('interval'); + $xpl_ir = $prefs->get('ir'); $xpl_port = 50000;
Thanks, applied in 7.2 change 22876. There is still a bug in that you need to restart SC if you change the IR pref. Also, the logWarning call when there is no $client should be changed to not clutter up the log file. Actually, the subscription should probably be changed to only subscribe to the things it cares about, currently it gets called for *everything*.
(In reply to comment #5) > There is still a bug in that you need to restart SC if you change the IR pref. Agreed. Could you raise a separate bug and I (or someone else, of course) will follow it up? > Also, the logWarning call when there is no $client should be changed to not > clutter up the log file. Actually, the subscription should probably be changed > to only subscribe to the things it cares about, currently it gets called for > *everything*. > Agreed. I did look at this briefly but it does require a little extra thought to ensure we optimally map to the xPL Schema. Could you raise a separate bug and I will try to follow it up?
Verified the fix with SqueezeCenter Version: 7.2.1 - 23502 Andy McCallum, feel free to open another bug about having to restart SqueezeCenter for changes to the plugin to take effect.
This bug has been fixed in the 7.3.0 release version of SqueezeCenter! Please download the new version from http://www.slimdevices.com/su_downloads.html if you haven't already. If you are still experiencing this problem, feel free to reopen the bug with your new comments and we'll have another look.
Reduce number of active targets for SC