A few weeks ago, I was contacted by Sonos, makers of the eponymous Sonos Digital Music System. As a musician and obviously as a geek, the concept was intriguing, so I agreed to take a closer look.
I received two ZP100s, which are about the size of an Xbox. Each ZP100 has RCA stereo inputs and outputs, a 50W/channel amplifier, a four-port 10/100 Ethernet switch, integrated "SonosNet" wifi, and an internal powersupply. The front of each ZP100 has only three buttons -- mute, and volume up/down.
Coupled with these units were two pairs of bookshelf speakers, and the CR100 wireless controller. Initial configuration was quite simple, requiring a ZP100 to be connected to the network, and the client software installed on a Mac or PC. Broadcasts are used to find the ZP100, and then configure it with user information, a name (such as Living Room), and the location of the media files, which can be on the computer running the client, or on a network resource via SMB. The ZP100 then cataloged the contents of the music folder by ID3v2 tag as well as physical file location, and the system was ready to go.
I had a problem with the CR100 controller at first though. This is actually quite a neat little device -- about the size of a PSP -- that connects to the ZP100s via wireless, and presents the user with a refreshingly sparse button layout. Mute and volume controls are easy to find, and the iPod-like scrollwheel is easy to use. Coupled with the bright 3.5" LCD display and a motion sensor that lets it jump to attention when it's picked up, it's an ergonomic success. Unfortunately, the controller simply wouldn't completely power up. It showed the screen and button backlight, but nothing more. The device is sealed, and I couldn't disconnect the battery... so I left it in that state for seven hours until the battery finally quit. When I returned power to the controller, it sprang back to life and hasn't had a problem since.
Both the controller and zoneplayers run Linux, with the controller running from internal flash. It wasn't lost on me that I was playing music from a share on a Linux server shared via Samba to another Linux system. Unavoidable complexity indeed. Each zoneplayer gets an IP address, although the wireless networking isn't quite so standard. Interestingly, the zoneplayers utilize a single port, TCP/1400, which runs a Web server. I suspect that all controller interaction is thus controlled via XML-RPC, or at least a CGI POST or GET, but I couldn't confirm. Also, when getting DHCP each zoneplayer identifies itself as "SonosZP" which can lead to duplicate DNS names in DDNS configurations. Some corruption of the MAC address should really have been done there.