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 ↗
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
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?
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
Perdoem a minha ignorância, mas qual programa vocês estão usando para abrir, descompilar e editar os arquivos DSDT...?
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 ^_^
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...
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?
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)?
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)
}
}
}
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Á
)
Correção do reset de CMOS via kext (LegacyAppleRTC / ElliottForceLegacyRTC):
k exts.com/view/151-cmos_reset_fix_%28via_kext%29.html
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.
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!
@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
@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.
@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
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.
@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
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?
@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
@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?
@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
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!
@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
@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!
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!
@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
Fontes e Registro de Autoria (15 membros creditados · Tópico #3478)
| Usuário | Contribuição no Dossiê | Postagens | Período Ativo |
|---|---|---|---|
| @uman | Colaborador Essencial | 9 | 2009-07-30 → 2010-03-04 |
| @kizwan | Colaborador Essencial | 8 | 2009-07-13 → 2010-04-01 |
| @infinitek | Colaborador | 2 | 2009-08-19 → 2009-08-20 |
| @ariyako | Colaborador | 2 | 2009-11-20 → 2009-11-28 |
| @candykane | Autor Principal | 1 | 2009-07-13 |
| @digital_dreamer | Colaborador | 1 | 2009-08-01 |
| @ariadri | Colaborador | 1 | 2009-08-20 |
| @mwgdrwg | Colaborador | 1 | 2009-08-21 |
| @dgandra | Colaborador | 1 | 2009-09-05 |
| @osxfr33k | Colaborador | 1 | 2009-09-22 |
| @MikeHunt79 | Colaborador | 1 | 2009-09-23 |
| @Ianxxx | Colaborador | 1 | 2009-11-27 |
| @spalek83 | Colaborador | 1 | 2009-12-06 |
| @SaCleoCheater | Colaborador | 1 | 2010-01-29 |
| @josefka | Colaborador | 1 | 2010-04-01 |