Sonos Update to 3.7 and Linux

  • 21 March 2012
  • 72 replies
  • 56690 views

Userlevel 2
Sloved / Solution in page 3.

Hello,

Who has a success with updating the Sonos 3.7 on Ubuntu + Wine desktop ?

From my side, I get :
- in the wine windows
"The wizard was interrupted before Sonos ..."

and

- on shell
"fixme:ole:DllRegisterServer stub

fixme:storage:create_storagefile Storage share mode not implemented.

fixme:storage:create_storagefile Storage share mode not implemented.

wine: Install Mono 2.8 or greater for Windows to run .NET 4.0 applications.

err:msi:ITERATE_Actions Execution halted, action L"InstallFinalize" returned 1627

err:msi:ITERATE_Actions Execution halted, action L"ExecuteAction" returned 1627
"

Could you please help me ?

Rochefoucault

This topic has been closed for further comments. You can use the search bar to find a similar topic, or create a new one by clicking Create Topic at the top of the page.

72 replies

Badge +1
Ian
Thanks for your post detailing how to make a 3.6 controller work with 3.7 - I've done that for my PCs. Essentially the same appproach works on the Mac with some changes for the Mac architecture.
The starting point is to use Finder to "Show Package Contents" of the Sonos App. In the Contents folder edit the Info.plist bundle version to match the new version, eg 17.5.51200 and save. Then open the MacOS folder and open the Sonos file using TextEdit - this will edit text strings in an executable. Now search for the old version string 16. and make the changes to replace the string with the new version - there are two instances. Save and close and all should be fine.
This post comes with the usual warnings about modifying at the operating system level etc - don't do it unless you know what you're doing!
If you need to find a Mac 3.6 installation image Google is your friend.
Andy
Userlevel 2
Dear all,

Thanks for your help and the explanations to the way of the running Sonos system with Ubuntu.

Rochefoucault

PS : I started the topic so I will close it this evening.
Userlevel 2
Badge
Hi,

Any idea of how to install Sonos Controller on a recently installed Linux (which does not have the controller 3.6 yet) ?
Any idea of how to install Sonos Controller on a recently installed Linux (which does not have the controller 3.6 yet) ?

Am sure whether it helps, but Ian posted a link to the old controller download back at post #17 in this thread.
many thanks ianmcd!

and just to save anyone else 5 seconds of googling: to uninstall the broken desktop controller open an terminal and type:
code:
wine uninstaller
Userlevel 2
Has anyone encountered problems with ubuntu 12.04?
Now my Wine is updated to version 1.4 and I have a controller 3.6 patched.

thanks
Userlevel 2
Has anyone encountered problems with ubuntu 12.04?
I have not gotten Sonos Desktop Controller to work with my ubuntu installation 12.04.
Userlevel 2
I have not gotten Sonos Desktop Controller to work with my ubuntu installation 12.04.

Do you mean the pre-3.7 desktop controller? That one can be made to work, but the newer one can't.
Userlevel 2
For anyone more comfortable with a script than the idea of manually editing a DLL, I offer the following Perl hack without warranty.


ianmacd, I commend you on your script and your work-around. Thank you for sharing this, it has helped me out no end!

adonald
Badge
ianmacd your post about getting v3.6 to work with upgraded firmware was great and allowed me to get the application to run under Wine (Fedora 14).

However, I can't make the initial connection to the system as part of the setup process. Has anyone else suffered this problem specifically running under Wine one Linux system? I'm reluctant to mess with much as all the other controllers (laptop, macbook, iphone, WP7 and ipad) work fine. All those are wireless and the Linux box is wired to my network so my initial though was that it was something to do with this but unsure what it can be.

I've tried the usual switch off and reboot everything and there are no IP conflicts as the Sonos devices are assigned static addresses far off the DHCP pool list. Does anyone know if I ought to open ports on the router as I haven't done so so far but I can't imagine why I would have to do this.

Thanks

Stu
Userlevel 2
ianmacd your post about getting v3.6 to work with upgraded firmware was great and allowed me to get the application to run under Wine (Fedora 14).

However, I can't make the initial connection to the system as part of the setup process.


I suspect you have some iptables firewall rules configured and that they are blocking the necesary traffic. What does the following command say?

code:
$ iptables -L


If that returns some rules, flush them and try again with Sonos.

I'm travelling at the moment and probably won't see your reply until 3rd June at the earliest.
Badge
You are probably right. The Linux box is running Amahi Server software which does use iptables for a lot of stuff. I am going to avoid messing with that aspect of things as I don't want to break the whole system. I'm not knowledgeable enough to do this correctly

Thanks anyway
Badge
OK so I have stopped the iptables from operating and still no joy on getting the Sonos controller to see the components. There are some notes on the website for port opening but they aren't working either
Userlevel 2
OK so I have stopped the iptables from operating and still no joy on getting the Sonos controller to see the components. There are some notes on the website for port opening but they aren't working either

You shouldn't need to forward any ports to get the DCR working on Linux.

Is your computer on the same subnet as the Sonos gear? That's essential.

And make sure you haven't just stopped iptables from being run in the future, but have also flushed any rules already in effect from the last time it was started.
Badge
That's what I thought regarding the port forwarding.

My linux box is also my DHCP and DNS server and it issues static IP addresses to all the Sonos components so I am assuming they are on the same subnet. I will have a dig about to see what I can find
Userlevel 4
Badge +3
I'm currently using Windows 7 but considering switching back to Linux because of some problems with Windows... but obviously I don't want problems with Sonos after the switch...

So, I'm using the 3.8 controller on Windows, what are the prospects of Wine being able to run that in the next 12 months?

If that fails, I might have to buy a CR200 for the room where my computer is (I want a dedicated, readily available controller, not one buried away on a smartphone), although paying around £300 not to run Windows is a bit annoying.

However, do Sonos intend to support the CR series going forward? My CR100 doesn't have much life in it, the CR200 is nice (after they replaced it following touch screen problems), but will they release a CR300 with slightly thinner body/bigger screen and/or will they support the CR200 with software updates for many years to come?

So many questions, but the changes brought about with the desktop controller make me nervous about Sonos making further changes that cause problems.

The new controller looks nice in my opinion, but doesn't really offer anything new, it just takes up more space.
The easiest solution would be to use an andriod/iOS device as the additional controller......
Userlevel 2
The easiest solution would be to use an andriod/iOS device as the additional controller......

As a Linux user, I must concur. The old-style DCR is crumbling with each new release of the firmware.

The DLL hack I wrote about still allows basic functionality, but the passing of music service credentials changed in 3.8, for example, so I can no longer control Spotify with the pre-3.7 DCR.

The ACR is the most usable controller I have these days.
Userlevel 2
My pleasure, but just to be clear, your firmware will stay at whichever version it's at now. Only the desktop controller will go back to 3.6.

The following assumes you're a Linux user, but the same trick would work on Windows for any user with an incentive to go back.

First of all, remove the 3.7 DCR from your system. Go through the proper uninstall procedure under WINE.

Next, reinstall 3.6. If you don't have the installation .exe still lying around, you can currently still obtain it from Sonos, but I strongly advise you to save a copy of this somewhere safe, as Sonos will probably remove it from their server at some point as obsolete.

Install the controller under WINE and associate it with your Sonos system. Then, exit the program.

Step 3 is to go to the following address in a Web browser:

code:
http://x.x.x.x:1400/status/VERSION


Replace x.x.x.x with the IP address of one of your zone players.

You'll see something like this:

code:
contents of /VERSION
xx.x-xxxxx


Whichever version number you see is unimportant. Just note it down. It's actually just the build number available under About My Sonos System on the controllers, but it appears here in punctuated form and we'll need that string for the next step.


Edit: If your version happens to have a letter following the final five digits, drop the letter. Thanks to MDBill.


Finally, pull up pcdcr.dll in a binary editor. Unless you're running an odd WINE configuration, it will have landed here on a 32 bit machine:

code:
~/.wine/drive_c/Program Files (x86)/Sonos/pcdcr.dll

or here on a 64 bit one:

code:
~/.wine/drive_c/Program Files (x86)/Sonos/pcdcr.dll

I use vim with the -b flag as my binary editor. Whichever tool you use doesn't matter, so long as it treats the file as a binary. All hell will break loose when you save this file if your editor treats the contents as text, so do make sure you are operating in binary mode.

Locate the string 16.7-48310 in this file and replace it with the version number returned in step 3 above. The two strings should be identical in length. Then, save the file. Did I mention that you must ensure you do this in binary mode? Good.

That's it!

Fire up the old desktop controller and it will now be fooled into thinking that it's up to date with the rest of the system. You won't be prompted to upgrade it, so neither will it baulk and refuse service.

It's a hack, but it works.

You will need to repeat the binary edit part of this procedure every time Sonos update the firmware to a new major revision number. At that point, the desktop controller will see that it lags behind the minimum required version number and prompt you to upgrade it. What we are doing here is defeating that check by convincing the desktop controller that it has the same version number as the firmware running on the rest of the system.

Hopefully, the day will soon come that the 3.7 DCR runs on Linux. Until then, there's this.

Thanks to Henkelis for the idea.


Ian,
I just read your instruction on how to keep desktop controller 3.6 working with upgraded Sonos devices.
I wonder if you have, or know of, a way to keep old iPod sonos app working with upgraded Sonos devices. I upgraded to 3.8, but my old iPod does not support iOS 4.0 needed for it.
Userlevel 2
Ian,
I just read your instruction on how to keep desktop controller 3.6 working with upgraded Sonos devices.
I wonder if you have, or know of, a way to keep old iPod sonos app working with upgraded Sonos devices. I upgraded to 3.8, but my old iPod does not support iOS 4.0 needed for it.


I don't know of a way, but that doesn't mean there isn't one. I'm not familiar enough with the details of Apple products.

Any solution would involve the same approach, namely subverting the version check when the application starts up. If you can find a way to do that, it may be possible.
Userlevel 2
Sonos.app keeps several .plist files.
In Info.plist there are a couple of fields:
Bundle version
Bundle version string

I thought modifying this file would have the desired effect of tricking Sonos to believe it has an up-to-date version. However, sonos.app must be getting its bundle version from somewhere else.

Does anyone know where that information may be stored in the case of an iPod application?
Userlevel 2
Thankyou Ian.

I was very happy to be able to control our new Sonos system on our linux home computer systems. We were stuck with using our cell phones which whilst it works fine isn't as convenient.if you are already working on the computer.

We have used Linux at home now for over 14 years. It is definitely not a cost issue for us ... as most of the computers we have bought over the years have already had windows on them anyhow ... which we then go to extra cost to remove and replace!

We just prefer the freedom of the Linux environment. Thanks again.

Cheers

Garry and Jacqui
Userlevel 2
Badge +1
thanks Ian for the dll hex edit and deeplink to the old 3.6 version.

the android client for Sonos is actually really nice and I appreciate that Sonos made the entire system setup possible from it... however it will be nice to have the desktop client available in wine also.
like for many others, installing an entire windows vm or buying a mac for 1 app is a no-go :)

cheers
Userlevel 2
THank you very much everyone for the great support on running Sonos on Linux! I used the pearl scrip to modify the .dll file and still no luck...here is my setup -

I am running ubuntu 12.10 and have installed the version 3.6 of Sonos controller under Wine.

Used the pearl script to modify version number in dll and was successful:

code:
System is currently running version 19.4-60120.
Updating DLL version 16.7-48310 to 19.4-60120...


Now when I open sonos for setup I have the screen to connect the component to the DCR and it does not connect. I am on the same network as other computers/cellphones that can connect. The only thing that is different is now v.19 is out and I hope the 3.6 software is compatible.

Any help on how to get my system connected to the DCR would be appreciated!
Hi,

Any idea of how to install Sonos Controller on a recently installed Linux (which does not have the controller 3.6 yet) ?


I installed Win7 in VirtualBox and then in Win7 the S O N O S Controller! Works OK so far!