SqueezePlayer and synchronisation with other Squeezeboxes

Filed in: news Add comments

I’m often asked, if SqueezePlayer supports synchronisation to other Squeezeboxes.
And unfortunately I always have to answer “it depends on your particular device”.

With this post I want to give some background information about the whole topic and on the bottom I’m going to compile a list of devices that are known to have a working synchronisation to other Squeezeboxes. Be aware that I don’t consider this list to be a guarantee to you that synchronisation will work – too many influencing factors (your network stability, Android version) are still left.

If you tried out synchronization yourself on your device, don’t hesitate to report back, so that I can update this list.

Background information

SqueezePlayer supports the full synchronization protocol for SqueezeBoxes, so actually it should always work, BUT good synchronization (among others) mainly depends on two things
a) a stable clock in the device (i.e. 2 seconds of music shouldn’t have finished playing after 1,98 seconds)
b) exact information of what music frame is played right now (as this gets send back to the server who negotiates what devices should catch up).

Logitech with their Squeezeboxes is in complete control of both – they have their own firmware and dedicated audiodrivers in their boxes come along with very good DACs. Also the iPad hardware is marvellous in the regard by the way. My iPad App “SqueezePad” even mentions synchronization in the App description (and it is based on the same code-base by the way).

Android unfortunately is a very different beast. Every hardware manufacturer decided himself what to put into the device – and obviously not everyone cares for good and reliable sound chips (compromising requirement #a) and as they have to provide their own audio drivers there is also a risk, that they compromise requirement #b.

Also not many people will realize that, as the local player keep playing fine, so there is also no real motivation for manufacturers to care a lot for audio.

One more thing two know: The actual synchronisation protocol does have two steps:
Step one is, that synchronized streams are tried to be started at the same time. That means each device downloads portions of the songs, has to flag a “ready” flag and all get a “go” command at the same time. Then it depends on how fast a device can react onto this “go” signal (and Android sometimes is not the fastest to do so).
The second step is constant synchronisation: each synchronized device reports it’s current playback position. When the server realizes that one device is behind it sends a “skip some milliseconds” signals to get devices back into synchronized play.

It’s important to know the consequences: even if songs didn’t start in sync perfectly – let your devices play some seconds (up to 30 seconds) to check if they will get in sync still. As long as you don’t wipe your playlist they can keep the sync.

Here is an additional article how I used the servers setting of “Player Start Delay” and “Player Audio Delay” to get a good sync even with devices with greater inbuilt delays: https://forums.slimdevices.com/forum/user-forums/general-discussion/96569-android-tv-sticks-boxes-as-squeezebox-replacement

OK – enough talk – here is the compiled list of devices that have a high probability for working sychronisation:

Devices reported to be having good synchronisation

My own devices:

  • HTC Desire
  • HTC Wildwire
  • Sony XPeria Mini

http://forums.slimdevices.com/showpost.php?p=674072&postcount=333:

  • HTC Dream (G1)
  • HTC Nexus One (N1)
  • Samsung Galaxy S2
  • Asus Transformer tablet

http://forums.slimdevices.com/showpost.php?p=670410&postcount=317:

  • Motorola Xoom

http://forums.slimdevices.com/showthread.php?p=664600

  • Motorola Charm

by mail:

  • Droid X

AppStore or Blog Comments

  • Galaxy Note
  • Samsung Galaxy Tab 10.1
  • Samsung Galaxy S
  • Samsung Galaxy Nexus
  • Samsung Galaxy Note 2
  • Sanei N10 tablet
  • LG Optimus T
  • Lg Optimus Speed
  • LG VM670
  • Nexus 7
  • Sony Tablet S SGPT112
  • Acer Iconia Tab B1
  • Sanei N10

34 Responses to “SqueezePlayer and synchronisation with other Squeezeboxes”

  1. Louis Says:

    Sync working on:
    Samsung Galaxy Tab 10.1
    and Samsung Galaxy S

  2. stefan Says:

    Thanks for the testing and report, I’ll update the main article!
    Cheers
    Stefan

  3. Marco Says:

    I have a Samsung Galaxy Nexus and a Sanei N10 tablet and I must say that the synchronisation works perfectly.

  4. stefan Says:

    cool – will add it to the list above!

  5. yesil gul Says:

    LG Optimus T is working as well

  6. stefan Says:

    Thanks for the information, I have added it to the list above.

  7. yesil gul Says:

    Stefan,

    I have two questions.

    Is there a way to get squeeze player as a server so it always starts when the android device starts.

    What does it take to get the alarm working. I know this is not particularly related to your app since I can not get the alarm working on a squeezebox as well. I though you might know.

    Y

  8. stefan Says:

    Hi Yesil,

    if you want to start Squeeze Player automatically when your device starts, I suggest trying out the “Tasker” App which allows to automate this kind of stuff.
    You can setup an alarm also for the SqueezePlayer player – if it is active (which would be the case if your device is powered) it should start the selected radio station or song at the given time.
    This will be very unreliable though: SqueezePlayer doesn’t have any means to keep your alarm time nor is there anything that could prevent Android from just stopping the App. Which would mean that SqueezePlayer wouldn’t wake you up now and then 🙁

  9. yesil gul Says:

    Interesting. You have a good point. Let me tell you what I am trying to do.

    I have a squeezebox. However Logitech recently discontinued the squeeze line, so I wanted to use cheap android devices like the Lg Optimus connected to speaker and then use them as extenders on different rooms.

    So far the sync function worked very well. But like you say if Android can stop the app for no reason then I am not sure how well it will work.
    Now these android devices will only work as squeeze boxes and there will be very few apps working on them.

    Do you think this is possible?

    Also as far as the time is concerned. Isn’t there a way to get the time from device itself or from ntp server.

    I have very limited knowledge of the working of the android devices so sorry if these are dumb questions.

    Thanks

    Yesil

  10. stefan Says:

    Hi Yesil,

    I definitely think it is possible to convert multiple Android devices into Squeezeboxes without too much hazzle.
    Still I wouldn’t use them as alarm clock. In 90% of cases this will work very well, but the remaining 10% are just not cared of. If you have a secondary clock to wake you up if the Android device fails then it might be OK.

    Cheers
    Stefan

  11. Iñigo Says:

    Nexus 7 tablet works ok as well.

  12. yesil gul Says:

    Sony Tablet S SGPT112 is also working

  13. yesil gul Says:

    LG VM670 is also working fine

  14. dieterlumpen Says:

    Note 2 as well as Lg Optimus Speed work fine as well

  15. Marco Says:

    Acer Iconia Tab B1 synchronises perfectly with my Sanei N10

  16. Dan Says:

    doesn’t appear to work between platforms, perfect between two windows machines.

    Works fine
    winxp and linux mint
    linux mint and yosemite
    win7 and linux mint

    Doesn’t work
    yosemite/xp
    yosemite/windows 7

    This means more potential than first thought as I can run linux on the laptop from a stick

  17. Dan Says:

    forgot to mention in last post!

    Doesn’t work on my older nexus 10 with kitkat and xp
    works nicely with yosemite and lollipop on the same device- big surprise!

  18. Glen Says:

    Squeeze Player works great on my Minux X8 media hub. I control it with my Asus tablet. I tried the Logitech controller app on the tablet but switched to Squeezer. The only shortcoming is that the app on the tablet (e.g. Squeezer) cannot switch Squeeze Player on or off the way it does my “hardware” Squeezeboxes. I am using an app to start Squeeze Play at boot, but if you Squeeze Play off it’s no longer visible (i.e. as a Squeezebox device) to the tabllet. It would be great if the
    Squeezebox controller app on the tablet could turn Squeezeplayer on and
    off. I tried Automateit and it’s not the answer. I have not tried Tasker. It sounds like Tasker plus Tasker AutoRemote might do this. Any thoughts?

    Thanks, Glen

  19. stefan Says:

    Hi Glen,

    with the latest version Squeeze should be able to activate SqueezePlayer automatically.
    Also the App “OrangeSqueeze” will start SqueezePlayer again.

    The reason why SqueezePlayer turns off itself after 5 minutes is the battery drain. Squeezeboxes need to be connected to the server all the time – unfortunately this drains the batteries on mobiles too much.

    Cheers
    Stefan

  20. Shawn W Says:

    Hello Stefan,

    I have 3 Samsung Galaxy S (i897 model), which are always powered by USB in a multi room audio setup. I would like to force Squeezeplayer to remain always on, or at least on when the device is plugged in. Is there a way to do this?
    I’ve tested synchronisation between two phones for 24 hours and it remains in perfect sync with MP3s, but internet radio will quickly drift apart. Switching back to MP3 will bring the sync back immediately. I have one phone with a weaker signal, and it will lose sync with FLAC files, so I am assuming this is a bandwidth issue.
    I have had no luck syncing the Galaxys with squeezelite or softsqueeze on a windows PC – they will drift within 5-10 minutes.

  21. stefan Says:

    Hi Shawn,

    actually SqueezePlayer should be staying alive when connected to power all the time.
    Doesn’t this work.

    As a workaround there is my article http://www.squeezeplayer.com/2013/05/start-squeezeplayer-on-startup/
    You should skip to the Tasker article. With tasker you can also ‘ping’ the App every four minutes or so to keep it alive.

    Kind Regards
    Stefan

  22. Shawn W Says:

    Hi Stefan,
    Thanks for the reply. It turns out my wife was unplugging the Galaxy to charge her phone… I’ve added an automateit task to launch squeezeplayer on power plug in, so this should take care of it.
    I am impressed that Squeezeplayer handles 24/192 FLACs on the Galaxy S even though the WM8994 only supports 96kHz – downsampling in the app?

  23. stefan Says:

    Hi Shawn,

    Android Audio Api expects 16Bit / 44kHz streams. So – yes – the tracks are downsampled on the fly.

    Kind Regards
    Stefan

  24. Shawn W Says:

    Hi Stefan,
    Is there a log I can check to see what is happening? I have a device with an alarm which failed to go off this morning, and I could not see the squeezeplayer on the network. The device showed everything was normal, and it was plugged in all night. Squeezeplayer appeared to be running.

  25. stefan Says:

    Hi Shawn,

    you might want to install the “aLogCat” App. I wouldn’t recommend using SqueezePlayer together with the alarm feature.
    Too much can go wrong.

    Real Squeezeboxes do have failover mechanism (i.e. sounding a fallback alarm, because they remember each alarm on their own). SqueezePlayer doesn’t have such a feature.

    Kind Regards
    Stefan

  26. Shawn W Says:

    Hi Stefan,

    I will have a look at aLogCat – haven’t used it for years. I did some more sync testing with two identical Galaxy S models, and I could detect some issues, confirmed in the logs. I moved the phones so they both had good wireless signals (as shown on my wireless controller – about -65db and 35db DNR), but still see some adjustments on the server logs. I guess this is normal? Still a lot better than I have been able to achieve with squeezelite…

    [15-02-10 21:38:16.0989] Slim::Player::StreamingController::_CheckSync (510) b4:07:f9:ac:38:89 bailing as playPoint too old: 10.0660660266876s
    [15-02-10 21:38:17.5470] Slim::Player::StreamingController::_CheckSync (526) playPoints: b4:07:f9:ac:38:89: 1423632864.970, 78:d6:f0:32:d0:e8: -12
    [15-02-10 21:38:17.5473] Slim::Player::StreamingController::_CheckSync (559) b4:07:f9:ac:38:89 resync: skipAhead 12ms
    [15-02-10 21:38:19.5270] Slim::Player::StreamingController::_CheckSync (498) b4:07:f9:ac:38:89 bailing as no playPoint
    [15-02-10 21:38:21.0347] Slim::Player::StreamingController::_CheckSync (498) b4:07:f9:ac:38:89 bailing as no playPoint
    [15-02-10 21:38:22.5380] Slim::Player::StreamingController::_CheckSync (498) b4:07:f9:ac:38:89 bailing as no playPoint
    [15-02-10 21:38:24.5772] Slim::Player::StreamingController::_CheckSync (498) b4:07:f9:ac:38:89 bailing as no playPoint
    [15-02-10 21:38:26.0941] Slim::Player::StreamingController::_CheckSync (498) b4:07:f9:ac:38:89 bailing as no playPoint
    [15-02-10 21:38:27.6045] Slim::Player::StreamingController::_CheckSync (510) 78:d6:f0:32:d0:e8 bailing as playPoint too old: 6.53670597076416s
    [15-02-10 21:38:29.5386] Slim::Player::StreamingController::_CheckSync (510) 78:d6:f0:32:d0:e8 bailing as playPoint too old: 8.47082901000977s
    [15-02-10 21:38:31.0487] Slim::Player::StreamingController::_CheckSync (510) b4:07:f9:ac:38:89 bailing as playPoint too old: 3.4522340297699s
    [15-02-10 21:38:33.0289] Slim::Player::StreamingController::_CheckSync (526) playPoints: b4:07:f9:ac:38:89: 1423632864.951, 78:d6:f0:32:d0:e8: +31
    [15-02-10 21:38:33.0292] Slim::Player::StreamingController::_CheckSync (559) 78:d6:f0:32:d0:e8 resync: skipAhead 31ms
    [15-02-10 21:38:36.0690] Slim::Player::StreamingController::_CheckSync (510) b4:07:f9:ac:38:89 bailing as playPoint too old: 4.43452405929565s
    [15-02-10 21:38:37.5791] Slim::Player::StreamingController::_CheckSync (510) b4:07:f9:ac:38:89 bailing as playPoint too old: 5.94458389282227s
    [15-02-10 21:38:39.5586] Slim::Player::StreamingController::_CheckSync (498) 78:d6:f0:32:d0:e8 bailing as no playPoint
    [15-02-10 21:38:41.0721] Slim::Player::StreamingController::_CheckSync (498) 78:d6:f0:32:d0:e8 bailing as no playPoint

  27. Shawn W Says:

    Hi again,

    With regard to the 16/44.1 issue – so this means using an external USB DAC won’t make a difference, and I can’t use the extra bit depth and sample rate of the WM8994 in the Galaxy?

    ps: Can you explain the playback/buffering values on the sbplayer screen? Is this a % buffer full figure?

    Thanks.

  28. stefan Says:

    Yes an USB Dac won’t make a difference.
    There are only very rare Apps that support USB Dacs at all – and these come with custom USB drivers as Android doesn’t support the Dacs natively.

    Regarding buffering values: the first one is the buffer of decoded audio. the second one is the buffer of downloaded data.

  29. Brad Says:

    Found your app while trying to research alternatives to Sonos. Since I already have a squeezebox Radio, and and old android device laying around (Motorola Atrix 4g), I thought I would give it a try. The atrix is hooked up via the AUX input of an old stereo, and the synch is perfect every time. Just wanted to send you kudos and let you know that I get chills every time I use your app.

  30. Mike Says:

    So, I’m trying to set up a multi-room audio with multiple old Android phones running squeezeplayer, and I’m having sync issues. LMS is running on a Synology diskstation DS214+. Devices are a Samsung Galaxy Exhibit II 4g, a Samsung Galaxy S, a Samsung Galaxy Epic 4G, and a Samsung Galaxy S3, each plugged into its own amp/speakers. Is there any way to tell which is the “problem” device? So far, I’m starting out just trying to sync 2 (like Exhibit and Galaxy S, or Exhibit and Epic). I’d prefer not to have to go through every possible combination (especially if the problem is something else, like network).
    Do you think it would help if I set up a second wifi access point with a unique SSID that’s only used by the music players? Or should this not make a difference?
    I’ve actually got Cat-5 near each of the amps, so if there’s a better way of going about this hardwired with different devices (cheaply priced), please let me know. I picked up some old android phones (cracked screens, who cares), for pretty cheap, and each works individually with the LMS just fine. Only the sync is a problem.
    Thanks for your advice.

  31. stefan Says:

    Hi Mike,

    the problem with that many different devices ist, that each of them (due to the different audio chips) does have a another latency (i.e. mini delay until the actual audio begins to play). Furthermore if only one device doesn’t have a constant timing (i.e. lags or plays a little bit to fast) it can influence the whole sync experience of all other devices.

    I don’t think that changing the network or the actual Android firmware does help here. As each device does have its own audio buffer prefilled, network latencies typically aren’t a problem.

    So yes – the only real option here is to start with a small sync group of two devices, adjust server settings until they play in sync and the add the next one step by step. With non – Squeezeboxes I wouldn’t dare to try to sync more than 3 at once.

    Here are some instruction about how one can fine tune the servers sync settings: http://forums.slimdevices.com/showthread.php?99865-Android-TV-Sticks-Boxes-as-Squeezebox-Replacement

  32. Mike Says:

    Oops – one other question. Do you think it would help to wipe off the stock Android software on these and load up something stripped down like Cyanogenmod? Is there a particular Android version that might be better than others (i.e., Froyo vs. Gingerbread vs. ICS, vs Kit Kat)?

  33. stefan Says:

    As written below I don’t think, that the actual Android firmware does have a significant influence on the timing of the audio chip of each individual device.

  34. Joost Says:

    Works well on my Samsung Galaxy Note 3 (N9005), as stated it takes some seconds to get synced properly, but then it will stay that way. Good job!