ZP100 not booting



Show first post
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.

197 replies

Badge
@jishi - Thanks. placing the file under htdocs resolved the problem of finding the update file.

I am still having problems though. I still see no feedback until running the last url script above, but this time, instead of text in the browser window, I receive a download of the run.sh file. opening it as a text file I see:

awk: cmd. line:1: Unexpected end of string
upgrade
version 28.1-83040
compatible with Sonos Zone Player submodels 0-16 revisions 0-4294967294 (any region)
compatible with hardware feature set 1d
My hardware feature set is 0
Upgrade supports all my features
/-\|/-\|/- several lines of giberrish-\|/-\|/-\|/-\|/-\|/-\|
Upgrade file is good
Using new partition format mode
Destination section 0 generation 11
Operating in redundant partition mode (not changing partition table)
Executing upgrade script...failed
Upgrade failed: (35)
failure reading upgrade script file
pull_upgrade failed

No error logs from the apache server; looks lile it served the file ok.
Still investigating.
Userlevel 4
Badge +14

@anapsix
I have the ZP100 connected to a local router configured for 169.254.x.x with internet access. My laptop is assigned 169.254.1.2. I am using XAMPP under WIN7 as a web server from my laptop. Since I'm not a linux guy, I don't understand you comment about the PHP server and running the command sudo php -S 0.0.0.00. I did however, place the fw.upd file in the C:\xampp\apache/ directory, in the C:\xammp directory and also in the root C:\

I can run "http://169.254.1.1:1400/diag/cgi-bin/bin/echo yes we can" and indeed see the response "yes we can".

As I run each of the URL scripts you provided above, I don't see any browser feedback except for the very last url. The response is:
awk: cmd. line:1: Unexpected end of string
wget: server returned error 404: HTTP/1.1 404 Not Found
Read failure 0
WGET exited with 1
Upgrade failed: (11) upgrade file download failed
pull_upgrade failed

When I look at the apache logs, it shows:
169.254.1.1 - - [27/Apr/2016:17:38:09 -0500] "GET /fw.upd HTTP/1.1" 404 1056 "-" "Wget"

Should I be seeing some sort of echo response from the first 5 url scripts?

Any idea what my error means? Is my web server just not finding the file or is it a format issue?


Sounds like your ZP100 reach your machine, but the file is in the wrong folder. I don't recall how xampp is set up, but I think you should have a folder called "htdocs" somewhere under c:\xampp somewhere, you should put the file in there. Some web servers also need a defined mime-type configured for specific suffixes (IIS for example) in order to serve the file but I don't think apache cares about that.
Badge
To all the contributors, thank you so much for all the trial and error and documenting your solutions. I have a ZP100 with the same symptoms as most others with 3.2-29243-diag firmware. I can access it via the the default IP 169.254.1.1:1400/status, etc. I have ordered a USB to UART card but in the meantime I finally finished reading the last few entries of this thread and found the url solution. Yeah, it sure seemed to me that there ought to be a way.... btw, I am not proficient in LINUX.

@anapsix
I have the ZP100 connected to a local router configured for 169.254.x.x with internet access. My laptop is assigned 169.254.1.2. I am using XAMPP under WIN7 as a web server from my laptop. Since I'm not a linux guy, I don't understand you comment about the PHP server and running the command sudo php -S 0.0.0.00. I did however, place the fw.upd file in the C:\xampp\apache/ directory, in the C:\xammp directory and also in the root C:\

I can run "http://169.254.1.1:1400/diag/cgi-bin/bin/echo yes we can" and indeed see the response "yes we can".

As I run each of the URL scripts you provided above, I don't see any browser feedback except for the very last url. The response is:
awk: cmd. line:1: Unexpected end of string
wget: server returned error 404: HTTP/1.1 404 Not Found
Read failure 0
WGET exited with 1
Upgrade failed: (11) upgrade file download failed
pull_upgrade failed

When I look at the apache logs, it shows:
169.254.1.1 - - [27/Apr/2016:17:38:09 -0500] "GET /fw.upd HTTP/1.1" 404 1056 "-" "Wget"

Should I be seeing some sort of echo response from the first 5 url scripts?

Any idea what my error means? Is my web server just not finding the file or is it a format issue?
Thanks everyone for your posts. Using what is here, I've been able to recover two ZP100s that were loading the diagnostic firmware with a bus pirate.

I have a third that boots past the serial connection and gets an IP address from my router. The white light however stays blinking and it never gets to the point where I can add it to the rest of my sonos system.

When booting, even though it grabs an IP and responds to pings, it doesn't serve up the web pages with status, etc.

A factory reset gets it blinking orange, but there it stays.

Is it possible to have it revert back to the diagnostic firmware so I can reflash it? Any other suggestions?

Thanks


Hi everyone, I recently bought a second hand ZP100 and it's displaying the exact same issues as enton is describing. When I first got the unit home I added it to my existing system (without factory reset) and all seemed OK for a while. I then noticed that some of my other units were dropping out randomly and then the ZP100 disappeared so I disconnected it and tried to do a factory reset. This resulted in a continuous orange/white flashing light that never turns green. If I power on normally I just get a flashing white light that never turns green. With the unit plugged in via ethernet to my router I can see its IP address but can't access any of the status web pages etc. Any suggestions about where to start? Or is it a lost cause?!
Badge
Sorry for such a delay in responding..

1) Do i run PHP after i have put UART in bridge mode?
2) php i got was by setting up in the windows program, additional features. Where will i run the above commands that you have mentioned? Is it in the browser

I start PHP in server mode only to serve files (the firmware update file), so that the upgrade program that I run on the ZP100 would be able to get it from some place.
In my case, it get's it from PHP served directory.
You can use Apache, Nginx or any other web-server.. even IIS if you are on Windows.
You should run your web server after you find a way to control ZP. Either though UART terminal or like I did it via web-browser hack.
if you can test if you can do it my way by connecting to the ZP100 built-in switch, assigning your computer 169.254.1.2 IP and directing your browser to "http://169.254.1.1:1400/diag/cgi-bin/bin/echo yes we can".
If you'll see a page with "yes we can", you can use my method.
If you are able to get a terminal console with UART method, it's just as good..
Makes sense?
Userlevel 2
I have not had any success connecting my Z80 unit to the J1000 connection and was hoping someone could help.

I am getting no output from the board, but can connect to the board via the IP address and 1400 port and view the log. I have 2 units and have tried swapping the top board out, with the same results as noted below.

Using this USB to serial unit: http://www.amazon.com/gp/product/B011CDF3W8

VCC pin is connected to pin 1, TX to pin 2, RX to pin 3, GND to pin 4
Connection using "screen /dev/cu.usbserial-AI02SZYS" is successful, but no output occurs when the ZP80 is plugged in
I've also tried picocom using "picocom -b 9600 /dev/cu.usbserial-AI02SZYS"
I'm using a Mac, OS X 10.10.5 and it shows the device in the system report
I've tried reversed the pin-out, but the screen terminates when power is supplied to the ZP80

In the 2nd pic, you will see a set of green, red, black and white wires. Those are just being used to wedge the connector pins into the holes, since I wasn't getting a solid connection using the standard pins on the connection cable.
Userlevel 2
anapsix,

thank you so much for the detailed info.
I have couple other questions, hope you won't mind answering

1) Do i run PHP after i have put UART in bridge mode?
2) php i got was by setting up in the windows program, additional features. Where will i run the above commands that you have mentioned? Is it in the browser? Sorry for asking these questions as these are totally new to me and hope you won't mind helping.

Thanks again.
Badge

how to upload the downloaded firmware to the zone player

You should be able to pull it from the ZP itself via the terminal, since you have BusPirate connected.
If you are able to get the console / terminal, do the following:
0. Start a webserver on your computer, so that you can "serve" the downloaded firmware file via HTTP. I've done it with PHP, and so can you if you have PHP installed: php -S 0.0.0.0:8080
1. stop anacapa process:
code:
$ touch /var/run/stopanacapa
# this prevents it from starting
code:
$ ps | grep anac | awk '{print $1}' | xargs kill -9
# this kill all ancapa processes
2. Run the upgrade tool:
code:
$ upgrade -fH http://169.254.1.2:8080/fw.upd
# make sure to use correct IP/PORT and file name instead of mine :)
3. Allow anacapa to start (probably unnecessary):
code:
$ rm /var/run/stopanacap
Userlevel 2
Guys,

I was able to download my .upd file and have connected the zone player 100 to buspirate. I got that into UART mode also. I am confused to what the next step should be and how to upload the downloaded firmware to the zone player. Can some one please help me out.

Thank you.
Badge
I've read through 99% of this thread and it really helped to get me onto the right track.
I was able to avoid dealing with UART / Serial connection and create a script right on my ZP100 via web browser.
I did assign myself a static IP of 169.254.1.2 and plug directly to one of ZP100 built-in ethernet ports.
I followed multiple instructions here to get the appropriate update file and saving it as "fw.upd", by substituting my ZP100 serial, id and householdid, using the following as a base:
http://update-firmware.sonos.com/firmware/Gold/28.1-83251-v5.2-pcyakr-RC4/28.1-83040-1-1.upd?cmaj=27&cmin=2&cbld=80271&subm=3&rev=2®=1&serial=XXXXX&sonosid=XXXXX&householdid=XXXXXX
Easiest way to start a web server to serve the file was to let PHP serve content from current directory with following: sudo php -S 0.0.0.0:80
Here are the URLs I've hit to create and run my script :)


http://169.254.1.1:1400/diag/cgi-bin/bin/echo touch /var/run/stopanacapa > /tmp/run.sh
http://169.254.1.1:1400/diag/cgi-bin/bin/echo ps "|" grep anac "|" awk "{print %5C$1}" "|" xargs kill -9 >> /tmp/run.sh
http://169.254.1.1:1400/diag/cgi-bin/bin/echo upgrade -fH http://169.254.1.2/fw.upd ">>" /jffs/log.txt >> /tmp/run.sh
http://169.254.1.1:1400/diag/cgi-bin/bin/echo rm /var/run/stopanacapa >> /tmp/run.sh
http://169.254.1.1:1400/diag/cgi-bin/bin/chmod 755 /tmp/run.sh
http://169.254.1.1:1400/diag/cgi-bin/tmp/run.sh


I assume that I got lucky and my ZP100 came with diagnostics firmware.. I could run any command with "http://169.254.1.1:1400/diag/cgi-bin/" by adding the full path of the desired binary to it and passing arguments as you normally would in linux CLI. Few characters had to be double quoted or used as HEX values..

After running it, my ZP100 lid up, I've hit the magic combo to connect to the Controller and it was added to the existing setup within seconds!

Thanks to everyone contributing, it really helped!
Hi,
Uart port on the top logic board near wireless card on the front side, you have 4 holes.
1:3.3v
2:RX
3:TX
4:GND
Userlevel 2
Hi,

can somebody please post a picture of the location where the UART port is on the logic board.

Thanks in advance.
Userlevel 2
Badge
So has anyone had any luck reviving a no audio out zp100? I've had a couple of these I've tried with no luck. They both originally had the amps blown (literally burnt the VCC legs off the IC's). I've replaced the amps and the audio controller IC but no luck. They appear to play but get no sound. Tried to use the line in also but that didn't work either. If no one has any other ideas it appears the TI DSP IC is my next try.

@tonesam Check 0 ohm resistor R2133 next to one of the large capacitors. A few of the ones i have had exactly as yours have i have found on them all R2133 is open circuit. It appears that the amp chip is operating in a bridged mode, linking some of the amp outputs (config pin 24 of the amp chip). when the zero ohm resistor blows the amps switch back to 2 separate amps. the linked drivers pins then cause a shorted output draw lots of current and burn out the legs on the PSU. I have not tried a fix yet so not sure what is causing the zero resistor to blow.
Badge +1
Guys I got everything working but I need help with a basic networking question:

I have the ZP directly connected to my computer. When I change my local ip to be the pinged address of 169.254.2.2 what subnet do I specify? Isn't 169.254.1.1 a different subnet?


Also, for others using this great thread. The wire configuration used when connecting the Bus Pirate varies with the type of probes you use.

The Sparkfun kit uses the pin out described by sdekock in post #56

The Seeed Studio and Adafruit probe kits use:
Pin 1: orange
Pin 2: grey
Pin 3: black
Pin 4: brown

More info can be found


A subnet mask of 255.255.0.0 would indicate both networks on the same subnet
Userlevel 2
Guys I got everything working but I need help with a basic networking question:

I have the ZP directly connected to my computer. When I change my local ip to be the pinged address of 169.254.2.2 what subnet do I specify? Isn't 169.254.1.1 a different subnet?


Also, for others using this great thread. The wire configuration used when connecting the Bus Pirate varies with the type of probes you use.

The Sparkfun kit uses the pin out described by sdekock in post #56

The Seeed Studio and Adafruit probe kits use:
Pin 1: orange
Pin 2: grey
Pin 3: black
Pin 4: brown

More info can be found here
Userlevel 2
You can't load an image with a bus pirate again because without the diagnostic firmware you can't get to the console. Some have copied and loaded images by JTAG but I haven't got that adventurous yet.

I had a unit that acted similar to your's except I couldn't find what IP address it was coming up with to try and ping it. It also didn't have the diagnostic firmware on it when I received it and I couldn't add it to my sonos network. I was able to replace the ethernet IC (Rtl8139cl+) and get it functioning again.
Userlevel 2
Thanks everyone for your posts. Using what is here, I've been able to recover two ZP100s that were loading the diagnostic firmware with a bus pirate.

I have a third that boots past the serial connection and gets an IP address from my router. The white light however stays blinking and it never gets to the point where I can add it to the rest of my sonos system.

When booting, even though it grabs an IP and responds to pings, it doesn't serve up the web pages with status, etc.

A factory reset gets it blinking orange, but there it stays.

Is it possible to have it revert back to the diagnostic firmware so I can reflash it? Any other suggestions?

Thanks
Userlevel 2
So has anyone had any luck reviving a no audio out zp100? I've had a couple of these I've tried with no luck. They both originally had the amps blown (literally burnt the VCC legs off the IC's). I've replaced the amps and the audio controller IC but no luck. They appear to play but get no sound. Tried to use the line in also but that didn't work either. If no one has any other ideas it appears the TI DSP IC is my next try.
Userlevel 2
Thanks again for looking into this. Here's the three files. I couldn't even find :1400/SLASH/ ?

contents of /jffs/upgrade.log
Upgrade url is-c --sonosid xxx --householdid HHID_xxx http://update-firmware.sonos.com/firmware/Gold/28.1-86173-v5.3.2-tshhkh-SP2/^28.1-86173
URL is http://update-firmware.sonos.com/firmware/Gold/28.1-86173-v5.3.2-tshhkh-SP2/28.1-86173-1-1.upd?cmaj=14&cmin=5&cbld=40190&subm=16&rev=4®=2&serial=xxx&sonosid=xxx&householdid=HHID_xxx
client-server mode: listening on port 4444
waiting for connection from HH...
accepted connection from 10.5.2.127
readCommand() - read HELLO?version=28.1-86140
readCommand() - read DOWNLOAD
starting op DOWNLOAD
upgrade version 28.1-86173
compatible with Sonos Zone Player submodels 0-16 revisions 0-4294967294 (any region)
compatible with hardware feature set 1d
My hardware feature set is c
Upgrade supports all my features
Upgrade file is good
readCommand() - read FLASHWRITE
starting op FLASHWRITE
Using new partition format mode
Destination section 1 generation 6
Operating in redundant partition mode (not changing partition table)
Executing upgrade script...Checking to see if (hh.)anacapad is running...Stopping ancillary processes...
Killing udhcpc
Killing smbscand
Killing inetd
kill: 100: Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or
kill -l [exitstatus]
Killing netstartd
ok
Merged partition table flags 00000001:
0 1:0:16
1 16:16:48
2 17:64:256
3 64:320:1389
4 16:1709:48
5 17:1757:256
6 0:0:0
Writing kernel to partition 4
Writing / to partition 5
sections M16 len check 0
Executing upgrade script to do any final work...Doing post-install steps...

contents of /jffs/upgrade_prev.log
Upgrade url is-c --sonosid xxx --householdid HHID_xxx http://update.sonos.com/firmware/Gold/v3.4-Crosby/^14.5-40190
URL is http://update.sonos.com/firmware/Gold/v3.4-Crosby/14.5-40190-1-1.upd?cmaj=14&cmin=4&cbld=33290&subm=16&rev=4®=2&serial=xxx&sonosid=xxx&householdid=HHID_xxx
client-server mode: listening on port 4444
waiting for connection from HH...
accepted connection from 192.168.1.91
readCommand() - read HELLO?version=14.5-40190
readCommand() - read DOWNLOAD
starting op DOWNLOAD
upgrade version 14.5-40190
compatible with Sonos Zone Player submodels 0-4294967294 revisions 0-4294967294 (any region)
compatible with hardware feature set 1d
My hardware feature set is c
Upgrade supports all my features
Upgrade file is good
readCommand() - read FLASHWRITE
starting op FLASHWRITE
Using new partition format mode
Destination section 0 generation 5
Operating in redundant partition mode (not changing partition table)
Executing upgrade script...Checking to see if (hh.)anacapad is running...Stopping ancillary processes...
kill: 96: Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or
kill -l [exitstatus]
kill: 96: Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or
kill -l [exitstatus]
ok
Merged partition table flags 00000001:
0 1:0:16
1 16:16:48
2 17:64:256
3 64:320:1389
4 16:1709:48
5 17:1757:256
6 0:0:0
Writing kernel to partition 1
Writing / to partition 2
sections M16 len check 0
Executing upgrade script to do any final work...Doing post-install steps...

Port Link Speed
0 1 100FD
1 0 0

I tried a factory reset and it changed nothing. One other interesting point to note:
Once I get the Sonos added to the system, if I unplug the Ethernet cable from the Sonos, the lights turn off, but about 1 second later they turn back on without any cable connected. At this point if I reconnect my Ethernet cable to the Sonos, I can't get to it at all without a full restart.

Thanks for your help
Userlevel 2
Badge
Weird. You mention that you updated the firmware, what is the current version as displayed in ZP-IP-ADDR:1400/status/jffs/upgrade.log and what was the previous version from :1400/status/jffs/upgrade_prev.log ? Also is there anything at :1400/SLASH/ ? Also also, can you post the contents of :1400/status/enetports ?

With the way that firmware updates work I'd be suprised if this sort of diagnostic software setting survived. Can you try factory resetting the unit to see if the behaviour persists?
Userlevel 2
@poshul thanks for the advice. If there's something wrong with the controller it's not obvious, there's nothing to indicate a surge (smell or visual) and nothing looks modified. It really seems like a software thing to me, like someone has programmed it to act this way.
Userlevel 2
Badge
@diw4321 It sounds like there is something wrong with the ethernet controller. If I had to take a guess I'd suspect that the two ethernet ports have become bridged internally somehow, causing a STP cascade when it connects to the Sonosnet, and tries to determine the correct topology.

My wild guess would be that the unit got hit by a surge through one of the ethernet ports. If you've already got the thing open, I'd check to see if there is any visible evidence of electrical damage (charred component, melty smell, etc). If correct, you might be able to restore functionality to one of the ports by figuring out where they are shorted, and repairing the connection.

@ecsherwo: The "program" option in the bootloader is misleading at best, what it does is wipe the flash and then try to load an image from RAM, as far as I know, no-one outside of Sonos knows how to load an image to RAM, so the most you are gonna do is wipe the chip again. If you are really adventurous and know some JTAG you can hook up a highspeed JTAG board to the unit and dump/load an image dumped off a working unit.
Userlevel 2
Hi all.

I've been following this thread for awhile in hopes of getting this one ZP90 I have back to life. To make the long story short, I've managed to get the UART interface connected and visibly witnessed the Sonos going through the whole bootloader process until it hands off to the OS. I also took some ideas from this thread and through a direct Ethernet connection to my PC using the 169.254.xxx.xxx IP address, was able to connect to the diagnostic pages of the Sonos. For fun, at that point I enabled Wifi on my PC and to my amazement the ZP90 grabbed an IP address in my local network range and I could add the ZP90 to my existing Sonos system and update the firmware.

That's where the good news ends. For whatever reason, port one on the back of this Sonos is the only one I can connect to and it's acting very odd at best. With nothing connected it acts as if there is something there and happily blinks away. Port two seems to emulate port one (although there's no connection lights until something is actually connected to it), which doesn't surprise me, although I can't access any of the HTTP diagnostic pages through this port. If I connect the Sonos directly to my network, everything freaks out and looking at Wireshark, there seems to be a ton of traffic and a whole lot of STP errors. At the same time, my Sonos system basically crumbles and my WiFi goes to hell. Sounds to me like I have a unique firmware looking for something that doesn't exist, because as soon as I connect it back up to my PC directly using the 169.254.xxx.xxx IP and use the WiFi, the unit is completely happy. Unfortunately none of the diagnostic screens offer any indication of an out of the ordinary configuration on the eth0 ports, so I'm at a loss.

Anybody have any ideas?

Thanks
Userlevel 2
Guys thanks for all your help! Through the aide of this thread I was able to get 7.5 out of 10 of the Sonos zp100 I purchased on eBay working. I say 7.5 because I was able to get the logic board fixed on one that still have a problem with the amp 😉.

I used a Raspberry Pi to host the web server and perform all the UART commands. If someone would put together an image it could save people hours of messing with that part of the repair.

Thanks again!
Userlevel 2
Looks like I have an empty NAND flash... anybody know the password for programming?