Tag Archives: Wine

Sonos OS 6.3

Auch Sonos OS 6.3 läßt sich weiterhin unter Linux steuern. Der Funktionsumfang des Controllers ist inzwischen aber arg eingeschränkt, Musikdienste und Radiosender können nicht mehr ausgewählt werden. Lautstärkeregelung und Starten/Stoppen der Wiedergabe funktionieren noch.

Seit OS-Version ist die Minor-Version (das x in 32.x) zweistellig, sodass die vollständige Versionsnummer nicht mehr in an Stelle der alten gepatcht werden kann. Glücklicherweise scheint die Windows-Applikation nur Major und Minor-Version zu berücksichtigen, die Build-Nummer ist egal.

Daher kann die letzte Stelle einfach weggelassen werden. Aus dem Versionsstring „32.11-30071“ wird „32.11-3007“.

Die komplette Anleitung von 2013 gibt’s nach wie vor.

Sonos OS 6.0

Die kürzlich erschienene Sonos OS Version 6.0 unterstützt jetzt u.a. Apple Music. Allerdings bedarf es eines neuen Patchs der Controller-Software, damit diese weiterhin unter Linux benutzt werden kann. Die vollständige Anleitung gibt’s im Posting von 2013, die neue Versionsnummer lautet „31.3-22220“.

Sonos Controller mit OS 5.2 unter Ubuntu

Alle Jahre wieder… nach einem Sonos-OS-Update für die ZonePlayer möchte der Controller unter Linux nicht mehr zusammenarbeiten:

Sonos OS 5.2 unter Ubuntu

Aktuell ist jetzt OS-Version 5.2. Das Patchen der Versionsnummer in der Controller-Software funktioniert weiterhin. Eine detaillierte Anleitung dazu habe ich 2013 veröffentlicht, es muss lediglich die Versionsnummer auf „28.1-83040“ geändert werden.

Neue Sonos-App, neues OS 5.0, alter Controller unter Ubuntu

Sonos hat kürzlich eine überarbeitete Version der Controller-Apps für Android und iOS veröffentlicht. Das Update ist hübsch geworden, aber es war auch bitter nötig: Der alten Version merkte man ihr Alter deutlich an.

Daneben gab es auch eine neue OS-Version 5.0 für die Zone Player. Die letztes Jahr vorgestellte Vorgehensweise, um die Windows-Version der Controllersoftware unter Ubuntu zur Kooperation zu bewegen, funktioniert auch weiterhin. Der aktuelle Versionsstring lautet „26.1-76230“, sonst ändert sich nichts.

Aktuelles Sonos-System mit Sonos-Controller 3.6.1 unter Linux steuern

Vor einiger Zeit hatte ich schon etwas zum Einsatz des Sonos-Controllers unter Linux mithilfe von WINE geschrieben. Zufälligerweise war das die letzte Version, die unter WINE funktioniert hat, Version 3.7 und später laufen leider nicht mehr.

Das wäre halb so schlimm, gäbe es die automatische Update-Routine nicht. Diese prüft beim Start des Controllers, welche Version auf den lokalen Zone Playern installiert ist, und fordert ggf. zum Upgrade auf. Lehnt man dies ab, so verweigert der Controller den Dienst. Hmpf.

Nun bin ich heute über einen Beitrag bei cratoo.de gestolpert. Dort wird u.a. auf ein Posting im Sonos-Forum verwiesen, welches beschreibt, wie man den alten Controller dazu „überredet“, mit einer neueren Sonos-Version zusammenzuarbeiten. Es muss nur eine DLL gepatcht werden, sodass die hinterlegte Version mit der des Zone Players übereinstimmt. Die dort beschriebene Vorgehensweise habe ich heute ausprobiert, sie funktioniert auch noch mit Sonos-Version 4.2.

Hier nun meine Interpretation des Rezepts. Man nehme:

  • Sonos Controller für Windows in Version 3.6.1 – den gibt’s direkt bei Sonos, aber es schadet nicht, sich davon eine Sicherheitskopie anzufertigen. Wer weiss, wie lange Sonos diesen noch anbietet…
  • Die aktuelle Versionsnummer des lokalen Zone Players, zu finden z.B. über dessen Web-Interface: http://x.x.x.x:1400/status/VERSION, wobei x.x.x.x durch die IP-Adresse des ZP zu ersetzen ist.
    Die IP-Adresse findet man z.B. über den DHCP-Server (in meinem Fall eine Fritz!Box) oder über die Controller-App (Einstellungen > Über das Sonos-System) heraus, nmap -p1400 <lokales Netzwerk> geht selbstverständlich auch.
    In meinem Fall lautet die Versionsnummer „24.0-69180“, eventuell vorhandene Buchstaben am Ende ignoriert man.
  • WINE in einer halbwegs aktuellen Version; ich nutze Ubuntu 12.04.3 x86_64, die dort mitgelieferte Version wine-1.4 funktioniert.

Den Sonos Controller installiert man wie gewohnt und verbindet ihn mit dem lokalen Zone Player. Nun wird er nach einem Update verlangen, dies lehnt man ab und beendet die Anwendung.

Jetzt ist die Datei pcdcr.dll ist zu lokalisieren, bei mir befindet sie sich unter ~/.wine/drive_c/Programme/Sonos. Wer möchte macht davon zuerst eine Sicherheitskopie, anschließend geht’s an’s Patchen!

In der Datei ist der Text „16.7-48310“ durch die weiter oben identifizierte Versionsnummer zu ersetzen. Mit sed geht dies beispielsweise so:

sed -bi "s/16\.7-48310/24.0-69180/" ~/.wine/drive_c/Programme/Sonos/pcdcr.dll

Anschließend kann der Controller wieder gestartet werden, er sollte nun nicht mehr nach einem Update suchen und einfach funktionieren. Das Ergebnis schaut so aus:

Sonos Controller 3.6.1 mit Sonos-Version 4.2

Sollte Sonos wieder einmal ein Update verteilen, so muss man nur die neue Versionsnummer herausfinden und die DLL erneut patchen.

Viel Vergnügen beim Nachkochen!

Update 16. Mai 2014: Der Trick funktioniert auch mit der neuen Softwareversion 5.0, der Versionsstring lautet „26.1-76230“.

Update 7. März 2015: Auch mit der Softwareversion 5.2 funktioniert’s so weiterhin. Der Versionsstring lautet „28.1-83040“.

Update 13. Juli 2015: OS-Version 5.4 ist raus, der passende Versionsstring lautet „29.5-91030“.

Update 1. Januar 2016: Die kürzlich erschienene OS-Version 6.0 funktioniert weiterhin wie beschrieben, der passende Versionsstring lautet „31.3-22220“.

Update 19. August 2016: Bei OS-Version 6.3 lautet der Versionsstring „32.11-30071“. Aufgrund der jetzt zweistelligen Minor-Version muss man das letzte Zeichen weglassen, damit das Patchen weiter funktioniert, d.h. „32.11-3007“. Der Teil nach dem Bindestrich scheint nicht relevant zu sein.

Sonos Controller Update auf 3.6.1b unter WINE

Sonos hat kürzlich ein Sicherheitsupdate für die Systemsoftware herausgegeben. Ich nutze die Controller-Software mittels WINE unter Ubuntu (Technische Details: Ubuntu 10.04 64bit, wine 1.2.2), und da läuft das Update leider nicht so ohne weiteres durch. Der Installer wird zwar runtergeladen und ausgeführt, allerdings scheint er nichts zu tun.

Ärgerliches Detail: Die aktuell angebotene Software-Version trägt den Dateinamen SonosDesktopController361b.exe. Dennoch ist nach deren Installation ein weiteres Update erforderlich, das nicht separat erhältlich ist.

Nach einigen Versuchen hab ich’s wie folgt hinbekommen:

  • Dem Update-Hinweis beim Start der Software folgen und durch die Installation klicken, bis zu dem Dialog an dem die aktualisierte Software gestartet werden soll.
  • Nun in das Temp-Verzeichnis der WINE-Installation wechseln (bei mir ~js/.wine/drive_c/users/js/Temp/). Dort wird es einen oder mehrere Ordner geben, deren Name mit einer geschweiften Klammer beginnt. Der neueste davon enthält das ausgepackte Installationspaket.
  • Aus diesem Verzeichnis die Datei „Sonos Desktop Controller.msi“ rauskopieren, z.B. eine Verzeichnisebene nach oben.
  • Nun den Installationsdialog schließen.
  • Jetzt kann die Installation des .msi-Pakets manuell angestossen werden. Dazu in einem Terminal eingeben: msiexec /a „c:\users\js\temp\Sonos Desktop Controller.msi“ (Pfad ggf. anpassen, je nachdem wohin das Paket zuvor kopiert wurde).
  • Den Anweisungen auf dem Bildschirm folgen; die Installation sollte nun durchlaufen und mit einem erfolgreichen Start des Sonos-Controllers in Version 3.6.1 enden.