Programmer reveals cause of Zune blunder

By on January 3, 2009 at 11:03 AM.

Programmer reveals cause of Zune blunder

Ok, someone please tell Nelson Muntz he’s on in five… Now that Z2K has come and gone, we have to sit back and wonder how something so widespread could have such a simple fix – wait till it dies, then turn it back on. For real? The good thing, we suppose, was that if there were people who couldn’t manage their way to Google to search for an answer, their Zunes would eventually just start working again. The bad thing of course, was that the cause of the problem was probably something bush league. Indeed – here is the explanation from itsnotabigtruck of Zune Boards:

The Zune’s real-time clock stores the time in terms of days and seconds since January 1st, 1980. When the Zune’s clock is accessed, the driver turns the number of days into years/months/days and the number of seconds into hours/minutes/seconds. Likewise, when the clock is set, the driver does the opposite.

The Zune frontend first accesses the clock toward the end of the boot sequence. Doing this triggers the code that reads the clock and converts it to a date and time. Below is the part of this code that determines the year component of the date:

Under normal circumstances, this works just fine. The function keeps subtracting either 365 or 366 until it gets down to less than a year’s worth of days, which it then turns into the month and day of month. Thing is, in the case of the last day of a leap year, it keeps going until it hits 366. Thanks to the if (days > 366), it stops subtracting anything if the loop happens to be on a leap year. But 366 is too large to break out of the main loop, meaning that the Zune keeps looping forever and doesn’t do anything else.

Here it comes… Haaa haaa! The affected source code causing this bug can also be found in a few other portables such as Toshiba’s S series. If you happen to be one of the few people out there with one of those puppies and you haven’t resolved the issue by now, the fix is the same so don’t fret. We have to imagine Microsoft will have a fix in place before 2012, the next leap year, but this was a massive bungle that Redmond certainly can’t wait to be forgotten. Sure most people will forget, but we wonder if a bad enough taste was left in the mouths of Zune owners to make them think about jumping ship. Some will, no doubt, but we don’t imagine any hardcore anti-iPod people will have their allegiance swayed.

Read

19 Comments

Microsoft announces “fix” to Zune 30GB problems

By on January 1, 2009 at 9:18 AM.

Microsoft announces “fix” to Zune 30GB problems

Are you still wrestling to bring your Zune 30GB back to life after it crapped out the other night? If so fear not, for Microsoft has published the official “solution” which will supposedly fix all of your troubles. It’s not a quick fix (though it is very easy), but at least if all goes well you’ll be able to have some tunes to listen to to occupy your mind from your blistering hang-over.

My Zune 30 is frozen. What should I do?

Follow these steps:

  1. Disconnect your Zune from USB and AC power sources.
  2. Because the player is frozen, its battery will drain—this is good. Wait until the battery is empty and the screen goes black. If the battery was fully charged, this might take a couple of hours.
  3. Wait until after noon GMT on January 1, 2009 (that’s 7 a.m. Eastern or 4 a.m. Pacific time).
  4. Connect your Zune to either a USB port on the back or your computer or to AC power using the Zune AC Adapter and let it charge.

Once the battery has sufficient power, the player should start normally. No other action is required—you can go back to using your Zune!

Well, there you have it. Microsoft’s solution to the Z2K9 issue is to let your Zune’s battery die and not plug it in until the big, bad leap year is finished with. Microsoft, do we even need to say how disappointed we are? You try to fight the MP3 juggernaut that is the iPod but your mighty warrior is brought down by a leap year? For shame.

Thanks, jemmark!

Read

51 Comments