July 11, 2009
Snow Leopard cmos reset fix
This very annoying bug first appeared in 10a28X build of snow leopard.
Stellarola recently found a fix for it, need to edit RTC section in dsdt.
Since RTC vars located in nvram area, looks like it was overlapping with other nvram vars(in snow leo applertc), so they got corrupted.
the fix is to decrease length of IO segment from 4 to 2.
here is example from my dsdt (gigabyte)
Device (RTC)
{
Name (_HID, EisaId ("PNP0B00"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x02, // Length
)
})
}
great. now all i need is patched ICH8-R driver for snow leo. anyone?
so what was needed if i want to edit my dsdt.aml by hand?
i opened with bbedit but there there is no section called applertc,
actually it can’t be properly displayed
mybe i should have found that there is a superlink under find^_^
Perfect here with my GA EP35-DS3 ! Thanks
Q: Running with -x32 never had KP, without that (64 Bit Kernel Mode) i get KP after some minutes.
Can it be that some of the osx86 “64” bit extensions we use (dsmos_64,…)
are not 100% stable (compiler options of optimize to high, other things) ?
Anyone with an AppleDecript_64 for testsing / sharing ?
New Snow Leo Developer Preview out weighing in at 1.31 GB…
Perfect here also with GA EP35-DS3R, CMOS reset solved with this RTC section in DSDT.dsl:
Device (RTC)
{
Name (_HID, EisaId (“PNP0B00”))
Name (ATT0, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x02, // Length was 4
)
})
Name (ATT1, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x04, // Length
)
})
Method (_CRS, 0, NotSerialized)
{
If (LGreaterEqual (OSFX, 0x03))
{
If (HPTF)
{
Return (ATT1)
}
Else
{
Return (ATT0)
}
}
Else
{
Return (ATT0)
}
}
}
On my laptop, I have in the original dsd and the fixed dsdt:
Device (RTC)
{
Name (_HID, EisaId (“PNP0B00”))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x01, // Alignment
0x08, // Length
)
})
}
Do I have to edit the length to 0x04 or 0x02?
Okay, I got my own answer.
I still have to set the length to 0x02. I tried with 0x04 and the CMOS still resets. With 0x02 for the length, the CMOS does not reset anymore.
What in the world did you guys use to edit this? I open dsdt.aml with TextEdit and it’s just a bunch of junk…
Ok I found dsdt.dsl. I found the Device (RTC) section but I get 0x08 for // Length. I changed it to 0x02, but how do I compile it?
Nevermind, figured it out. Just drug my .dsl file into iasl and out came dsdt.asl.
On my GA EP-43-S3L i have only dsdt.aml in root of volume.
I can’t edit this file and can’t find dsdt.dsl..
Help, please!
After changing 0x04 to 0x02 and compiled it back to DSDT.aml all i have to do is to put it in /Extra
What in the world did you guys use to edit this? I open dsdt.aml with TextEdit and it?s just a bunch of junk!!!! i can´t edit it! help please! i´m beeginer in os x!
@Ivan: You can find DSDT.aml compiler/decompiler here: http://www.mediafire.com/download.php?m41ycjjftmm
Install it and drag your DSDT.aml onto the new Icon. It will generate a .dsl for you which can then be edited via Terminal by typing nano DSDT.dsl (assuming you are in the right directory)
http://www.mediafire.com/download.php?m41ycjjftmm
thanks where i got to put it? extra/extensions?….disk root?
http://www.youtube.com/watch?v=VsnTsTWqCxM
cmos reset fix about my video
http://www.youtube.com/watch?v=VsnTsTWqCxM
According the ASL documentation, with an alignment of 0x01 and a length of 0x08 you should not have to change the length since the range is protected in NVRAM.
Alternately if you have the following:
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0×0070, // Range Minimum
0×0070, // Range Maximum
0×01, // Alignment
0×02, // Length
)
})
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0×0074, // Range Minimum
0×0074, // Range Maximum
0×01, // Alignment
0×04, // Length
)
})
you can change it to:
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0×0070, // Range Minimum
0×0070, // Range Maximum
0×01, // Alignment
0×08, // Length
)
})
and have the same results.
While the documentation describes the standard practices not all manufacturers respect this and therefore not in ASL compliance.
CORRECTION:
According the ASL documentation, with an alignment of 0x01 and a length of 0x08 you should not have to change the length since the range is protected in NVRAM.
Alternately if you have the following:
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0×0070, // Range Minimum
0×0070, // Range Maximum
0×01, // Alignment
0×02, // Length
)
IO (Decode16,
0×0074, // Range Minimum
0×0074, // Range Maximum
0×01, // Alignment
0×04, // Length
)
})
you can change it to:
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0×0070, // Range Minimum
0×0070, // Range Maximum
0×01, // Alignment
0×08, // Length
)
})
and have the same results.
While the documentation describes the standard practices not all manufacturers respect this and therefore not in ASL compliance.
guys! i’d change & compiled the file like u describe above in topic but still have bios reset to default. suggestions? please help
[…] 问题3:BIOS重置,改DSDT,先follow this: http://www.pcbeta.com/viewthread-567358.html 生产 DSDT,修改方法:http://netkas.org/?p=114 […]
[…] 4 auf 2 ändern.Ein ganzen Thread bibts bei NETKAS […]
[…] solution try to modify your dsdt http://netkas.org/?p=114 Tweet !function(d,s,id){var […]