Sonos hacking

I love my Sonos devices, they are reliable and sound great. I’m also curious how they work, and I do wish there were better diagnostics for media files that refuse to play.

Turns out the Sonos has an admin web interface on port 1400. A URL like http://192.168.0.20:1400/support/review brings up a bunch of debug data; substitute the IP address for one of your Sonos devices. It loads slowly. Also appears to be centralized, no need to find the right device first.

I also found my way to SoCo, an open source hacker interface to the Sonos. Command line control over playing, queuing, etc. Neat stuff and seems to work.

What I haven’t found is any way to get an error message why a track won’t play :-(

I thought the Network Matrix was interesting. Screenshot below. STP presumably refers to spanning tree. Sonos’ core magic is the way music plays completely correctly, synchronized, in an unmanaged wireless network. Presumably this is the status of the magic that makes that work.

Screen Shot 2014-09-26 at 10.58.02 AM

3 thoughts on “Sonos hacking

  1. core magic indeed! definitely a nontrivial problem.

    we played with rolling our own version of this way back in another life: https://snarfed.org/synchronizing_mp3_playback we got the synching algorithm broadly right, but it turns out you have to own the player itself too, so that you control playback rate and seek latency across all the devices at high enough precision. we cut our losses at that point.

    now, of course, we do the civilized thing and just use Sonos like normal people. :P

  2. What a great blog post you wrote! I do love how Sonos got it right. They always have gotten it right, too, and it never once has failed me. IIRC the Slimp3 could also do this over your house ethernet, although maybe not as well.

    I’m surprised NTP helped you; it provides 1ms precision, more or less, or maybe worse depending on the operating system. Although come to think of it I don’t know, what out-of-syncness is audible? Sound travels about 1 foot / millisecond, so if you’re standing in one room and can also hear a sound device in a second room, that second signal is some 20ms out of sync. So maybe our ears aren’t that sensitive.

  3. slim devices, definitely! they ended up open sourcing much (all?) of their code, but that still didn’t save them.

    re audible latency, the literature and our tests both said the window was maybe a few dozen ms or so. skew more than that, and you’ll start to hear it. so 1ms precision for NTP was fine, but different players would skew more than that after playing even a single song, and we often saw seek latency as bad as 500ms. gotta love the real world!

Comments are closed.