December 31, 2008

Perhaps They Should Have Tested More - Microsoft Zune

A Zune Swoon?


Hey, anyone know how to get this thing working again?

Apparently, starting around midnight last night, all first-generation 30GB Model Zunes - every one - restarted themselves and locked up at the boot screen.

Just take a look at some of the Headlines:
  • 30GB Zunes Failing En Masse
  • 30GB Zune apocalypse arrives as devices enter digital coma
  • Zune 30s all freezing up at once. Ack! Aliens!
  • Zune plagued by massive freeze
  • Did the Y2K failure come to Zune 30 devices 9 years later?
  • Microsoft Zunes spontaneously dying all over the place
  • Microsoft Zunes Hit By Rash of Lock-Up Bugs
  • Microsoft Zune 30GB users reporting freezing problems
  • Zunesday
  • 30GB Zunes Everywhere Are Frozen. Z2K9?
  • Worldwide Zune suicide?
  • 30GB Zunes Fail Simultaneously Everywhere
  • 30GB Zunes Killing Themselves In Droves
  • Microsoft's Latest Global Problem
  • 30GB Zunes hibernating for 2009?
  • Z-Day Hits Zune 30s
  • Some Zunes Expire Along with 2008
  • Z2K for Zune music players?
Think some Boundary Value Analysis might be in order?

At this time, Microsoft's Zune Support page says only:
zune service status

Status:

Customers with 30gb Zune devices may experience issues when booting their Zune hardware.  We’re aware of the problem and are working to correct it.  Sorry for the inconvenience, and thanks for your patience!
When I checked at 2:00 PM Eastern time, Microsoft's Zune Support page now says:
zune service status

Status:

Customers with 30gb Zune devices may experience issues when booting their Zune hardware.  We’re aware of the problem and are working to correct it.  The Zune Social might be slow or inaccessible.  Sorry for the inconvenience, and thanks for your patience!
So apparently it was a leap year problem.
Today 5:43 PM
   
Official response for Zune 30 Freezing Issue (Zune 30gb stuck at reboot screen)

Early this morning we were alerted by our customers that there was a widespread issue affecting our 2006 model Zune 30GB devices (a large number of which are still actively being used).  The technical team jumped on the problem immediately and isolated the issue: a bug in the internal clock driver related to the way the device handles a leap year.  The issue should be resolved over the next 24 hours as the time change moves to January 1, 2009.   We expect the internal clock on the Zune 30GB devices will automatically reset tomorrow (noon, GMT). By tomorrow you should allow the battery to fully run out of power before the unit can restart successfully then simply ensure that your device is recharged, then turn it back on.  If you’re a Zune Pass subscriber, you may need to sync your device with your PC to refresh the rights to the subscription content you have downloaded to your device. 

Customers can continue to stay informed via the support page on zune.net (zune.net/support).

We know this has been a big inconvenience to our customers and we are sorry for that, and want to thank them for their patience. 

Q:  Why is this issue isolated to the Zune 30 device?
It is a bug in a driver for a part that is only used in the Zune 30 device.

Q:  What fixes or patches are you putting in place to resolve this situation? 
This situation should remedy itself over the next 24 hours as the time flips to January 1st.

Q:  What’s the timeline on a fix?
The issue Zune 30GB customers are experiencing today will self resolve as time changes to January 1.

Q:  Why did this occur at precisely 12:01 a.m. on December 31, 2008? 
There is a bug in the internal clock driver causing the 30GB device to improperly handle the last day of a leap year.

Q:  What is Zune doing to fix this issue? 
The issue should resolve itself.

Q:  Are you sure that this won’t happen to all 80, 120 or other flash devices? 
This issue is related to a part that is only used in Zune 30 devices.

Q:  How many 30GB Zune devices are affected?
All 30GB devices are potentially affected.

Q: Will you update the firmware before the next leap year (2012)?
Yes.

--------------------------------------------------------------------------------
Matt Akers
Zune Product Team
Now who could possibly have thought to test for leap year issues?  After all, that "leap year" thing is a fairly new invention, right?

Perhaps they should have tested more.


An update.
Supposedly, this is the code which failed:
year = ORIGINYEAR; /* = 1980 */
while (days > 365)
{
    if (IsLeapYear(year))
    {
        if (days > 366)
        {
            days -= 366;
            year += 1;
        }
    }
    else
    {
        days -= 365;
        year += 1;
    }
}
see:
http://www.aeroxp.org/2009/01/lesson-on-infinite-loops/
http://www.zuneboards.com/forums/zune-news/38143-cause-zune-30-leapyear-problem-isolated.html
http://programphases.com/?page_id=1732
http://www.zune.net/en-us/support/zune30.htm
http://gizmodo.com/5121311/30gb-zunes-failing-everywhere-all-at-once
http://news.cnet.com/8301-10805_3-10130186-75.html
http://blogs.msdn.com/james_whittaker/archive/2009/01/06/the-zune-issue.aspx
http://www.irishtimes.com/newspaper/finance/2009/0109/1231406001617.html
http://www.rollingstone.com/rockdaily/index.php/2009/01/09/is-the-zune-about-to-become-extinct/
http://www.cio.com.au/article/272371/blog_microsoft_zune_meltdown_three_lessons_developers_should_learn