Multiroom Audio

Soluţii pentru distribuţie audio în toată locuinţa

After some more work I came up with a better solution written on C# by using Open Software’s UPnP stacks. The advantage is that the whole solution is installable and works out of the box.

Every user is only responsible to edit the UniqueDeviceNames.ini file in a proper way. We assist this step too.

What you need

  1. A KNX installation and properly defined group addresses (see [commands list] section of the ini file). Also you need a KNX/IP interface to be able to transmit selected KNX telegrams via IP network. In particular, a Gira HomeServer can perform this function.
  2. A Sonos system. We will discover all online ZonePlayers and put them in a text file for your convenience. Do not mind anymore the complicated IDs, will use only friendly names as you see them in the original Sonos Controlles.
  3. A Windows box with Microsoft .NET Framework 2.0
  4. The Sonos KNX interface Setup v1.0.0 kit from here. PLEASE DO NOT INSTALL THIS VERSION ANYMORE! CHECK BELOW FOR UPDATES!

How to install

  1. Double click on setup.exe and follow the directions on the screen. Accept all security warnings (windows and firewall). Remember the installation folder location.
  2. Go to computer management, expand Services and look for SonosHS service. Start it (only once, the service is set to automatic startup for the future)
  3. in about 30 seconds a filename UniqueDevicesNames.txt will be written in the installation folder. Check this file to make sure you use the proper Zone Players friendly names in the next step
  4. edit the file UniqueDevicesNames.ini and make sure to use proper group addresses and zone player names in sections [map_to_zone] and [map_to_command]. For a list of available zones see UniqueDevicesNames.txt and for a list of available commands see the [commands list - this section is only informative] section. Also make sure you input proper IP and port addresses for the KNX IP interface.
  5. save the ini file. there is no need to restart the service, all should work from now on

How to debug

Stay tuned, I will post a Windows form application with identical functionality soon. Just look at the form and see if you can properly receive the KNX telegrams. The source code (VS2010 solution) is available upon request.

Known issues

  1. if you add a Zone Player after the service starts, this Zone Player will not be visible to the interface until the service SonosHS is restarted (or the computer is restarted)
  2. not all commands are implemented at this moment
  3. there is no feedback implemented from Sonos to the KNX
  4. the solution requires some CPU and memory optimization


UPDATE 22/10/2010

Here are the new setup kits for version 1.0.2. See below change log for more information

  1. Windows service setup kit
  2. Windows application setup kit



- compatible with 32 and 64 bits systems
- added: toggleMute 1bit command
- added: balance control via EIS6 command (0=max left, 50=balanced, 100=max right)
- added: play mode change via KNX 4 bit control with 0:NORMAL, 1:INTRO, 2:SHUFFLE, 3:RANDOM, 4:REPEAT_ONE, 5:REPEAT_ALL, 6-15:NORMAL
- got rid of UniqueDeviceNames.txt file, now we manage the [zone_list] section inside the UniqueDeviceNsmes.ini file directly
- more debug information in EventViewer, under Application logs, source SonosHS
- the service starts automatically, no need for user intervention (not nice solution but it works)

issues: Sonos ZonePlayers seem to respond inaccurately to Play Mode commands, perhaps the UPnP standard implementation does not match between Sonos and Open Software (Intel)

1.0.1 - initial version x86 compatible only
- supports transport commands: play, stop, pause, next, previous, mute, unmute
- supports volume commands: master volume via EIS 6 (0...100)


As a big surprise I discovered the UPnP plugins for Gira HomeServer QuadClient from the latest buid of Expert software in conjunction with QuadClient 1.2 as a client is able to control most of the functionality of the Sonos system.


  • There is still no access to music services such as internet radio, deezer or local audio plugs at the zone player. While every zone player is visible as a media server and all these services are listed, they come empty and there is no command to refresh their content.
  • There is no linking and unlinking commands for zone players.

How to install and configure

Just add UPnP Media Server plugin in Quadrant 3 and UPnP Media Renderer plugin in Quadrant 4 so both can be visible in the QuadClient at the same time.

Configure the UPnP Media Server plugin to hide all Sonos Zone Players since there is no much benefit to use them as servers. Let all other media servers visible (such as windows computers, nas media servers, etc)

How to operate

Display both media servers and media renderers quadrants at the same time. On the media renderer pane display your preffered Sonos Zone Player or local QC player (which integrates the computer’s media player). Access your desired media server and select your music. Click play and the music becomes live.

iPod, iPhone, iPad?

Sadly, the UPnP media plugins cannot be exported yet for the iOS apps clients.

Tags: , ,

This project occupies my mind for some time and recently I got closer to a working solution. Actually I already have something working in place but at this stage the solution looks quite ugly and I would not recommend it but only for the very enthusiastic users of KNX, Sonos and Gira HomeServer. You should have a Windows based computer in your network to run the solution.

Credit: most of the code is reused from the following sources:

If you want to replicate the solution you should follow these steps:

on the Gira HomeServer

  • in Experte software create some group addresses to control your Sonos zone players. Mark Send communication object for those group addresses so values will be sent through the KO Gateway (in the IP network)
    • type 1 bit for transport commands: play(1)/stop(0), pause(1), next(1)/previous(0), mute(1)/unmute(0)
    • type 8bit-EIS6 – percent (0-100%) for volume commands
  • If you use QuadClient you can place new controls for audio commands in the rooms coresponding to zone player locations. I used the Set Value – percent control to adjust the volume. You can also assign in ETS3 any pushbuttons to change the group address value for volume control. Remember to note which group address corresponds to which zone player – you need it later to build the UniqueDeviceNames.ini file
  • do not forget to enable the Communication Gatweway in Project settings and to use the default port 7003

on your Windows machine

  • download Olser’s code from…856041&start=0 and install the wshell scripts ZonePlayerController.wsc and ZonePlayerFinder.wsc (update: now I included them in the zip archive)
  • Download and place ZPCMD.exe file in the root folder (C:\).
  • Follow Olser’s instructions to detect the zone players in your installation. You will get a file named UniqueDeviceNames.txt in your root folder. This is how this file looks like:

Portable: uuid:RINCON_000E5851565201400
Dining Room: uuid:RINCON_000E5830093201400
Patio: uuid:RINCON_000E58133EE401400
Guest Room: uuid:RINCON_000E58233A4601400
Living Room: uuid:RINCON_000E58234DF001400
Master Bedroom: uuid:RINCON_000E5821CE0001400

  • Create a file named UniqueDeviceNames.ini in the root folder by editing the UniqueDeviceNames.txt file with the following structure

  • Please note that the [HS] section states your HomeServer IP address, port and secret key in order to communicate with the Gira HomeServer. Then the other sections relate your KNX group addresses to the Sonos zone players IDs found in the UniqueDeviceNames.txt file
  • Place the SonosHS.exe (REMOVED, see newer posts) file in a place of convenience (if you want use root folder as well)
  • Make sure you have installed the .NET framework v4 and open a cmd prompt windows as an administrator
  • Run this command: C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe c:\sonoshs.exe in order to install the windows service named SonosHS
  • Go and start the windows service (this is only necessary after installation, it will start automatically after any reboot)
  • Go ahead and control your zone players from your KNX devices. Please keep an eye for firewall warnings and allow SonosHS to connect and access the disk system. Save those confirmations in your firewall rules.

Please note this is a very incipient implementation and is not very well tested. There is a limitation that you need to provide audio content for your player beforehands, from this solution you can only control the volume and the transport commands of the player. You can use the project posted at the end of the article to modify it and get your own implementation.

This is my current TODO list for next versions:

  • integrate the ZonePlayerController.wsc code inside the C# project and remove the need to register a separate component
  • integrate the ZonePlayerFinder.wsc into a proper setup solution and generate automatically the UniqueDeviceNames.ini file
  • place all files in an appropriate location into the computer program files
  • integrate the watch functionality for automated feedback to the HS (now the communication is only unidirectional)

Please note that this would be a less desired solution at least for the visualisation part. The best solution would be to generate a whole new plugin for QuadClient in order to control all Sonos installation from the HomeServer itself. Gira already provides such plugins for several multiroom audio systems and may have plans to add Sonos on the list. Or not. Until then I will stick with this solution. Update: I just tested the new Expert 2.5 plus 2.5 firmware and it appears the UPnP plugins in Quad Client work just fine with the Sonos system. I will post a new article about that. Still the project presented here is useful if you want to control the Sonos zone players from the KNX devices through group addresses and integrate music in scenes and so on.

The source code

The source code can be found here (REMOVED, see newer posts). I cannot provide any support at this stage, posted information is just for community preview.


The solution as a windows form application (REMOVED, see newer posts)(using Dacom’s HSMonitor interface)

The complete setup package (REMOVED, see newer posts) for the Windows service: installs, starts, generates device names – read the comments for more info


A apărut versiunea 3.3 a aplicațiilor SONOS (controllere și firmware), prin urmare utilizatorii pot deja să își actualizeze sistemul SONOS.

Odată cu această versiune s-a lansat și controller-ul pentru Apple iPad – vedeți câteva capturi de ecran mai jos.

Tags: ,

Ieri a fost lansat un upgrade la versiunea 3.1 a sistemului de operare al echipamentelor Sonos. Procedura de upgrade este automată, toate playere-le Sonos fiind aduse la zi în câteva minute.

Noutăţi: icoane îmbunătăţite, posibilitate de a comunica pe Twitter programul muzical curent.

Sonos surse de muzică

Sonos surse de muzică


Anunţ Twitter din controllerul Sonos

Tags: , ,

Chiar dacă au apărut producători care integrează audio în instalaţiile KNX, de cele mai multe ori soluţiile acestora sunt prea scumpe.

O soluţie convenabilă este cea produsă de Sonos, iar ultimul lor produs este demonstrat aici:

Sonos S5

Dacă deţineţi deja iPod Touch sau iPhone înseamnă că deţineţi controlorul în mod gratuit (instalaţi aplicaţia Sonos Controller din App Store) şi cu el puteţi comanda oricâte playere Sonos.

Tags: , ,