Senior Writer Support Team GFX Crew Global Moderator Ultimate Zuner
Join Date: Aug 2007
Location: England
Posts: 6,369
When the load bar goes across the screen. Hold back center and left. Or the Key Combos corresponding to your zune. Check the link in my sig "Key Combos"
When the load bar goes across the screen. Hold back center and left. Or the Key Combos corresponding to your zune. Check the link in my sig "Key Combos"
What time zone are you in? When it works for you could possibly be time zone related. Microsoft said it wouldn't work until 12 noon GMT, but mine was working at 12:05 PST. If your Zune thinks it's 12/31/2008 when you try to start it up, it won't work.
So, let it drain and try again a little later. Wait until you see the battery icon when you try to turn it on. Then, let it charge just long enough to power up. Give it a few minutes after powering up to finish loading. Mine looked like it was hung again, but then it rebooted and started working normally (except for the time being an hour ahead).
It won't respond to buttons if it's hung, because it hasn't finished booting. That would be like expecting CTRL + ALT + DEL to give you a login screen during Windows' boot screen. The only reset that might work would involve opening up your Zune and disconnecting the battery. The only reason this worked yesterday was because it reset the clock to a day other than the last day of a leap year.
I wouldn't recommend opening it up. If it's still not working by tomorrow, you can contact Microsoft. They might have some other ideas to try. If it's under warranty, they'll fix or replace it. If it's not under warranty, they may still offer to fix or replace it. That's a small chance, but if you open it up, you'll have no chance.
Edit: Actually, now that I think about it, the reason Microsoft said to wait until noon GMT is probably because that would be 1/1/2008 even at GMT -12. It just had to not be 12/31/2008 according to your Zune's clock and time zone. If your Zune's clock was a few hours early and you had a GMT -12 time zone, it's possible it would lock up even at noon GMT today.
What time zone are you in? When it works for you could possibly be time zone related. Microsoft said it wouldn't work until 12 noon GMT, but mine was working at 12:05 PST. If your Zune thinks it's 12/31/2008 when you try to start it up, it won't work.
So, let it drain and try again a little later. Wait until you see the battery icon when you try to turn it on. Then, let it charge just long enough to power up. Give it a few minutes after powering up to finish loading. Mine looked like it was hung again, but then it rebooted and started working normally (except for the time being an hour ahead).
It won't respond to buttons if it's hung, because it hasn't finished booting. That would be like expecting CTRL + ALT + DEL to give you a login screen during Windows' boot screen. The only reset that might work would involve opening up your Zune and disconnecting the battery. The only reason this worked yesterday was because it reset the clock to a day other than the last day of a leap year.
I wouldn't recommend opening it up. If it's still not working by tomorrow, you can contact Microsoft. They might have some other ideas to try. If it's under warranty, they'll fix or replace it. If it's not under warranty, they may still offer to fix or replace it. That's a small chance, but if you open it up, you'll have no chance.
I got it to work. Hard reset after disconnecting the battery.
Thanks
Quote:
Originally Posted by Charge
When the load bar goes across the screen. Hold back center and left. Or the Key Combos corresponding to your zune. Check the link in my sig "Key Combos"
It worked after a few tries. I'm a duche. Thanks
Last edited by itsnotabigtruck; 01-01-2009 at 01:08 PM.
Reason: merged 2 consecutive posts (ffr, use edit)
when I got up this morring someone told me about the crash I checked my zune and tuned it on and it didn't freeze. I wonder why mine did not freeze like a lot of other zune's did? weird
That would prevent the infinite loop, but would introduce a new bug where it advances the year on the last day of a leap year. It would have thought today was December 31, 2009. That's better than locking up, but it also would mean that all time-limited DRM media would stop working. So, if you have a Zune Pass, none of your songs would play.
What's needed is a break within an else like this (I hope, my C's a little rusty, and was never that good to begin with):
Code:
year = ORIGINYEAR; /* = 1980 */
while (days > 365)
{
if (IsLeapYear(year))
{
if (days > 366)
{
days -= 366;
year += 1;
}
else
{
break;
}
}
else
{
days -= 365;
year += 1;
}
}
Yup, you are probably correct. But I think that this whole error is even simpler than people make it out to be and appears to just be either a. a copy/paste error or b. a bug that was only fixed in one place and not the other. Check out the "MX31GetRealTime" function in the original code posted. It has the correct implementation with the else and break already. So I am guessing when this code was pasted, and this bug fixed, it only got fixed in one location.
A Pragmatic Approach to Fixing the Microsoft Zune Bug grepmonster This is my response to the news. I've written a small program if you're interested in recreating the bug. I've also provided a fix to the code, but concluded that the pragmatic approach would be to hardcode all the leap years between 1980 and 2050.
Actually, Microsoft hasn't fixed anything yet. They haven't done anything but identify the problem. It's only a problem when you boot up on the last day of a leap year. If you turned your Zune on yesterday, it would lock up at the end of booting. If you turned it on today, it's fine.
The fix is simple enough that I'm sure they'll get it fixed with the next Zune update, but it's not fixed yet. If they don't fix it, we'll see the same problem on December 31, 2012.
As for why it only affected the 30 GB Zunes, it's because the bug is in a driver for a part that doesn't exist in the newer Zunes.
but then what code did MS use for the time in the new zunes?
The bug was in the clock driver for the MX31, which is the processor in the Zune 30 and Gigabeat S. The newer Zunes use a newer processor, the MX32, which presumably also has newer drivers without the bug.
Edit: Of course, this might be even simpler, assuming that days == 1 on January 1, 1980. I plugged the formulas into Excel, used a few dates (year end on leap and non-leap years as well as mid-year and 1/1 dates), and it seems to work. It would be safer, since there are no loops to get stuck in.
Code:
year = floor ((days - 1) / 365.25);
days -= ceil (year * 365.25);
year += ORIGINYEAR;
If you're afraid to use loops then you probably shouldn't be programming to begin with!
Oh, and your code introduces a Y2K1C bug (The year 2100 is not a leap year).
Yup, you are probably correct. But I think that this whole error is even simpler than people make it out to be and appears to just be either a. a copy/paste error or b. a bug that was only fixed in one place and not the other. Check out the "MX31GetRealTime" function in the original code posted. It has the correct implementation with the else and break already. So I am guessing when this code was pasted, and this bug fixed, it only got fixed in one location.
Arghhhhh!!!! Shalloway's Law applies:
“When N things need to change and N>1, Shalloway will find at most N-1 of these things.”