Home of the Squeezebox™ & Transporter® network music players.
Page 1 of 3 123 LastLast
Results 1 to 10 of 27
  1. #1
    Junior Member
    Join Date
    Sep 2019
    Posts
    18

    Is piCore what I need? Help!

    Bear with me, this is slightly complicated.

    I have Squeezebox Classics all over my house; they are mostly all failing. I've decided to stop trying to buy used ones as they typically arrive with problems very much like mine.

    Here's my problem. I don't use LMS. When I bought the various squeezeboxes, LMS (written in Perl if memory serves) proved to be unstable (ie, I tried to use the squeezebox as an alarm clock and it failed to play a few times.) So I reverse engineered as much of the server/squeezebox protocol as I needed, and wrote my own squeeze server in C++. It's compatible with the classic's software at rev 81, and probably nothing else.

    This server of mine talks to the squeezebox classic sufficiently correctly to handle everything I need, but the user-side interface to the server is entirely my own, a custom socket protocol (no web interface), to handle playing music, drawing the squeezebox screen, report status, etc. And I have a LOT of other code that speaks that protocol - my home automation is deeply tied to it. Everything in the house, from ringing the doorbell to reporting the weather to waking me up is controlled by custom code, speaking my custom protocol to my custom server. I'm other words - I'm very, very wedded to my implementation, and hence to squeezeboxes. And my family has gotten used to interacting with the system; they are the house clocks, give weather reports, they report phone calls, are the doorbell... oh yeah, and they play music.

    So I either throw out thousands of lines of code and the hours that went into it... or I find a player that acts like version 81 of the squeezeblox classic, or something close. (If there are minor differences in protocol I can change my server to suit.)

    As for the actual players, my needs are simple. I need optical (TOSLink) output to my main stereo, and all the others need analog RCA outputs. I need the squeezebox remotes to be received (I have a custom interpretation for the buttons, all handled by my server) so the devices need to handle IR. I need a small screen that can handle at least as many pixels as a squeezebox classic.

    Can piCore do this? Can it act like a specific version of a squeezebox classic, or close enough that I can adapt my code? ANY insight is appreciated. I have handfuls of raspberry pi's around and I'd be happy to press them into service as players.

    (If anyone is interested, I'll happily give away my C++ squeeze-server-analogue code (though I imagine by now LMS has gotten rid of the bugs that drove the creation of it.) I think the protocol it handles is more flexible and capable than LMS's was in the days I used it, and it's fully documented and portable. I ran this server on windows, then on a raspberry pi for years, and now on a NUC on linux mint, with scarcely an issue. But you'd need to write your own apps to speak to it.)

    Any pointers and suggestions welcome. I'm in a desperate way. And I will contribute financially to piCore if it can meet my needs.

  2. #2
    Senior Member paul-'s Avatar
    Join Date
    Jan 2013
    Posts
    2,350
    Some of what you have can be done with current applications. The home integration is a bit tougher. pCP runs squeezelite software player, which is fully up to date with the current protocol. I think you’ll need to be more specific as to the bugs you had, but lms is quite stable.

    We also run Jivelite, which is fully compatible with the RPI official 7” display, ir remotes are supported. If you want to try, just use pCP and install lms on a RPi and give it a spin. I think you will be surprised as to where the eco system s today.

    As for audio outputs, there are many soundcard options available to bolt onto a rpi.
    Last edited by paul-; 2019-09-12 at 18:14.
    piCorePlayer a small player for the Raspberry Pi in RAM.
    Homepage: https://www.picoreplayer.org

    Please donate if you like the piCorePlayer

  3. #3
    Junior Member
    Join Date
    Sep 2019
    Posts
    18
    Quote Originally Posted by paul- View Post
    Some of what you have can be done with current applications. The home integration is a bit tougher. pCP runs squeezelite software player, which is fully up to date with the current protocol. I think youĺll need to be more specific as to the bugs you had, but lms is quite stable.
    My problem wouldn't be with LMS's stability at this point - it's just that all the software in the house talks to my custom server using a custom protocol that LMS doesn't know. I'm tied to that protocol in a dozen applications. Using LMS is not an option for me.

    On the other hand, if piCorePlayer is accepting logitech's original commend set, or something like it, I could adapt my server to send and receive what piCorePlayer likes.

    For example, I just traced through my code to where it sends an strm command to the classic, with a 2 byte prefix for the length and an HTTP-like payload, and then waits for the classic to connect back, etc... it's moderately complex, and dates back to sdqueezebox classic version 81, but if that's what priCoreplayer is still expecting, or something close, I can adapt.

    There must be documentation on the exact protocol piCorePlayer receives and sends back - someone presumably did the reverse engineering I did years ago, with the newer server. Can you point me to the documentation of what piCorePlayer expects? I'll know in short order if I can adapt my code to it.

    TIA.

  4. #4
    Senior Member paul-'s Avatar
    Join Date
    Jan 2013
    Posts
    2,350
    Just to help clarify. piCorePlayer is just a linux OS with a html interface for configuring tools. Squeezelite is the full feature player that most are using now days. It supports most modern audio formats. You can use squeezelite on many many platforms.

    Source code for squeezelite is here. https://github.com/ralph-irving/squeezelite. (slimproto.* are what you want to look at)

    The protocol documentation is in the wiki(on this forum), but might not be totally up to date....
    piCorePlayer a small player for the Raspberry Pi in RAM.
    Homepage: https://www.picoreplayer.org

    Please donate if you like the piCorePlayer

  5. #5
    Babelfish's Best Boy mherger's Avatar
    Join Date
    Apr 2005
    Location
    Switzerland
    Posts
    20,324

    Is piCore what I need? Help!

    > On the other hand, if piCorePlayer is accepting logitech's original
    > commend set, or something like it, I could adapt my server to send and
    > receive what piCorePlayer likes.


    You mentioned IR. Which makes me wonder whether you implemented a UI,
    too? Or how else would you use the IR remote?

    Because pCP does NOT implement the Classic's UI commands. That's part of
    the player protocol. But squeezelite doesn't support displays.

    Simple playback commands should not have changed though.

    Why don't you fire up one of your Pis with pCP and give it a try?
    --

    Michael

  6. #6
    Senior Member
    Join Date
    Oct 2005
    Location
    Ireland
    Posts
    17,912
    I think the main problem would be the display. The Pcp player, jivelite, Squeezplayer etc. do not support the VFD display commands.

    IIRC Triode implemented an applet which sort of emulated the VFD commands on Squeezplay.

    For squeezelite - there is an optional interface for a 2 line LCD display. I cant remember how data is sent to it. May be possible to mod your server to support this display. You can test feasibility as squeezelite can run on PC.
    Last edited by bpa; 2019-09-13 at 00:53.

  7. #7
    Senior Member
    Join Date
    Mar 2010
    Posts
    119
    Quote Originally Posted by paul- View Post
    Just to help clarify. piCorePlayer is just a linux OS with a html interface for configuring tools. Squeezelite is the full feature player that most are using now days. It supports most modern audio formats. You can use squeezelite on many many platforms.

    Source code for squeezelite is here. https://github.com/ralph-irving/squeezelite. (slimproto.* are what you want to look at)

    The protocol documentation is in the wiki(on this forum), but might not be totally up to date....
    One command that squeezelite does not support is the undocumented blst frame that triggers the IR blaster functionality in the original hardware. This is what the IRBlaster plugin uses, for example. One can work around this by listening to server events and configuring the commands on the client (e.g. using my little python daemon, or something similar).

  8. #8
    Senior Member
    Join Date
    Apr 2005
    Location
    UK/London
    Posts
    1,886
    Quote Originally Posted by bpa View Post
    For squeezelite - there is an optional interface for a 2 line LCD display. I cant remember how data is sent to it. May be possible to mod your server to support this display.
    I know of an implementation of LCD display with Squeezelite (using -L parameter to invoke) but it is based on an old Squeezelite version.
    If there is a "Ralphy" way of driving LCD then I would be interested because I could stop my messing around with Slimmer.
    Paul Webster
    http://dabdig.blogspot.com
    Author Radio France (FIP etc) plugin

  9. #9
    Senior Member
    Join Date
    Oct 2005
    Location
    Ireland
    Posts
    17,912
    Quote Originally Posted by Paul Webster View Post
    I know of an implementation of LCD display with Squeezelite (using -L parameter to invoke) but it is based on an old Squeezelite version.
    If there is a "Ralphy" way of driving LCD then I would be interested because I could stop my messing around with Slimmer.
    Don't think so. I haven't followed those LCD projects for few years now so my knowledge is not current.

  10. #10
    Senior Member
    Join Date
    Apr 2005
    Location
    UK/London
    Posts
    1,886
    Quote Originally Posted by pputzer View Post
    One command that squeezelite does not support is the undocumented blst frame that triggers the IR blaster functionality in the original hardware. This is what the IRBlaster plugin uses, for example. One can work around this by listening to server events and configuring the commands on the client (e.g. using my little python daemon, or something similar).
    Not sure if this helps ... but ... SqueezePlay support blst
    Code:
    function blastIRTask( self, irstr)
    	local cmd = "cd /sys/bus/i2c/drivers/fab4-ir/0-0047; "
    	cmd = cmd .. "echo \"" .. irstr .. "\" > ir_blaster; "
    	cmd = cmd .. "echo 1 > ir_blaster; "
    	os.execute( cmd)
    end
    So might be straight-forward to include something similar in SqueezeLite ... perhaps it could invoke a script and let the user make the script work with their IR sender.
    Paul Webster
    http://dabdig.blogspot.com
    Author Radio France (FIP etc) plugin

Tags for this Thread

Posting Permissions

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