Skip to content

Instantly share code, notes, and snippets.

@armenio
Last active September 11, 2022 17:29
Show Gist options
  • Save armenio/8eb9234492b958b27773 to your computer and use it in GitHub Desktop.
Save armenio/8eb9234492b958b27773 to your computer and use it in GitHub Desktop.
Este guia é praticamente uma tradução do tópico original do rehabman, localizado em http://www.tonymacx86.com/el-capitan-laptop-support/152573-guide-patching-laptop-dsdt-ssdts.html
Você deve tentar seguí-lo por sua conta e risco.
Se seu OS X parar de funcionar, é por sua conta e risco.
Tenha em mente que isso requer conhecimentos básicos de informática, OS X e uso do App Terminal.
*** você precisa entender isso ***
SSDT.aml = arquivo utilizado para gerenciamento de energia, geralmente é criado pela ferramenta ssdtPrGen.sh
SSDT-0.aml, SSDT-1.aml, SSDT-n.aml = arquivos complementares do DSDT.aml
Apresentação:
A fim de fazer muitas características OS X funcionarem bem em um laptop, você sempre vai precisar de uma DSDT devidamente corrigida (e SSDTs).
O objectivo deste guia é fornecer uma base para a aplicação de patches adequados de suas OEM DSDT/SSDTs.
Você nunca deve usar DSDT/SSDTs gerados a partir de outros computadores, isso vai facilmente estragar o boot do seu OS X.
O processo envolve várias pequenas etapas:
- Extrair arquivos nativos (OEM DSDT/SSDTs) - os arquivos originais da sua bios
- Desmontar os arquivos nativos com intel iasl no terminal
- Analisar e filtrar os arquivos nativos (basicamente, você precisa remover os arquivos que terminam com "x" antes do .aml como: *x.dsl e *x.aml)
- Aplicar as correções usando o MaciAsl.app
- Salvar (compilação)
- Instalar os arquivos corrigidos
Extrair arquivos nativos (OEM DSDT/SSDTs)
Todas as implementações de BIOS fornecem arquivos ACPI (DSDT/SSDTs) para o sistema operacional (mesmo para windows).
Então, em qualquer sistema operacional, você pode extraí-los.
A extração pode ser feita no Linux, OS X, Windows, ou pelo Clover(Melhor opção).
Vamos extrair os arquivos usando F4 com Clover.
Extraindo com Clover F4:
Na tela principal do Clover (Onde você seleciona o disco que quer dar boot), você simplesmente deve pressionar a tecla F4 e o Clover vai salvar todos os arquivos ACPI nativos (OEM DSDT/SSDTs) na pasta dentro da sua partição EFI na pasta EFI/Clover/ACPI/origin do disco em que o clover está instalado, seja ela no pendrive ou no HD.
Você poderá acessá-los após iniciar OS X para desmontá-los e corrigí-los, para isso você vai precisar montar essa partição efi (você vai precisar de uma ferramenta para isso - Pode encontrar no google).
Nota: algumas vezes, só f4 não funciona, é necessário apertar fn+f4. É raro, mas pode acontecer. Faça o teste.
Desmontar os arquivos nativos com intel iasl no termial
Embora os arquivos nativos (OEM DSDT/SSDTs) extraídos podem ser abertos diretamente no MaciASL, não é recomendável.
Abrindo um arquivo AML diretamente em MaciASL fará com que MaciASL desmontar o arquivo (com iasl) de forma autônoma, e se a AML faz referências complexas a outros AMLs (arquivos externos), não vai desmontá-lo corretamente e você vai ficar com muitos erros difíceis de corrigir.
É melhor desmontar todos os arquivos como um grupo usando iasl no Terminal, veja como:
Você vai precisar de uma compilação recente de iasl para desmontá-los corretamente.
Há uma versão apropriada disponível aqui: https://bitbucket.org/RehabMan/acpica/downloads.
É uma boa idéia para copiar o binário iasl para o caminho /usr/bin portanto,
faça os comandos:
cd /caminho/do/download/do/iasl
sudo mv iasl /usr/bin/
Assim, o iasl vai ficar facilmente acessível a partir do Terminal.
Copie todos os arquivos DSDT e SSDTs em um único diretório chamado dsdt dentro do seu desktop(mesa) - (não copiar arquivos ACPI que não começam com DSDT ou SSDT).
No terminal do OS X:
cd /diretorios/dos/DSDT/SSDTs (ex. cd ~/Desktop/dsdt)
isso vai levar você até a pasta onde separou os arquivos, depois execute:
iasl -da -dl *.aml
Deste ponto em diante, você vai trabalhar exclusivamente com os arquivos *.dsl resultantes, usando MaciASL.
Confira na sua pasta se os arquivos .dsl foram gerados e em seguida execute no terminal:
rm -f *.aml
Em casos especiais:
Desmontando com refs.txt
Se a compilação começar a dar erro de objetos não declarados, você pode criar um arquivo chamado refs.txt na mesma pasta dos arquivos *.aml com os objetos que causam o erro.
Aqui tem uma lista dos objetos causadores de erro mais comuns:
External(_SB_.PCI0.PEG0.PEGP.SGPO, MethodObj, 2)
External(_SB_.PCI0.LPCB.H_EC.ECWT, MethodObj, 2)
External(_SB_.PCI0.LPCB.H_EC.ECRD, MethodObj, 1)
External(_GPE.MMTB, MethodObj, 0)
Você pode copiar e colar essas linhas no seu arquivo refs.txt na mesma pasta onde separou seus arquivos e executar o iasl com o seguinte comando:
iasl -da -dl -fe refs.txt *.aml
O iasl vai colocar estas declarações externas antes de todas as outras as declarações externas já existentes.
Isto, também, é uma má escolha. Na maioria das vezes, você vai precisar para movê-los para o final para que eles siga as outras declarações externas em vez de precedê-los.
Será óbvio como você obterá erros de as declarações externas que seguem aqueles inseridos a partir refs.txt.
Filtrar os arquivos nativos
Após descompilar corretamente com o iasl, você deve remover todos os arquivos que terminam com x.dsl, eles são arquivos dinâmicos gerados automaticamente.
Portanto, no terminal:
rm *x.dsl
Aplicando as correções
Mesmo se desmontar tudo de uma vez (iasl com opção -da), os arquivos nativos ainda pode ter erros.
Os arquivos desmontados têm erros devido a mudanças no iasl ao longo do tempo,
imperfeições do iasl em si, e as diferenças no ambiente de compilação entre nossos laptops.
Então, você deve corrigir-los para que eles compilar sem erros.
Há muitas correções comuns para esses erros para MaciASL no repositório laptop do rehabman.
MaciASL: https://github.com/RehabMan/OS-X-MaciASL-patchmatic
Laptop Patches: https://github.com/RehabMan/Laptop-DSDT-Patch
O objetivo é fazer com que cada arquivo .dsl para compilar sem erros (warnings/remarks/optimizations são ok).
Uma vez que você tem arquivos compilando sem erros, você pode passar para corrigir problemas que você possa ter com a instalação do OS X (Vídeo, áudio, HDMI, Brilho).
Geralmente, um patch DSDT só deve ser aplicada depois de encontrar uma necessidade para essa correção específica.
Mas há várias correções que são normalmente necessários e que tem apenas uma pequena chance de causar um problema.
Eles estão no repositório laptop do rehabman listadas aqui:
Correções comuns para um bom funcionamento do OS X:
Basta abrir o arquivo de texto copiar o conteúdo, colar na caixa de texto que o MaciASL abre quando clica em patch e mandar aplicar.
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/system/system_IMEI.txt
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/system/system_MCHC.txt
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/system/system_WAK2.txt
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/system/system_IAOE.txt
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/system/system_Mutex.txt
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/system/system_HPET.txt
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/system/system_IRQ.txt
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/system/system_OSYS_win8.txt
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/system/system_RTC.txt
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/system/system_Shutdown2.txt
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/system/system_SMBUS.txt
Nota: o OS Check Fix patch que você usa não tem nada a ver com a versão do Windows no laptop veio, nem com a versão do Windows que você está usando atualmente.
USB:
você precisa procurar em seu DSDT dentro de XHC por 0x0d ou 0x6d e aplicar o patch mais adequado pra ele:
Melhores escolhas:
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/usb/usb_prw_0x0d_xhc.txt
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/usb/usb_prw_0x6d_xhc.txt
Se você tem um CPU Haswell com chipset 8-series e a kext AppleLPC.kext não carrega, você precisa aplicar este patch:
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/misc/misc_Haswell-LPC.txt
Quando se quer fazer uma correção geral, é sempre bom remover todos os métodos _DSM (Device specific Method) com o patch:
https://raw.githubusercontent.com/RehabMan/Laptop-DSDT-Patch/master/syntax/remove_DSM.txt
Problemas específicos:
Bateria:
Você pode procurar um patch adequado aqui: https://github.com/RehabMan/Laptop-DSDT-Patch/tree/master/battery
ou visitar a página que ensina passo-a-passo aqui: http://www.tonymacx86.com/el-capitan-laptop-support/116102-guide-how-patch-dsdt-working-battery-status.html
Brilho:
Você pode procurar um patch adequado aqui (geralmente tem PNLF no nome): https://github.com/RehabMan/Laptop-DSDT-Patch/tree/master/graphics
ou visitar a página que ensina passo-a-passo aqui: http://www.tonymacx86.com/el-capitan-laptop-support/152659-guide-patching-dsdt-ssdt-laptop-backlight-control.html
Desabilitar nVidia/Radeon: http://www.tonymacx86.com/el-capitan-laptop-support/163772-guide-disabling-discrete-graphics-dual-gpu-laptops.html
Salvar (compilação) e instalar os arquivos corrigidos
Para utilizar os seus DSDT/SSDTs corrigidos, você deve salvá-los, onde o CLOVER possa carregá-los.
Os arquivos devem ser salvos em "ACPI Machine Language Binary" (MaciASL-> Save as).
Para salvar um arquivo de texto (DSL) com uma extensão AML.
Os arquivos devem ser colocados na partição do Clover bootloader (geralmente a partição EFI), em EFI/Clover/ACPI/patched.
Finalmente, em seu config.plist, coloque em ACPI/SSDT/DropOem=true para usar todos os SSDTs corrigidos para o carregamento pelo bootloader.
Recursos
MaciASL (RehabMan fork): https://github.com/RehabMan/OS-X-MaciASL-patchmatic
patchmatic: https://github.com/RehabMan/OS-X-MaciASL-patchmatic
iasl (RehabMan fork): https://bitbucket.org/RehabMan/acpica/downloads
ACPI spec: http://acpi.info/spec.htm
RehabMan github: https://github.com/RehabMan?tab=repositories
Clover laptop guide: http://www.tonymacx86.com/yosemite-l...over-uefi.html
Clover config.plist files for laptops: https://github.com/RehabMan/OS-X-Clover-Laptop-Config
Fonte: http://www.tonymacx86.com/el-capitan-laptop-support/152573-guide-patching-laptop-dsdt-ssdts.html
Mas é bom manter seus arquivos .dsl corrigidas no caso de você precisa aplicar mais correções no futuro, portante guarde bem esses arquivos.
No final, você deve salvar como "ACPI Machine Language binary" com uma extensão .aml e colocá-los onde eles serão carregados pelo gerenciador de inicialização (Clover).
@Cxz202122
Copy link

Amigo seu post ajudou demais muito obrigado

@thepolarster
Copy link

Quando eu habilito o dropOEM, a injeção do meu grafico intel não funciona

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment