SqueezePlayer and synchronisation with other Squeezeboxes
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.
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
April 20th, 2012 at 14:26
Sync working on:
Samsung Galaxy Tab 10.1
and Samsung Galaxy S
April 20th, 2012 at 22:00
Thanks for the testing and report, I’ll update the main article!
Cheers
Stefan
November 20th, 2012 at 11:13
I have a Samsung Galaxy Nexus and a Sanei N10 tablet and I must say that the synchronisation works perfectly.
November 20th, 2012 at 23:57
cool – will add it to the list above!
December 8th, 2012 at 03:05
LG Optimus T is working as well
December 8th, 2012 at 07:11
Thanks for the information, I have added it to the list above.
December 8th, 2012 at 14:57
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
December 8th, 2012 at 23:04
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 🙁
December 9th, 2012 at 03:27
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
December 9th, 2012 at 19:50
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
December 10th, 2012 at 21:24
Nexus 7 tablet works ok as well.
December 20th, 2012 at 18:13
Sony Tablet S SGPT112 is also working
January 2nd, 2013 at 00:35
LG VM670 is also working fine
January 18th, 2013 at 14:49
Note 2 as well as Lg Optimus Speed work fine as well
April 16th, 2013 at 19:47
Acer Iconia Tab B1 synchronises perfectly with my Sanei N10
December 10th, 2014 at 18:30
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
December 10th, 2014 at 18:44
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!
January 16th, 2015 at 09:22
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
January 18th, 2015 at 22:45
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
February 4th, 2015 at 02:37
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.
February 5th, 2015 at 18:10
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
February 8th, 2015 at 18:48
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?
February 10th, 2015 at 22:18
Hi Shawn,
Android Audio Api expects 16Bit / 44kHz streams. So – yes – the tracks are downsampled on the fly.
Kind Regards
Stefan
February 10th, 2015 at 15:29
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.
February 10th, 2015 at 22:20
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
February 11th, 2015 at 05:49
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
February 11th, 2015 at 05:53
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.
February 14th, 2015 at 01:23
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.
March 23rd, 2015 at 20:36
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.
May 29th, 2015 at 19:14
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.
May 31st, 2015 at 06:49
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
May 29th, 2015 at 19:17
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)?
May 31st, 2015 at 06:50
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.
June 3rd, 2015 at 14:16
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!