Jump to content

[Guia] DSDT/SSDT - Conhecimentos Gerais

dsdt guia ssdt

  • Please log in to reply
89 replies to this topic

#1
Allan

Allan

    V.I.P. Member

  • Supervisors
  • 11,553 posts
  • Gender:Male

Introdução.

 

A ACPI (Advanced Configuration and Power Interface) define um grande número de tabelas que fornecem a interface entre um sistema operacional compatível com ACPI e firmware do sistema. Estes permitem descrição do hardware do sistema, de forma independente da plataforma em ACPI Machine Language (AML). O DSDT (Descrição de Tabela do Sistema Diferenciado) é a tabela principal na parte ACPI do BIOS de um computador, define a maioria dos principais dispositivos do sistema. O SSDT (Secondary System Description Table) tem a mesma estrutura com DSDT, mas é geralmente menor e define alguns dispositivos específicos.

 

Por padrão, os bootloaders vão ter todas as tabelas OEM do BIOS/UEFI e transferi-lo para sistemas operacionais.

7MqX4ff.png

 

Por que temos de corrigir o DSDT/SSDT do hackintosh?

 

Ao contrário do Windows ou Linux, o OS X tem uma implementação ACPI incompletas que suporta apenas um subconjunto de DSDT apenas em modelos de Mac. Já nos Hackintosh, alguns dispositivos não estão definidos como compatível com OS X, sendo assim não vão funcionar corretamente.

p1XTYv5.png

 

 

Objetivo

 
Corrigindo o DSDT permite ao usuário melhor uso do seu hardware. 
Muitos bootloaders permitem que o usuário substitua a tabela OEM no BIOS/UEFI por tabelas definidas nos arquivos .aml

 

kQKKXz3.png

 

Seção 1.

Como extrair?

Se você não usa DSDT, use essas maneiras pra extrair.

 

No OS X.

 

Se usa Chameleon, digite essa flag antes do boot: DSDT=null

Pode usar esse comando no Terminal:

perl -e 'open(CMD, "ioreg -lw0 \| grep DSDT|") or die; while(<CMD>) { chomp; if($_ =~ /\"DSDT\.?\d?\"=<([^>]*)>/) { $buff = $1; open(PIP, "|xxd -r -p > dsdt.aml") or die; print PIP "$1"; } }'

Ou usar o app DSDT Editor, um app leve e facil de usar.

Vá no menu File - Extract DSDT

Attached File  Screen Shot 2014-04-29 at 8.19.08 PM.png   47.72KB   87 downloads

 

Dai vai aparecer a tabela disponível para edição no painel principal.

 

Clover

Na tela inicial do Clover, aperte F4, depois inicie o OS X, todas as tebelas ACPI estarão dentro de /EFI/Clover/ACPI/origin/

 

No Windows

Como não existe mais Everest, baixe o Aida64 (pode ser Trial mesmo)

Veja as prints.

Attached File  AIDA.png   693.58KB   85 downloads
Attached File  AIDA2.png   681.59KB   65 downloads
Attached File  AIDA3.PNG   47.42KB   64 downloads
 
Depois de salvar, copie o arquivo para um Pendrive, cole na Mesa do OS X, e renomeie para DSDT.aml.
 

No Linux (Ubuntu)

Crie um Penboot (LiveCD) e abra o Terminal, e use esse codigo:

cd ~/Desktop
sudo cat /sys/firmware/acpi/tables/DSDT > DSDT.aml

Caso não funcione, use esse:

cd ~/Desktop
sudo cat /proc/acpi/dsdt > DSDT.aml

Seção 2

 

Adicionando o DSDT/SSDT no bootloader

Depois de editar e compilar, salve o arquivo .dsl para .aml, a partir dai vamos colocar este arquivo para ser carregado pelo bootloader:

Chameleon: /Extra
Clover: /EFI/Clover/ACPI/patched

Note: Se você tem mais de um SSDT e deseja que seja carregado, renomeie os adicionais como: SSDT.aml, SSDT-1.aml, SSDT-2.aml, … etc.

O bootloader carrega a DSDT do sistema a partir do primeiro inicio. Para carregar a SSDT, você precisa adicionar estas flag nos seguinte bootloaders. DropSSDT=True (Chameleon) ou Drop OEM SSDT=True (Clover)

 

Seção 3

 

Como editar e o que usar.

 

Existem varios editores de DSDT, vou destacar alguns.

 

O app mais usado é o DSDT Editor, um app leve e facil de usar.

Attached File  Screen Shot 2014-04-30 at 5.12.09 PM.png   9.55KB   71 downloads 

 

Há também o DSDTSE, esse já ensina a como fazer, não vem com muitos patchs prontos, é muito bom pra quem quer aprender na marra.

Attached File  Screen Shot 2014-04-30 at 5.12.02 PM.png   13.34KB   43 downloads

Mas existe também o MaciASL que é bem mais completo, e também muito fácil de usar.

Quando aberto pela primeira vez, ele de forma automática já extrai a DSDT que se chama Pre-Edited DSDT. Quando terminar as alterações, somente salve o arquivo, no menu File - Save As…

Attached File  Screen Shot 2014-04-30 at 5.12.19 PM.png   10.39KB   53 downloads

[Nota] O MaciASL pode ser inserido alguns repositórios de patchs, poupa tempo em vez de baixar patch por patch. (Vou falar mais abaixo).

 

Seção 4

Verificar erros/warnings.

 

Para ver isso, com o DSDT Editor, vá em IASL - Compile.

Attached File  Screen Shot 2014-04-30 at 5.16.19 PM.png   62.19KB   44 downloads

 

No MaciASL no icone Compile.

Attached File  Screen Shot 2014-04-30 at 5.15.54 PM.png   103.53KB   40 downloads

 

Corrigir erros/warnings.

Vou citar aqui os erros/wangins mais comuns e como resolver.


1 - Warning ResourceTag larger than Field (Tag: 64 bits, Field: 32 bits)

 

Mude disso:

CreateDWordField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN)

Para:

CreateQWordField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN)

2 - Warning Result is not used, possible operator timeout will be missed

 

De

Acquire (MUT0, 0x0FFF)

Para

Acquire (MUT0, 0xFFFF)

3 - Warning Not all control paths return a value (_HID)

     Warning Reserved method must return a value (Integer/String required for _HID)

 

De:

Method (_HID, 0, NotSerialized)
{
If (TCMF) {}
Else
{
Return (0x310CD041)
}
}

Para:

Method (_HID, 0, NotSerialized)
{
If (TCMF)
{
Return (Zero)
}
Else
{
Return (0x310CD041)
}
}

4 - Error Object is not accessible from this scope (_T_0)

 

Exclua o ultimo “_” (Ex: _T_0 para T_0)

 

5 - Error Object does not exist (_VPC)

 

Exclua todos os “_” (Ex: Store (Local0, _VPC) 

Return (_VPC)

Para Store (Local0, VPC)     

Return (VPC)

 

Seção 5

Patchs

 

Talvez se assustou um pouco com a maneira que deve ser corrigido os warnings/erros, mas para facilitar o trabalho, existem varios patchs que fazem o trabalho pra você.

Há varios patchs uteis que você pode encontrar no Olarila: Patches

E vários packs para as diversas motherboards: Patches by Motherboard

 

Esses podem ser usados tanto no DSDT Editor como no MaciASL.

Há uns benefícios pra quem usa o MaciASL, que como comentado tem a possibilidade de adicionar repositórios de patchs, veja:

 

Os mais usados.

Toleda

RehabMan

PJALM

 

Como adicionar:

Attached File  Screen Shot 2014-04-29 at 10.44.07 PM.png   449.38KB   54 downloads

(Créditos da imagem Pjalm)

 

Seção 6

Como aplicar os patchs?

 

DSDT Editor

Attached File  Screen Shot 2014-04-30 at 5.12.09 PM.png   9.55KB   71 downloads 

Attached File  Screen Shot 2014-04-29 at 10.47.06 PM.png   60.18KB   31 downloads

 

Dai você caminha até sua pasta com seus patchs.

Attached File  Screen Shot 2014-04-29 at 10.47.37 PM.png   97.3KB   27 downloads

 

Escolhe o patch para sua situação e aplique.

Attached File  Screen Shot 2014-04-29 at 10.47.52 PM.png   58.63KB   25 downloads

 

MaciASL

Attached File  Screen Shot 2014-04-30 at 5.12.19 PM.png   10.39KB   53 downloads

 

Attached File  Screen Shot 2014-04-29 at 10.46.12 PM.png   136.73KB   34 downloads

 

Legenda: Clique no icone Patch, (1) depois escolha qual patch vai usar, (2) e aplique o mesmo.


Veja que existe a opção “Open” onde você vai navegar até sua pasta de patchs.

 

[Nota] Todo o patch deve ser um documento .txt, para criar o seu, use o TextWrangler, abra, copie e cole, e salve.

 

Salvando o DSDT/SSDT

 

Caso precise salvar o DSDT/SSDT, mas tem erros presentes que não foram compilados, faça assim:

Clique em File > Save As..> File Format: Disassembled ASL File

 

Notará que se tentar salvar no modo padrão "ACPI Machine Language Binary", o MaciASL não vai permitir isto.

 

Esse recurso é legal pois, caso já tenha partes já editadas, e não quer começar tudo denovo, então poderá continuar o trabalho em outra hora.

 

Bonus:

 

Tenho uns amigos que tem videos muito funcionais para quem tem alguma duvida de como aplicar patchs e quer aprender sobre DSDT.

1 - AppleAbreast (Bruxo)

Hackintosh - DSDT erro external (\TNOT)

HDMI   INTEL HD3000

HACKINTOSH AUDIO FUNCIONAL mov

 

2 - Fábio Qliskra (fabio_qliskra)

 

Manobra no Device HDEF

Aplicando o HPET

Possible operator timeout is ignored

 

Ainda estou adicionando coisas novas.

Conselhos e dicas ou duvidas, por favor comentem abaixo.

 

Creditos: Fabio Qlistra, pokenguyen, oldnapalm, e outros...


Edited by Allan, 06 January 2016 - 09:52 PM.


#2
Allan

Allan

    V.I.P. Member

  • Supervisors
  • 11,553 posts
  • Gender:Male

Seção 7

IORegistryExplorer

Attached File  Screen Shot 2014-04-30 at 10.06.09 PM.png   10.58KB   20 downloads

 

Essa ferramenta é imprescindível para uma boa edição da DSDT.

Ele lista todos os componentes do Hackintosh, por isso em alguns foruns você percebe que muito pedem uma copia do IORegistryExplorer,

este pode indicar se o device foi corretamente ativado.

 

Como fazer uma copia do IORegistryExplorer?

 

File - Save As...

Attached File  Screen Shot 2014-04-30 at 10.12.30 PM.png   85.64KB   19 downloads

 

Verifique se não está corrompido (abra), compacte e envie quando lhe é pedido.

 

Veja tudo o que falei com o video abaixo.

 

IORegistryExplorer

 

Como usar?

 

O exemplo que vou colocar agora, é como ver se o gerenciamento de energia está correto. Aqui eu uso IvyBridge, mas o gerenciamento de energia estava configurado como se fosse SandyBridge. Veja:

 

SandyBridge (errado para meu CPU)

post-1166456-0-70892100-1393262558_thumb

 

 

Agora como IvyBridge (correto).

post-1166456-0-57434600-1393262434_thumb

 

Viram que requer uma boa atenção pra perceber, e ver onde está errado. 

Por isso, com o uso do IORegistryExplorer, você conseguira ver os detalhes do seu Hack.


Edited by Allan Oliveira, 01 May 2014 - 01:36 PM.


#3
Pimentel

Pimentel

    Universe

  • Retired
  • 2,973 posts
  • Gender:Male
  • Location:Area 51

Olá

 

Prometeu e cumpriu.

 

Ainda nem parei para ler,vida corrida esses últimos dias, peço até desculpas por não estar dando o devido suporte, mas a vida é assim...

 

Obrigado Allan. :)



#4
Allan

Allan

    V.I.P. Member

  • Supervisors
  • 11,553 posts
  • Gender:Male

Opa, já tinha feito a um tempinho. 

 

Quanto mais descubro uns macetes sobre DSDT vou colocando aqui.

 

Vida corrida, sei o que é isso, só agora estou mais "tranquilo".

 

Abraços



#5
waltinho17

waltinho17

    InsanelyMac Protégé

  • Members
  • Pip
  • 20 posts

Muito bom Allan, este sim fez com que eu compreendesse melhor a respeito de DSDT.

 

está de parabéns, ótimo post,



#6
Allan

Allan

    V.I.P. Member

  • Supervisors
  • 11,553 posts
  • Gender:Male

Muito obrigado. 

Precisando de suporte, estou a disposição.  ;)



#7
erbas

erbas

    InsanelyMac Protégé

  • Members
  • Pip
  • 20 posts
  • Gender:Male
  • Location:São Paulo
  • Interests:Placa Mãe Asus P8H77-i

Bom Tópico Allan precisamos de mais pessoas assim como você disposta a compartilhar conhecimentos e ajudar!!!



#8
Allan

Allan

    V.I.P. Member

  • Supervisors
  • 11,553 posts
  • Gender:Male

Obrigado erbas!

E estou trazendo mais coisas para este forum, quero ensinar a todos de uma maneira simples e fácil de entender.



#9
JuniorGump

JuniorGump

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 257 posts
  • Gender:Male
  • Location:Paraíba, Brasil

Primeiramente, excelente tutorial, Alan. :D

 

Segundamente, me tira uma dúvida: como eu faço pra verificar se algo precisar ser patcheado no DSDT, se tá faltando e etc? Basta apenas usar o IOReg? 

 

Digo com relação as tabelas "HDEF, HPET, GFX0" e etc. 



#10
Allan

Allan

    V.I.P. Member

  • Supervisors
  • 11,553 posts
  • Gender:Male

Nem tudo precisa ser alterado, isso depende do seu uso.

 

Por ex: Se o Audio está habilitado usando a VoodooHDA, então não precisa de patch para Audio no DSDT, entende?  ;)



#11
Grown

Grown

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 146 posts
  • Gender:Male

Allan parabéns pelo topico

 

Segui suas instruções e estou com algumas dúvidas:

 

Se eu baixar a patcher de minha placa mãe devo inserir as patcher individuais, tipo ALC 889 HDEF, AHCI SATA orange icon, Shutdown Gigabyte?

 

Usei a ser minha placa mãe e todas descritas acima e apareceu o erro que está no print, como corrigir?

 

 

grato

 

Attached File  erros na dsdt.jpg   401.12KB   9 downloads



#12
MaLd0n

MaLd0n

    ...filling veins with juice of chaos...

  • Moderators
  • 16,140 posts
  • Gender:Male
  • Location:Rio de Janeiro
  • Interests:HacksLikeMacs

Allan parabéns pelo topico

 

Segui suas instruções e estou com algumas dúvidas:

 

Se eu baixar a patcher de minha placa mãe devo inserir as patcher individuais, tipo ALC 889 HDEF, AHCI SATA orange icon, Shutdown Gigabyte?

 

Usei a ser minha placa mãe e todas descritas acima e apareceu o erro que está no print, como corrigir?

 

 

grato

 

attachicon.giferros na dsdt.jpg

se vc está usando um dsdt modificado ou o clover está aplicando patches automaticamente...o problema está aí.

 

o ideal é sempre aplicar os patches ou o patch da mobo num DSDT virgem.  :rofl:



#13
Grown

Grown

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 146 posts
  • Gender:Male

se vc está usando um dsdt modificado ou o clover está aplicando patches automaticamente...o problema está aí.

 

o ideal é sempre aplicar os patches ou o patch da mobo num DSDT virgem.  :rofl:

Então devo colocar a DSDT virgem extraída do Windows na pasta EFI/CLOVER/ACPI/WINDOWS

 

Outra pergunta toda vez que preciso inserir algo novo na DSDT eu tenho que pegar ela virgem e inserir todas as patches novamente?



#14
Allan

Allan

    V.I.P. Member

  • Supervisors
  • 11,553 posts
  • Gender:Male

Então devo colocar a DSDT virgem extraída do Windows na pasta EFI/CLOVER/ACPI/WINDOWS

 

Isso não tem necessidade, afinal o Windows já usa seu DSDT (original do BIOS)

 

Outra pergunta toda vez que preciso inserir algo novo na DSDT eu tenho que pegar ela virgem e inserir todas as patches novamente?

 

 

Se for inserir um patch diferente ou até mesmo modificar o atual, não é necessário fazer tudo e novo.



#15
Grown

Grown

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 146 posts
  • Gender:Male
Estou com problema no repouso, no yosemite funcionava prefeito, retornava ao clico do mouse agora no el capitan ele não volta por completo alguns solução?

#16
Allan

Allan

    V.I.P. Member

  • Supervisors
  • 11,553 posts
  • Gender:Male

Se as configurações foram mantidas deveria funcionar normalmente.

 

Qual é o modo Sleep de ambos?



#17
Grown

Grown

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 146 posts
  • Gender:Male
Esse é o problema, nunca precisei me aprofundar tanto, quando agora na instalação do capitan pois montei a máquina mais compatível possível e esse problema não precisei corretor no yosemite, nem no Mavericks, nem no Lion e nem no snow. Eu não sei te dizer isso pq ainda não entendo disso.

#18
Allan

Allan

    V.I.P. Member

  • Supervisors
  • 11,553 posts
  • Gender:Male

Tudo bem.

 

Vamos fazer o seguinte, acredito que você deve ter 2 OS X ai certo?

Mesmo assim, rode esse comando no Terminal e poste o resultado aqui:

pmset -g


#19
Grown

Grown

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 146 posts
  • Gender:Male

Saiu esses resultados:

 

Active Profiles:

AC Power -1*

Currently in use:

 hibernatemode        0

 womp                 1

 networkoversleep     0

 sleep                0 (sleep prevented by apsd, AddressBookSourceSync)

 Sleep On Power Button 1

 ttyskeepawake        1

 hibernatefile        /var/vm/sleepimage

 disksleep            10

 displaysleep         0



#20
Allan

Allan

    V.I.P. Member

  • Supervisors
  • 11,553 posts
  • Gender:Male

Quais drivers tem na pasta drivers64UEFI?

 

Para ter o Sleep/Hibernation funcionando com UEFI é necessario usar o driver OsxAptioFix2Drv-64.efi







Also tagged with one or more of these keywords: dsdt, guia, ssdt

  Topic Stats Last Post Info

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2017 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy