Home of the Squeezebox™ & Transporter® network music players.
Results 1 to 7 of 7

Thread: perl 7.16

  1. #1
    Junior Member
    Join Date
    Jun 2012

    perl 7.16

    SO I am running LMS on arch linux and it was updated to perl 5.16.0 and I hade rebuild all packages that come with LMS and it starts and works fine except for previous and next buttons not working and I can press play and start playing but I can play pause it never pauses it goes back to play.
    What perl library works with those button any ideas on how to fix it

  2. #2
    Junior Member
    Join Date
    Feb 2010

    JSON related issues?

    I'm running into the same problem. It might be the way I rebuilt the modules, rather than a problem with the LMS, but since this thread is here, I'll post what I've found:

    • I'm using the PKGBUILD for Arch Linux 32-bit (I can't post links yet, but it's user submitted in the AUR).
    • Controlling via Squeezeplay, pause/play works, but next/previous DO NOT. (This does not seem to use JSON for control.)
    • JSON ["button","jump_rew"] and ["button","jump_fwd"] (used by the web interface) DO NOT work.
    • JSON ["playlist", "index", "+1"] and ["playlist", "index", "-1"] DO work.
    • JSON toggle ["pause"] (used by web interface) will start audio playing but NOT pause it.
    • JSON pause ["pause","1"] and play ["play"] DO work.
    • back/forward buttons on the Touch screen AND remote DO NOT work.
    • pause/play buttons on the Touch screen AND remote DO work.

    I get no errors in the logs no matter what I do. I don't know nearly enough to know what I should be looking at, but I'm willing to try things if anybody has any ideas. Thanks for reading.

    --EDIT: JSON is NOT the culprit; I was wrong about from Squeezeplay. Sorry!
    Last edited by Renophaston; 2012-06-05 at 12:40. Reason: I was wrong!

  3. #3
    Junior Member
    Join Date
    Jun 2012
    Web page source shows this
    <script type="text/javascript" src="/html/js-main.html?r=33893"></script>
    <script type="text/javascript">/*
    * Globally used Logitech Media Server strings.
    * This file should be PROCESSed if SqueezeJS.UI is used.

    SqueezeJS.Strings['power'] = "Power";

    SqueezeJS.Strings['play'] = "Play";

    SqueezeJS.Strings['pause'] = "Pause";

    SqueezeJS.Strings['next'] = "Next";

    SqueezeJS.Strings['previous'] = "Previous";

    SqueezeJS.Strings['connecting_for'] = "Connecting...";

    SqueezeJS.Strings['shuffle'] = "Shuffle";

    SqueezeJS.Strings['shuffle0'] = "Don't Shuffle Playlist";

    SqueezeJS.Strings['shuffle1'] = "Shuffle by Song";

    SqueezeJS.Strings['shuffle2'] = "Shuffle by Album";

    SqueezeJS.Strings['repeat'] = "Repeat";

    SqueezeJS.Strings['repeat0'] = "Repeat off";

    SqueezeJS.Strings['repeat1'] = "Repeat current song";

    SqueezeJS.Strings['repeat2'] = "Repeat playlist";

    SqueezeJS.Strings['volume'] = "Volume";

    SqueezeJS.Strings['volume'] += ':';

    SqueezeJS.Strings['volumeup'] = "Louder";

    SqueezeJS.Strings['volumedown'] = "Softer";

    SqueezeJS.Strings['by'] = "by";

    SqueezeJS.Strings['from'] = "from";

    SqueezeJS.Strings['colon'] = ":";

    SqueezeJS.Strings['on'] = "on";

    SqueezeJS.Strings['off'] = "off";

    SqueezeJS.Strings['yes'] = "Yes";

    SqueezeJS.Strings['no'] = "No";

    SqueezeJS.Strings['album'] = "Album";

    SqueezeJS.Strings['artist'] = "Artist";

    SqueezeJS.Strings['year'] = "Year";

    SqueezeJS.Strings['close'] = "Close";

    SqueezeJS.Strings['cancel'] = "Cancel";

    SqueezeJS.Strings['choose_player'] = "Choose Player";

    SqueezeJS.Strings['synchronize'] = "Synchronize";

    SqueezeJS.Strings['setup_synchronize_desc'] = "The player can be synchronized with other players, enabling them to play the same music simultaneously. Choose the players you would like to synchronize with from the list of available synchronization groups. Choose No Synchronization to stop synchronization.";

    SqueezeJS.Strings['setup_no_synchronization'] = "No Synchronization";

    SqueezeJS.Strings['no_player'] = "Your player was not found.";

    SqueezeJS.Strings['no_player_details'] = "<b>If you own a Squeezebox or Transporter:</b><ul><li>Make sure that your player is plugged in and its networking settings are correct. Click the Refresh button once your player is connected.</ul><p><b>If you do not own a Squeezebox or Transporter:</b><ul><li>You can listen to your music library using <a target=\"_top\" href=\"/html/softsqueeze/index.html\">SoftSqueeze</a>, a software version of Squeezebox.<li>You can use MP3 player software (such as Winamp or iTunes) to listen to your music library with Logitech Media Server by connecting to this URL: <a target=\"stream\" href=\"http://localhost:9000/stream.mp3\">http://localhost:9000/stream.mp3</a></ul>";

    SqueezeJS.Strings['squeezenetwork'] = "mysqueezebox.com";

    SqueezeJS.Strings['squeezebox_server'] = "Logitech Media Server";

    SqueezeJS.Strings['sc_want_switch'] = "This player is currently connected to %s. Do you want it to switch to this Logitech Media Server?";

    SqueezeJS.Strings['browse'] = "Browse";

    SqueezeJS.Strings['choose_folder'] = "Please select a folder";

    SqueezeJS.Strings['choose_file'] = "Please select a file";

    if (Ext.MessageBox) {
    Ext.MessageBox.buttonText.yes = 'Yes';
    Ext.MessageBox.buttonText.no = 'No';
    Ext.MessageBox.buttonText.cancel = 'Cancel';

  4. #4
    Junior Member
    Join Date
    Feb 2010
    Yeah, but that's all just stuff for the UI on the web page; none of it gets sent to the server. (Right? )

    If I look at what's getting sent, it's this JSON (for instance, for the "Next" button):
    {"id":1, "method":"slim.request","params":["$PLAYERID",["button","jump_fwd"]]}
    And that doesn't work. But if I send the same commands through the CLI (via Telnet), like this:
    $PLAYERID button jump_fwd
    that works. So there's something different between:
    • sending a command from the web UI (using JSON) or the remote control (not JSON) (DOES NOT WORK), and
    • sending a command from the CLI (DOES WORK)

    Looking at the logs, the former looks like this:
    [12-06-05 21:15:46.9474] Slim::Control::Request::dump (2374) Request: Command [$PLAYERID->button] from /024d0a29/slim/request|138||024d0a29  (Dispatchable)
    [12-06-05 21:15:46.9493] Slim::Control::Request::dump (2376)    Param: [_orFunction] = []
    [12-06-05 21:15:46.9511] Slim::Control::Request::dump (2376)    Param: [_buttoncode] = [jump_fwd]
    [12-06-05 21:15:46.9529] Slim::Control::Request::dump (2376)    Param: [_time] = []
    [12-06-05 21:15:46.9550] Slim::Control::Request::dump (2374) Request: Command [$PLAYERID->button] from /024d0a29 slim/request|138||024d0a29  (Done)
    [12-06-05 21:15:46.9568] Slim::Control::Request::dump (2376)    Param: [_orFunction] = []
    [12-06-05 21:15:46.9585] Slim::Control::Request::dump (2376)    Param: [_buttoncode] = [jump_fwd]
    [12-06-05 21:15:46.9603] Slim::Control::Request::dump (2376)    Param: [_time] = []
    [12-06-05 21:15:46.9621] Slim::Control::Request::executeDone (1927) 0
    While the latter does this:
    [12-06-05 21:16:21.4634] Slim::Control::Request::dump (2374) Request: Command [$PLAYERID->button] from CLI  (Dispatchable)
    [12-06-05 21:16:21.4652] Slim::Control::Request::dump (2376)    Param: [_buttoncode] = [jump_fwd]
    [12-06-05 21:16:21.4670] Slim::Control::Request::dump (2376)    Param: [_time] = undef
    [12-06-05 21:16:21.4689] Slim::Control::Request::dump (2376)    Param: [_orFunction] = undef
    [12-06-05 21:16:21.4713] Slim::Control::Request::dump (2374) Request: Command [$PLAYERID->playlist jump] (Dispatchable)
    [12-06-05 21:16:21.4731] Slim::Control::Request::dump (2376)    Param: [_index] = [+1]
    [12-06-05 21:16:21.4748] Slim::Control::Request::dump (2376)    Param: [_seekdata] = undef
    [12-06-05 21:16:21.4766] Slim::Control::Request::dump (2376)    Param: [_fadein] = undef
    [12-06-05 21:16:21.4784] Slim::Control::Request::dump (2376)    Param: [_noplay] = undef
    [12-06-05 21:16:21.4815] Slim::Control::Request::notifyFromArray (843) (playlist stop)
    [12-06-05 21:16:21.4960] Slim::Control::Request::notify (2037) Notifying displaynotify
    [12-06-05 21:16:21.4979] Slim::Control::Request::__autoexecute (2504) __autoexecute()
    [12-06-05 21:16:21.4998] Slim::Control::Request::dump (2374) Request: Query [$PLAYERID->displaystatus] from /024d0a29/slim/displaystatus/$PLAYERID|7||024d0a29  (Dispatchable)
    [12-06-05 21:16:21.5016] Slim::Control::Request::dump (2376)    Param: [subscribe] = [showbriefly]
    [12-06-05 21:16:21.5034] Slim::Control::Queries::displaystatusQuery (1090) displaystatusQuery()
    [12-06-05 21:16:21.5054] Slim::Control::Request::dump (2374) Request: Query [$PLAYERID->displaystatus] from /024d0a29/slim/displaystatus/$PLAYERID|7||024d0a29  (Done)
    [12-06-05 21:16:21.5072] Slim::Control::Request::dump (2376)    Param: [subscribe] = [showbriefly]
    [12-06-05 21:16:21.5090] Slim::Control::Request::dump (2410)    Result: [type] = [showbriefly]
    [12-06-05 21:16:21.5129] Slim::Control::Request::dump (2410)    Result: [display] = [{
      duration => 30_000,
      "icon-id" => "music/227500/cover.png",
      text => ["Now Playing", "I Have Not Been to Oxford Town"],
      type => "song",
    [12-06-05 21:16:21.5147] Slim::Control::Request::executeDone (1927) 0
    I don't know whether the difference there between "[]" and "undef" is important, or whether it was that way with the old Perl. But in one case it gets translated into an Index +1, and in the other it doesn't (and looks like it repeats?) I'm going to revert back to 5.14 and check that out, but I might be busy tomorrow, so that might take a while. I'll post if I figure anything out.

    (I feel stupid trying to figure this out in public, because I don't know Perl and I'm a novice programmer at best. I apologize to anybody who reads this and cringes!)

  5. #5
    Junior Member
    Join Date
    Feb 2010

    Working, but not understood.

    I made a small change in Request.pm that fixes all the problems I had, but I don't understand what changed between Perl 5.14 and 5.16 that would require this change, so YMMV and proceed at your own risk and all that.

    What I did was change getParam in Slim/Control/Request.pm from:
    # get a parameter by name
    sub getParam {
        return $_[0]->{'_params'}->{ $_[1] };
    # get a parameter by name
    sub getParam {
        return ($_[0]->{'_params'}->{ $_[1] } ne '') ? $_[0]->{'_params'}->{ $_[1] } : undef;
    The few buttons that weren't working for me were being returned here as empty strings rather than undef, and when they were being tested elsewhere (in e.g. buttonCommand()) with !define(), the commands weren't being executed. But I haven't figured out why these showed up as empty strings when most showed up undef, and I didn't see anything in the perldelta that suggests that the define() tests should give different results than they used to. But my Squeezebox works now, which is nice. If someone who understands more than I do can see what's going on, please share. I don't want to be suggesting "fixes" that will break things subtly.

    PS - If you can correct the subject line, please do! 7.16 is probably still a ways out

  6. #6
    Senior Member
    Join Date
    Jun 2007
    Just stating that I got the same issue. Haven't tried your fix yet and will actually wait a little before applying it, maybe I can sit this one out.

  7. #7
    Junior Member
    Join Date
    Feb 2010

    Bug report

    I've added a bug report at http://bugs.slimdevices.com/show_bug.cgi?id=17984. Feel free to vote and add your comments if you think I've missed anything.

    signor_rossi: Not a bad idea

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts