netkas.org

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
)
})
}

Comments

  1. frantisheq
    July 11th, 2009 | 10:41 am

    great. now all i need is patched ICH8-R driver for snow leo. anyone?

  2. youminbuluo
    July 11th, 2009 | 1:48 pm

    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

  3. youminbuluo
    July 11th, 2009 | 1:51 pm

    mybe i should have found that there is a superlink under find^_^

  4. Andreas
    July 11th, 2009 | 10:56 pm

    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 ?

  5. Repoman
    July 12th, 2009 | 7:48 am

    New Snow Leo Developer Preview out weighing in at 1.31 GB…

  6. Miliuco
    July 16th, 2009 | 10:57 pm

    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)
    }
    }
    }

  7. Jingu
    August 14th, 2009 | 11:24 am

    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?

  8. Jingu
    August 14th, 2009 | 7:15 pm

    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.

  9. BeSweeet
    August 21st, 2009 | 11:10 pm

    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…

  10. BeSweeet
    August 21st, 2009 | 11:23 pm

    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?

  11. BeSweeet
    August 21st, 2009 | 11:31 pm

    Nevermind, figured it out. Just drug my .dsl file into iasl and out came dsdt.asl.

  12. Araraz
    August 27th, 2009 | 12:05 am

    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!

  13. DOSX
    August 27th, 2009 | 1:05 am

    After changing 0x04 to 0x02 and compiled it back to DSDT.aml all i have to do is to put it in /Extra

  14. Ivan
    August 27th, 2009 | 5:57 am

    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!

  15. brio2
    August 28th, 2009 | 5:12 pm

    @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

  16. Ivan
    August 29th, 2009 | 4:04 pm

    thanks where i got to put it? extra/extensions?….disk root?

  17. hakan
    October 14th, 2009 | 9:34 am
  18. BuildSmart
    October 15th, 2009 | 9:48 am

    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.

  19. BuildSmart
    October 15th, 2009 | 9:49 am

    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.

  20. rakdan
    December 20th, 2009 | 10:01 am

    guys! i’d change & compiled the file like u describe above in topic but still have bios reset to default. suggestions? please help

  21. April 28th, 2010 | 7:05 pm

    […] 问题3:BIOS重置,改DSDT,先follow this: http://www.pcbeta.com/viewthread-567358.html 生产 DSDT,修改方法:http://netkas.org/?p=114 […]

  22. May 6th, 2010 | 1:02 pm

    […] 4 auf 2 ändern.Ein ganzen Thread bibts bei NETKAS […]

  23. August 4th, 2012 | 1:16 pm

    […] solution try to modify your dsdt http://netkas.org/?p=114 Tweet !function(d,s,id){var […]

Leave a reply