Mac OS X em Hardware x86 Arquivo Técnico 2008–2024
InfiniteMac OSx86 › Arquitetura Base OSx86 10.X e Bootloaders › Correção do Reset de CMOS (BIOS) no Snow Leopard
332,582 reads · 2009-07-13 – 2010-04-01
Relatório Núcleo 10.X DSDT

Correção do Reset de CMOS (BIOS) no Snow Leopard

As versões beta e final do Snow Leopard têm o péssimo hábito de resetar o CMOS (configurações da BIOS) ao reiniciar o computador. Você pode corrigir isso editando o bloco Device (RTC) no seu arquivo DSDT, alterando o comprimento (Length) de 0x04 para 0x02.

Autor Principal
@candykane Publicado em 2009-07-13
Coleção
Arquitetura Base OSx86 10.X e Bootloaders
Histórico no Arquivo
332,582 leituras históricas · 26 notas técnicas selecionadas (de 32 postagens) · 2009-07-13 – 2010-04-01
Colaboradores Creditados (15)
@uman (9)@kizwan (8)@infinitek (2)@ariyako (2)@candykane@digital_dreamer@ariadri@mwgdrwg@dgandra@osxfr33k@MikeHunt79@Ianxxx@spalek83@SaCleoCheater@josefka
Referência de Hardware
Workstation Coolers & Thermal Gear ↗ SATA III & NVMe SSDs ↗ USB 3.2 Boot Flash Drives ↗
Dossiê técnico traduzido para Português (Brasil) · Comandos de terminal, nomes de kexts, nós ACPI e flags de boot preservados exatamente como no originalVer original em inglês (Original English) →

As versões beta (e Retail) do Snow Leopard têm a péssima característica de resetar o CMOS da placa-mãe quando você reinicia o sistema. Você pode corrigir isso facilmente editando o seu arquivo DSDT.

O parâmetro Length dentro de Device (RTC) deve ser alterado para 0x02 (o valor original geralmente é 0x04).

Device (RTC)
{
  Name (_HID, EisaId ("PNP0B00"))
  Name (_CRS, ResourceTemplate ()
  {
     IO (Decode16,
     0x0070,             // Range Minimum
     0x0070,             // Range Maximum
     0x00,               // Alignment
     0x02,               // Length
     )
   })
}

Notas de Campo e Relatos da Comunidade

26 respostas técnicas selecionadas a partir de 32 postagens originais

Nota de Campo #1 @uman 2009-07-30

candykane,

No Leopard 10.5.6, o meu bloco RTC está assim:

                Device (RTC)
                {
                    Name (_HID, EisaId ("PNP0B00"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0070,             // Range Minimum
                            0x0070,             // Range Maximum
                            0x01,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {8}
                    })
                }

Você sabe dizer se:

a. essa alteração que você sugere é inofensiva caso eu também rode o Leopard?
b. a linha IRQNoFlags () {8} precisa ser mantida ou removida no Leopard/Snow Leopard?

Nota de Campo #2 @digital_dreamer 2009-08-01

uman,
É totalmente inofensiva em qualquer um dos dois sistemas operacionais.
Aquele valor 0x08 precisa ser alterado para 0x02 para o Snow Leopard, mas não causa nenhum efeito colateral no Leopard.

A linha IRQNoFlags () e o {8} logo abaixo também costumam ser removidos quando há conflito com o áudio ou HPET (embora em placas ASUS às vezes a ausência ou presença afete Kernel Panics no SL). Você chegou a ter KPs no Snow Leopard?

Abraços,
MAJ

Nota de Campo #3 @infinitek 2009-08-19

Perdoem a minha ignorância, mas qual programa vocês estão usando para abrir, descompilar e editar os arquivos DSDT...?

Nota de Campo #4 @ariadri 2009-08-20

Perdoem a minha ignorância, mas qual programa vocês estão usando para abrir, descompilar e editar os arquivos DSDT...? appl elife.ru/poleznye_keksty_utility_i_solyusheny_dlya_osx86/9675/860.html#entry93244

Basta arrastar o seu arquivo dsdt.aml para cima do aplicativo e ele gerará um arquivo de texto dsdt.dsl que você pode editar normalmente. Quando terminar de editar, basta arrastar o dsdt.dsl de volta para o aplicativo e ele o recompilará em dsdt.aml como num passe de mágica ^_^

Nota de Campo #5 @mwgdrwg 2009-08-21

Muito obrigado por isso — resolveu o reset de BIOS para mim! Ainda estou tendo Kernel Panic mais adiante e tentando concluir o primeiro boot do sistema...

Nota de Campo #6 @dgandra 2009-09-05

Na seção Device (RTC) do meu DSDT, o valor de Alignment está em 0x04. Vi no primeiro post que o do candykane está como 0x00, mas ninguém comentou sobre esse parâmetro nos posts seguintes. Preciso mudar o Alignment para 0x00 também ou mantenho o valor atual?

Nota de Campo #7 @osxfr33k 2009-09-22

Onde exatamente entra esse código? No final do DSDT.dsl? No meio? É aí que fico confuso. Vocês poderiam mostrar algumas linhas antes e depois para eu localizar onde ele se encaixa? Existe algum patcher automático de DSDT que aplique essa correção sozinho?

Uso o DSDTSE, que traz vários hacks prontos em uma janela separada, mas fico na dúvida de onde colar no editor principal do DSDT.dsl.

Parece que nem tenho um bloco chamado RTC no meu DSDT, e curiosamente não sofro com reset de CMOS. Talvez seja porque no meu DSDT ele tem outro nome (comoifte/RTC0) na minha placa-mãe Asus Maximus Formula (chipset X38)?

Nota de Campo #8 @MikeHunt79 2009-09-23

Olá! Aqui está a seção RTC do meu netbook Acer Aspire One; tenho dois blocos (BUF0 e BUF1) com Length = 0x08. Preciso alterar ambos os valores de Length para 0x02?

                Device (RTC)
                {
                    Name (_HID, EisaId ("PNP0B00"))
                    Name (BUF0, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0070,             // Range Minimum
                            0x0070,             // Range Maximum
                            0x01,               // Alignment
                            0x08,               // Length
                            )
                    })
                    Name (BUF1, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0070,             // Range Minimum
                            0x0070,             // Range Maximum
                            0x01,               // Alignment
                            0x08,               // Length
                            )
                   })
                    Method (_CRS, 0, Serialized)
                    {
                        If (LEqual (HPTS, One))
                        {
                            Return (BUF0)
                        }
                        Else
                        {
                            Return (BUF1)
                        }
                    }
                }
Nota de Campo #9 @Ianxxx 2009-11-27

Device (RTC)
{
Name (_HID, EisaId ("PNP0B00"))
Name (ATT0, ResourceTemplate
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x02, // Length <-- EDITE APENAS ESTE AQUI
)
})
Name (ATT1, ResourceTemplate
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x04, // Length <-- DEIXE ESTE COMO ESTÁ
)

Nota de Campo #10 @spalek83 2009-12-06

Correção do reset de CMOS via kext (LegacyAppleRTC / ElliottForceLegacyRTC):

k exts.com/view/151-cmos_reset_fix_%28via_kext%29.html

Nota de Campo #11 @SaCleoCheater 2010-01-29

Essa configuração de RTC com Length 0x02 no DSDT do Snow Leopard é a mesma utilizada pela própria Apple no DSDT real do MacBook Air.

O mod não foi inventado do zero, apenas descoberto comparando com o DSDT de Macs reais.

Nota de Campo #12 @uman 2010-02-26

Segundo o BuildSmart (veja: http://netkas.org/?p=114#comment-45114 ↗), se o seu DSDT já tem Length 0x08 e Alignment 0x01, o DSDT do fabricante segue a especificação ASL à risca e em tese não precisaria de alteração no 10.6.2.

Li na seção russa do fórum que alterar o Length para 0x02 funciona bem no 10.6.0 e 10.6.1, mas que no 10.6.2 alguns usuários testaram voltar para 0x08 por conta do Sleep.

Alguém confirma isso? Vou migrar para o Snow Leopard na semana que vem (e fazer upgrade da CPU do meu notebook); se ninguém testar até lá, eu mesmo farei o teste.

Aliás, comparar o seu DSDT com o DSDT oficial do modelo de Mac mais parecido com o seu hardware ajuda demais!

Nota de Campo #13 @kizwan 2010-02-26 ↳ Re: @uman
@umanSegundo o BuildSmart (veja: http://netkas.org/?p=114#comment-45114 ↗), se o seu DSDT já tem Length 0x08 e Alignment 0x01, o DSDT do fabricante segue a especificação ASL à risca...

O meu Acer Aspire 9420 só sofre reset de BIOS quando tenta entrar em hibernação (wake from sleep/hibernate). Ainda não testei o 10.6.2, mas você quer dizer que no 10.6.2 meu notebook não vai mais resetar a BIOS mesmo sem o "CMOS reset fix"? Para constar, o DSDT original do Aspire 9420 vem com 0x08 e 0x01.

kizwan

Nota de Campo #14 @uman 2010-02-27 ↳ Re: @kizwan
@kizwanO meu Acer Aspire 9420 só sofre reset de BIOS quando tenta entrar em hibernação. Ainda não testei o 10.6.2, mas você quer dizer que no 10.6.2 meu notebook não vai mais resetar a BIOS mesmo sem o "CMOS reset fix"?...

Oi kizwan —

Meu notebook também apaga se tentar hibernar no 10.5.6. Sobre a sua dúvida: o post em russo "sugeria" que no 10.6.2 seria possível voltar para 0x08, mas não deixava claro se quem já tinha 0x08 originalmente continuava precisando mudar para 0x02 ao usar Repouso/Hibernação no 10.6.2.

É exatamente isso que estou tentando confirmar. Vou testar assim que instalar o SL e posto o resultado aqui.

Nota de Campo #15 @kizwan 2010-02-27 ↳ Re: @uman
@umanMeu notebook também apaga se tentar hibernar no 10.5.6. Sobre a sua dúvida: o post em russo "sugeria" que no 10.6.2 seria possível voltar para 0x08...

Eu já havia testado o 10.6.0 e o 10.6.1 antes com o patch RTC (0x02), e ele resolvia 100% o reset de BIOS ao hibernar.

Vou testar o 10.6.2 sem o patch RTC no meu Acer Aspire 9420 hoje à noite e trago o veredito!

kizwan

Nota de Campo #16 @uman 2010-02-28

Obrigado por testar no 10.6.2! Eu estava mergulhado no Datasheet do chipset ICH7 e na especificação ACPI tentando verificar se os patches de desligamento/reinício e repouso do ICH9/10 se aplicam da mesma forma. Meu processador Core 2 Duo novo acabou de chegar, então vou instalá-lo primeiro no Leopard e logo em seguida partir para o Snow Leopard.

Nota de Campo #17 @kizwan 2010-03-01 ↳ Re: @uman
@umanObrigado por testar no 10.6.2! Eu estava mergulhado no Datasheet do chipset ICH7 e na especificação ACPI...

Oi uman,

Após vários testes e reinicializações no 10.6.2, confirmei na prática que AINDA PRECISO alterar o Length do Device (RTC) de 0x08 para 0x02! Sem essa alteração para 0x02, a BIOS continua sendo resetada sempre que o computador reinicia após entrar em repouso/hibernação (hibernatemode 3).

Agora só falta resolver minha placa Wi-Fi, que teima em não religar ao voltar do repouso.

kizwan

Nota de Campo #18 @uman 2010-03-01

Puxa, desculpe pelo trabalho que te dei e muito obrigado por confirmar isso na prática! Pelo visto o BuildSmart estava enganado e o patch 0x02 continua indispensável mesmo no 10.6.2!

Já fiz o upgrade da minha CPU e agora posso rodar o Snow Leopard em 64 bits.

Você conhece algum guia recente de instalação Retail do Snow Leopard com Chameleon RC4 em partição oculta EFI? Tenho o Leopard instalado atualmente, comprei um HD novo para o SL e tenho uma gaveta externa USB. Minha ideia é restaurar o DVD Retail em uma imagem/partição, instalar no HD novo via USB, instalar o Chameleon, meu DSDT e as kexts na partição EFI, testar o boot via USB e depois trocar os HDs internos. Faz sentido esse roteiro?

Nota de Campo #19 @kizwan 2010-03-01 ↳ Re: @uman
@uman… Minha ideia é restaurar o DVD Retail em uma imagem/partição, instalar no HD novo via USB, instalar o Chameleon, meu DSDT e as kexts na partição EFI...

Em vez de restaurar o DVD Retail para um arquivo .dmg, é ainda mais prático restaurar o DVD Retail em uma pequena partição de 8 GB no disco usando o Utilitário de Disco.

Atualizando o seu bootloader para o Chameleon 2 RC4, você pode separar as kexts do 10.5 e do 10.6 em subpastas sem que uma interfira na outra:

Extra/10.5/Extensions Extra/10.5/Extensions.mkext Extra/10.6/Extensions Extra/10.6/Extensions.mkext

Assim você continua dando boot normalmente no seu Leopard e também pode selecionar o "Mac OS X Install DVD" no menu do Chameleon para instalar o Snow Leopard no HD novo.

Detalhe importante: na minha máquina o arquivo "boot" que veio no pacote do Chameleon RC4 travava logo após selecionar a partição do OS X; resolvi substituindo apenas o binário "boot" pelo do PC EFI 10.6 baixado do netkas.org.

kizwan

Nota de Campo #20 @uman 2010-03-01 ↳ Re: @kizwan
@kizwanEm vez de restaurar o DVD Retail para um arquivo .dmg, é ainda mais prático restaurar o DVD Retail em uma pequena partição de 8 GB no disco usando o Utilitário de Disco.

Presumo que essa partição precise ser bootável?

@kizwanAtualizando o seu bootloader para o Chameleon 2 RC4, você pode separar as kexts do 10.5 e do 10.6...

Mas por que eu instalaria no disco antigo se quero aposentar minha instalação antiga do iPC e fazer uma instalação 100% Retail limpa no HD novo?

@kizwanPor fim, reinicie, selecione "Mac OS X Install DVD" e instale o Snow Leo no disco novo.

E o instalador do Snow Leopard permite instalar normalmente em um HD externo conectado via USB?

@kizwanDetalhe importante: na minha máquina o arquivo "boot" que veio no pacote do Chameleon RC4 travava... substituí pelo PC EFI 10.6 do netkas.org.

Bom saber disso! Muito obrigado por toda a ajuda! Aliás, o seu Acer também usa southbridge ICH7?

Nota de Campo #21 @kizwan 2010-03-01 ↳ Re: @uman
@umanPresumo que essa partição precise ser bootável?

Sim.

@umanMas por que eu instalaria no disco antigo se quero aposentar minha instalação antiga do iPC e fazer uma instalação 100% Retail limpa no HD novo?

Na verdade, sugeri usar uma partição como mídia de instalação para gravar o Snow Leopard no disco novo, preparando já a partição EFI/Boot-132 do disco novo antes do primeiro boot.

Eu mantenho um HD externo de 80 GB dividido em 3 partições como meu "instalador universal": a 1ª em FAT32 para arquivos, a 2ª como partição Boot-132 (com Chameleon 2 RC4 + PC EFI 10.6) e a 3ª com o DVD Retail restaurado.

@umanE o instalador do Snow Leopard permite instalar normalmente em um HD externo conectado via USB?

Sim, perfeitamente (desde que formatado em GUID ou usando OSInstall modificado para MBR).

@umanBom saber disso! Muito obrigado por toda a ajuda! Aliás, o seu Acer também usa southbridge ICH7?

Sim, meu Acer 9420 usa ICH7-M! E tenho ótima notícia: consegui fazer meu Wi-Fi voltar a funcionar após o repouso atualizando a IONetworkingFamily.kext para a versão do 10.6.2 e injetando o Device ID da minha Dell Wireless (Broadcom 4315) via plist.

Também fiz estas melhorias no meu DSDT:
- Correção das portas USB 2.0 (EHCI) para que sejam reconhecidas como built-in e permitam o repouso automático.
- Repouso ao fechar a tampa (LID close).
- Injeção de NVCAP na GeForce Go 7300 habilitando monitor externo.
- Injeção de ConfigData para o codec ALC883 habilitando os microfones interno e externo.

kizwan

Nota de Campo #22 @uman 2010-03-03

Argh, que frustração! Tentei os 3 primeiros métodos do guia do Prasys (pra sys.co.cc/2009/08/installing-snow-leopard-for-osx86/) e nenhum funcionou aqui.

Então agora conectei o HD novo em um MacBook Pro real e estou instalando o Snow Leopard diretamente por lá. Assim que terminar, basta instalar o Chameleon na partição EFI do HD novo e colocar minhas kexts e DSDT antes de passar o HD para o meu notebook?

Confesso que instalar o SL Retail dá um belo trabalho na primeira vez!

Nota de Campo #23 @kizwan 2010-03-04 ↳ Re: @uman
@uman… Então agora conectei o HD novo em um MacBook Pro real e estou instalando o Snow Leopard diretamente por lá. Assim que terminar, basta instalar o Chameleon na partição EFI do HD novo e colocar minhas kexts e DSDT antes de passar o HD para o meu notebook?

Exatamente! As duas kexts essenciais que não podem faltar na sua pasta Extra são a fakesmc.kext (do netkas) e a PlatformUUID.kext (a antiga AppleDecrypt.kext não é mais usada no Snow Leopard).

E lembre-se de que por padrão o Snow Leopard tenta iniciar em 64 bits; para evitar incompatibilidades com kexts de 32 bits no primeiro boot, adicione a flag "arch=i386" em "Kernel Flags" no seu com.apple.Boot.plist.

kizwan

Nota de Campo #24 @uman 2010-03-04 ↳ Re: @kizwan
@kizwanQual esquema de partição você está usando, MBR ou GUID?...

GUID — quero manter tudo na partição oculta EFI para deixar a pasta /S/L/E 100% intocada (vanilla) e facilitar futuras atualizações.

@kizwanPor padrão o Snow Leopard tenta iniciar em 64 bits... adicione "arch=i386" em "Kernel Flags".

Bem lembrado — pensando bem, acho que eu estava digitando a flag antiga -x32 por hábito!

Abri um tópico próprio fora do subfórum de DSDT para não desvirtuar mais este aqui. Muito obrigado pela paciência e ajuda, kizwan!

Nota de Campo #25 @josefka 2010-04-01

GeForce Go 7300

Kizwan,
Vi que você corrigiu a sua GeForce Go 7300 diretamente no DSDT. Poderia me mostrar como fez? No meu Asus F3Jc o sistema entra e volta do repouso normalmente, mas a tela fica preta ao acordar (atualmente uso uma EFI string no boot.plist para ativar a placa).

Abraços!

Nota de Campo #26 @kizwan 2010-04-01 ↳ Re: @josefka
@josefkaKizwan, vi que você corrigiu a sua GeForce Go 7300 diretamente no DSDT. Poderia me mostrar como fez?...

Isso acontece ao voltar do repouso do sistema (system sleep) ou apenas quando a tela apaga sozinha por inatividade (display sleep)? No meu notebook, se apenas a tela apagar por inatividade, ela também não reacende — por isso desativei o desligamento automático apenas do monitor no Economizador de Energia e uso apenas o repouso completo do sistema.

Se quiser conferir a injeção e o NVCAP que uso no meu DSDT para a Go 7300 (procure por "7300" no arquivo):
media fire.com/?zmnbzhwq0mt
ou
media fire.com/?mozqymgktyn

EDIT: O meu Acer Aspire 9420 tem apenas saída VGA externa, não tem porta DVI.

kizwan

Validado com a participação de: @kizwan @uman @infinitek @ariyako
Fontes e Registro de Autoria (15 membros creditados · Tópico #3478)
UsuárioContribuição no DossiêPostagensPeríodo Ativo
@umanColaborador Essencial92009-07-30 → 2010-03-04
@kizwanColaborador Essencial82009-07-13 → 2010-04-01
@infinitekColaborador22009-08-19 → 2009-08-20
@ariyakoColaborador22009-11-20 → 2009-11-28
@candykaneAutor Principal12009-07-13
@digital_dreamerColaborador12009-08-01
@ariadriColaborador12009-08-20
@mwgdrwgColaborador12009-08-21
@dgandraColaborador12009-09-05
@osxfr33kColaborador12009-09-22
@MikeHunt79Colaborador12009-09-23
@IanxxxColaborador12009-11-27
@spalek83Colaborador12009-12-06
@SaCleoCheaterColaborador12010-01-29
@josefkaColaborador12010-04-01

Escolher idioma · Choose your language