Scott Hanselman

How to update the firmware on your Zune, without Microsoft, dammit.

January 11, '19 Comments [11] Posted in Tools
Sponsored By

A glorious little ZuneAs I said on social media today, it's 2019 and I'm updating the Firmware on a Zune, fight me. ;) There's even an article on Vice about the Zune diehards. The Zune is a deeply under-respected piece of history and its UI marked the start of Microsoft's fluent design.

Seriously, though, I got this Zune and it's going to be used by my 11 year old because I don't want him to have a phone yet. He's got a little cheap no-name brand MP3 player and he's filled it up and basically outgrown it. I could get him an iPod Touch or something but he digs retro things (GBC, GBA, etc) so my buddy gave me a Zune in the box. Hasn't been touched...but it has a super old non-metro UI firmware.

Can a Zune be updated in 2019? Surely it can. Isn't Zune dead? I hooked up a 3D0 to my 4k flatscreen last week, so it's dead when I say it's dead.

IMPORTANT UPDATE: After I spent time doing this out I found out on Twitter that there's a small but active Zune community on Reddit! Props for them to doing this in several ways as well. The simplest way to update today is to point resources.zune.net to zuneupdate.com's IP address in your hosts file. The way I did it does use the files directly from Microsoft and gives you full control, but it's overly complex for regular folks for as long as the zuneupdate.com server exists as a mirror. Use the method that works easier for you and that you trust and understand!

  • First, GET ZUNE: the Zune Software version 4.8 is up at the Microsoft Download Center and it installs just fun on Windows 10. I've also made a copy in my Dropbox if this ever disappears. You should too!
  • Second, GET FIRMWARE: the Zune Firmware is still on the Microsoft sites as well. This is an x86 MSI so don't bother trying to install it, we're going to open it up like an archive instead. Save this file forever.
    • There's a half dozen ways to crack open an MSI. Since not everyone who will read this blog is a programmer, the easiest ways is
    • Download lessmsi and use it to to the open and extract the firmware MSI. It's just an MSI specific extractor but it's nicer than 7zip because it extracts the files with the correct names. If you use Chocolatey, it's just "choco install lessmsi" then run "lessmsi-gui." LessMSI will put the files in a deep folder structure. You'll want to move them and have all your files right at the top of c:\users\YOURNAME\downloads\zunestuff. We will make some other small changes a little later on here.
      LessMSI
    • If you really want to, you could install 7zip and extract the contents of the Zune Firmware MSI into a new folder but I don't recommend it as you'll need to rename the files and give them the correct extensions.
    • NERDS: you can also use msiexec from the command line, but I'm trying to keep this super simple.
  • Third, FAKE THE ZUNE UPDATE SERVER: Since the Zune servers are gone, you need to pretend to be the old Zune Server. The Zune Software will "phone home" to Microsoft at resources.zune.net (which is gone) to look for firmware. Since the Zune software was made in a simpler time (a decade ago) it doesn't use SSL or do any checking for the cert to confirm the identity of the Zune server. This would be sad in 2019, but it's super useful to us when bringing this old hardware back to life. Again, there's as half dozen ways to do this. Feel feel to do whatever makes you happy as an HTTP GET is an HTTP GET, isn't it?
    • NERDS: If you use Fiddler or any HTTP sniffer you can launch the Zune software and see it phone home for resources.zune.net/firmware/v4_5/zuneprod.xml and get a 404. It if had found this, it'd look at your Zune model and then figure out which cab (cabinet) archive to get the firmware from. We can easily spoof this HTTP GET.
    • NERDS^2: Why didn't I use the Fiddler Autoresponder to record and replay the HTTP GETS? I tried. However, there's a number of different files that the Zune software could request and I only have the one Zune and I couldn't figure out how to model it in Fiddler. If I could do this, we could just install Fidder and avoid editing the hosts file AND using a tiny web server.
    • From an admin command prompt, run notepad \windows\system32\drivers\etc\hosts and add this line:
      127.0.0.1 resources.zune.net
    • This says "if you ever want stuff from resources.zune.net, I'll handle it myself." Who is "myself?" It's our computer! It'll be a little web server you (or I) will run on our own, on localhost AKA 127.0.0.1.
    • Now download dot.net core, it's small and fast to install programming environment. Don't worry, we aren't coding, we are just using the tools it includes. It won't mess up your machine or install anything at startup.
    • Grab any 2.x .NET SDK from https://dot.net and install it from an MSI. Then go to a command prompt and run these commands. first we'll run dotnet once to warm it up, then get the server and run it from our zunestuff folder. We'll install a tiny static webserver called dotnet serve. See below:
      dotnet
      dotnet tool install --global dotnet-serve
      cd c:\users\YOURNAME\downloads\zunestuff
      dotnet serve -p 80
    • If you get any errors that dotnet serve can't be found, just close the command prompt and open it again to update your PATH. If you get errors that port 80 is open, be sure to stop IIS or Skype Desktop or anything that might be listening on port 80.
    • Now, remember where I said you'd extract all those cabs and files out of the Firmware MSI? BUT when we load the Zune software and watch network traffic, we see it's asking for resources.zune.net/firmware/v4_5/zuneprod.xml. We need to answer (since Zune is gone, it's on us now)
    • You'll want to make folders like this: C:\users\YOURNAME\downloads\zunestuff\firmware\v4_5 copy/rename copy FirmwareUpdate.xml to zuneprod.xml and have it live in that directory. It'll look like this:
      A file heirarchy under zunestuff
    • The zuneprod.xml file has relative URls inside like this, one for each model of the Zune that maps from USB hardware id to cab file. Open zuneprod.xml in a text editor and add http://resources.zune.net/ before each of the firmware file cabinets. For example if you're using notepad, your find and replace will look like this.
      Replace URL=" with URL="http://resources.zune.net/
    • <FirmwareUpdate DeviceClass="1"
      FamilyID="3"
      HardwareID="USB\Vid_045e&amp;Pid_0710&amp;Rev_0300"
      Manufacturer="Microsoft"
      Name="Zune"
      Version="03.30.00039.00-01620"
      URL="DracoBaseline.cab">

    • UPDATE: As mentioned above, I did all this work (about an hour of traffic sniffing) and spoofed the server locally then found out that someone made http://zuneupdate.com as an online static spoof! It also doesn't use HTTPS, and if you'd like, you can skip the local spoof and point your your \windows\system32\drivers\etc\hosts with an entry pointing resources.zune.net to its IP address - which at the time of this writing was 66.115.133.19. Your hosts file would look like this, in that case. If this useful resource ever goes away, use the localhost hack above.
      66.115.133.19 resources.zune.net
    • Now run the Zune software, connect your Zune. Notice here that I know it's working because I launch the Zune app and go to Settings | Device then Update and I can see dotnet serve in my other window serving the zuneprod.xml in response.

Required Update

It's worth pointing out that the original Zune server was somewhat smart and would only return firmware if we NEEDED a firmware update. Since we are faking it, we always return the same response. You may be prompted to install new firmware if you manually ask for an update. But you only need to get on the latest (3.30 for my brown Zune 30) and then you're good...forever.

image

Enjoy!

Your iPod SucksZune is the way

Guardians 2 Zune


Sponsor: Preview the latest JetBrains Rider with its Assembly Explorer, Git Submodules, SQL language injections, integrated performance profiler and more advanced Unity support.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb
Saturday, 12 January 2019 09:17:22 UTC
Oh, man, Zune. Brings up memories. :-)
Saturday, 12 January 2019 09:45:49 UTC
I definitely need to dig in my old stuff and find all of my Zunes ) Incredible )
Dmytro Rudenko
Saturday, 12 January 2019 11:46:27 UTC
I remember putting Rockbox instead of official iPod software. I hated iTunes from Apple. Don't know whether there is Rockbox for Zune but if yes then I would recommend using it. Really great alternative firmware with a lot other features. I use nowadays only smartphone but I remember great times having Clickwheel on my iPod Mini :)
Saturday, 12 January 2019 13:38:16 UTC
Duplicate word alert: Feel feel -> Feel free
Bernard Vander Beken
Saturday, 12 January 2019 15:44:21 UTC
Noice work! I will say I have an OG zune still kicking it too. I did a bake off blind test a few years back and compared a multitude of phones and mp3 players with some bose headphones. Everyone said the OG zune was #1 in sound quality. All Apple devices placed last in sound quality even when compared to the HTC HD7 and some Android phones.

Your son will have some good sound quality. 👍
Adam Schildmeyer
Saturday, 12 January 2019 17:30:58 UTC
How is installing chocolatey and running a couple of commands - also all on the commands line - easier than:

msiexec /a file.msi TARGETDIR=c:\extracted


The TARGETDIR property is case-sensitive.

Easy and no additional software. 😁
Heath Stewart
Saturday, 12 January 2019 17:52:32 UTC
Thanks! Good stuff. I still use my Zune. I bought it when the large hard drive version came out and it still works just fine.

What's crazy is that the Zune desktop software hasn't been updated (in a decade?) and it's still better than iTunes.
Saturday, 12 January 2019 21:59:16 UTC
Had to follow a similar procedure last winter, when the air is drier than during summer, and static electricity became a problem.

Static electricity sparks would cause my Zune to spontaneously reset after touching it and I'd feel (and see) a spark zapping it. Then one day I guess one of said sparks fried the firmware as it told me it needed to be reflashed.

I reinstalled the firmware (I wish zuneupdate.com had been around!), and it started working again.

Unfortunately now after 10+ years of heavy use, it's the Back button that's stopped working, making it rather impractical. Fortunately I had planned for that day, and had already purchased 2 spare Zune HDs from local eBay equivalents a few years ago...
dandy
Monday, 14 January 2019 03:18:20 UTC
Great job, though I was looking for a way to attach my old Lumia 1020 as a car navigator app and using the cool built in map.
One more thing, seems your captcha is not working well, the comment "Oh! a new social media!" is a bot and spam.
Amin
Tuesday, 15 January 2019 15:10:10 UTC
My kids both have Lumia 640s running 10 for the same reason - I don't want them to have phones. Yeah, I know they're phones, but they have no SIM and since they're Microsoft I can fully control them with Family Settings. Plus, when I bought them they weren't rare so they only cost like $30-$40!
Breaker119
Thursday, 17 January 2019 22:11:58 UTC
After the "Now download dot.net core" step, I'd like to see a...
"NERD^2: You can skip this step since you already have it"...
Name
E-mail
(will show your gravatar icon)
Home page
2+5

Comment (Some html is allowed: a@href@title, b, blockquote@cite, em, i, li, ol, pre, strike, strong, sub, super, u, ul) where the @ means "attribute." For example, you can use <a href="" title=""> or <blockquote cite="Scott">.  

Live Comment Preview

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.