Jump to content
Pimentel

Gerenciamento de energia para Sandy Bridge/Ivy Bridge/Haswell CPU

272 posts in this topic

Recommended Posts

Olá Pessoal

 

GUIA ATUALIZADO - Foi adicionado patch XCPM para 10.10

Antes de tudo é muito bom que tenhamos uma versão atualizada do Chameleon, então por favor pegue essa versão mais atualizada bem aqui no tópico oficial: http://www.insanelymac.com/forum/files/download/59-chameleon-22-svn/

Desde 10.7.4 para os CPUs SandyBridger e IvyBridger os P e C States - que são responsáveis pelo bom funcionamento de energia - não são mais fornecidos pelo Chameleon, ou seja, somente ativar GeneratePStates e GenerateCStates não adiatam mais...

Uma saída rápida é a utilização da kext NullCPUPowermanagement, mas eu não recomendo a utilização continua dessa kext, pois ela desabilita a kext AppleIntelCPUPowermanagement que é pelo gerenciamento de energia.

A solução mais viável e recomendada que lhe proporcionará um gerenciamento de energia bom, é a criação de uma SSDT que irá contem todos os P-States e C-States.

Passo-a-Passo

Criando a SSDT

Crie sua SSDT baseada no script do Pike R. Alpha
Rode no terminal esses comandos

curl -o ~/ssdtPRGen.sh https://raw.githubusercontent.com/Piker-Alpha/ssdtPRGen.sh/master/ssdtPRGen.sh
chmod +x ssdtPRGen.sh
./ssdtPRGen.sh

Após roda-lo você precisa colocar a Frequência Máxima e o Máximo TDP do seu CPU... veja essas infos sobre seu CPU aqui: http://ark.intel.com/
Esse é um exemplo de um i7 2600 que possui 3800Mhz(3,8Ghz) de frequencia maxima e 95 de TDP

sudo ./ssdtPRGen.sh 3800 95

Coloque a SSDT na pasta Extra e renomeie ssdt_pr para SSDT

 

Obs: Alguns CPUs já são auto-detectados pelo script, simplesmente o script já detecta a frequência máxima e o TDP, então se simplesmente após rodar o primeiro comando você for avisado para salvar a SSDT na pasta Extra(não pedindo para digitar sua max frequenc. e TDP como o guia manda), não se preocupe com isso, apenas confirme, pois o script já detectou tudo e criou sua SSDT e no momento já está pedindo para salvar o arquivo.

Patch na AppleIntelCPUPowermanagement

Nas mobos mais antigas é necessário patchear a kext AICPUPM para possibilitar a gravação na Bios, caso contrário você receberá um Kernel Panic por não poder gravar na Bios...

Faça o download do patch:AICPUPMpatch

Rode no terminal

cd ~/Downloads/AICPMPatch

Apenas encontre e liste...

sudo perl AICPMPatch.pl /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement

Depois dê patch no wrmsr para possibilitar a gravação na Bios

sudo perl AICPMPatch.pl /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement --patch

Após isso é necessário atualizar o cache

sudo touch /System/Library/Extensions

Kernel Patch para Haswell CPU(Kernel XCPM)

 

Desde a versão 10.8.5 um novo kernel foi implementado no OSX, ele se chamada XNU kernel(Xnu Cpu Power Management(xcpm))

 

Esse kernel tem o gerenciamento de energia movido para dentro dele, no passado usávamos a kext AppleIntelCPUPowermanagement para o controle do gerenciamento de energia e algumas Bios eram travadas, ou seja, não era permitido gravar informações nela, por isso foi criado o patch para a kext AICPUPM para solucionar esse problema(veja acima como patchear a kext AICPUPM

 

Mas com o gerenciamento movido para dentro do kernel(XNU kernel)a kext AICPUPM não é mais carregada e por isso o mesmo erro que estávamos tendo no passado com a kext AICPUPM(Kernel Panic)estamos tendo agora com o XNU kernel em alguns modelos de CPU haswell(principalmente modelos portáteis, alguns modelos Desktop não precisam de patch)

 

Para solucionar esse problema é necessário aplicar um patch no kernel.

 

Para 10.10 você precisa abrir o terminal e digitar:

cd /Volumes/Nome do seu HDD/System/Library/Kernels/

Note que em 10.10 o diretório do kernel foi alterado. Copie esse código perl, isso é para a versão 10.10, coloque linha por linha

sudo perl -pi -e 's|\xe2\x00\x00\x00\x02\x00\x00\x00|\x00\x00\x00\x00\x02\x00\x00\x00|g' kernel
sudo perl -pi -e 's|\xe2\x00\x00\x00\x4c\x00\x00\x00|\x00\x00\x00\x00\x4c\x00\x00\x00|g' kernel
sudo perl -pi -e 's|\xe2\x00\x00\x00\x90\x01\x00\x00|\x00\x00\x00\x00\x90\x01\x00\x00|g' kernel

Para 10.9.x e 10.8.5 você precisa rodar esse comando no terminal:

cd /Volumes/Nome do seu HDD/

Agora, copie esse código perl se você usa as versão 10.9.x

sudo perl -pi -e 's|\x74\x6c(\x48\x83\xc7\x28\x90\x8b\x05..\x5e\x00\x85\x47\xdc)\x74\x54(\x8b\x4f\xd8\x45\x85\xc0\x74\x08\x44\x39\xc1\x44\x89\xc1)\x75\x44(\x0f\x32\x89\xc0\x48\xc1\xe2\x20\x48\x09\xc2\x48\x89\x57\xf8\x48\x8b\x47\xe8\x48\x85\xc0\x74\x06\x48\xf7\xd0\x48\x21\xc2\x48\x0b\x57\xf0\x49\x89\xd1\x49\xc1\xe9\x20\x89\xd0\x8b\x4f\xd8\x4c\x89\xca)(\x0f\x30\x8b\x4f\xd8\x0f\x32\x89\xc0\x48\xc1\xe2\x20\x48\x09\xc2\x48\x89\x17\x48\x83\xc7\x30\xff\xce)\x75\x99(\x5d\xc3)\x90{7}|\x74\x73${1}\x74\x5b${2}\x75\x4b${3}\x66\x81\xf9\xe2\x00\x74\x02${4}\x75\x92${5}|g' mach_kernel

ou esse outro código perl se você usa a versão 10.8.5

sudo perl -pi -e 's|\x74\x69(\x48\x83\xc7\x28\x90\x8b\x05\xfe\xce\x5f\x00\x85\x47\xdc)\x74\x51(\x8b\x4f\xd8\x45\x85\xc0\x74\x05\x44\x39\xc1)\x75\x44(\x0f\x32\x89\xc0\x48\xc1\xe2\x20\x48\x09\xc2\x48\x89\x57\xf8\x48\x8b\x47\xe8\x48\x85\xc0\x74\x06\x48\xf7\xd0\x48\x21\xc2\x48\x0b\x57\xf0\x49\x89\xd1\x49\xc1\xe9\x20\x89\xd0\x8b\x4f\xd8\x4c\x89\xca)(\x0f\x30\x8b\x4f\xd8\x0f\x32\x89\xc0\x48\xc1\xe2\x20\x48\x09\xc2\x48\x89\x17\x48\x83\xc7\x30\xff\xce)\x75\x9c(\x5d\xc3)\x90{7}(\x90{3})|\x74\x70${1}\x74\x58${2}\x75\x4b${3}\x66\x81\xf9\xe2\x00\x74\x02${4}\x75\x95${5}${6}|g' mach_kernel

Por último atualize o cache

sudo touch /System/Library/Extensions

Pronto! Kernel patcheado e o XCPM está trabalhando perfeitamente em seu CPU haswell

 

OBS1: XCPM só trabalha nos CPUs Ivy Bridger e Haswell, sendo que, os CPUs Ivy Bridger utilizam por padrão o gerenciamento de energia dado pela kext AICPUPM, para usar o gerenciamento de energia dado pelo kernel XCPM é necessário ativar essa flag(Chameleon)/argumento(Clover):

-xcpm

Os CPUs Haswell utilizam o gerenciamento XCPM por padrão e não mudam. O gerenciamento XCPM não suporta os CPUs Sandy Bridger, então quem usa SB pode ficar tranquilo acerca disso.

OBS2: Mesmo patcheando o kernel XCPM, você irá precisar patchear a kext AICPUPM, caso a sua BIOS seja trancada para gravação.

OBS3: Caso você não tenha nenhum problema com KP, não é necessário patchear o kernel, mas, em alguns casos, patchear o kernel ajudou em adicionar alguns states de energia.

 

OBS4: O Clover bootloader já tem o patch embutido, você só precisa editar o config.plist para habilitar o patch

<key>KernelAndKextPatches</key>
<dict>
        <key>KernelPm</key>
        <true/>
</dict>

Então, se você habilitar isso no Clover não é necessario patchear o kernel, porque o Clover irá fazer isso para você :)

 

Ajustes finais

Para fazer com que o Chameleon reconheça a sua SSDT, habilite DropSSDT no org.chameleon

<key>DropSSDT</key>
<string>Yes</string>

Não instale a NullCPUPM e não habilite P e C States no org.chameleon...

 

Não se esqueçam de futuramente criar uma DSDT para auxiliar no gerenciamento de energia

 

OBS: Para quem está com dificuldades com gerenciamento de energia... dê uma olhada para ver se as kexts: X86PlatformPlugin, ACPI_SMC_PlatformPlugin, AppleLPC estão carregadas, rode kextstat no terminal para ver...

Boa sorte para todos que tentarem este guia, eu somente juntei tudo em um único tutorial para facilitar a compreensão sobre gerenciamento de energia em Sandy e Ivy Bridger, mas  todos os créditos vão para os respectivos donos das ferramentas maravilhosas que possibilitam o gerenciamento de energia em nossas CPUs

 

Créditos: Pike R. Alpha

                flAked

                RevoGirl

                ReHabMan: http://www.insanelymac.com/forum/topic/302376-guide-patching-the-kernel-for-haswell-cpus-xcpm-early-reboot/

Edited by PimentelX86
Foi adicionado patch XCPM para 10.10

Share this post


Link to post
Share on other sites
Advertisement

Olá

Eu não sou utilizador do Clover, mas creio que para CPUs Sandy e Ivy Bridger O Clover já gere automaticamente os P e C States...

Creio eu que não é necessário criar SSDT e fazer todo esse processo que eu realizei ai, pois o Chameleon não gera mais isso automaticamente por isso com ele é necessário fazer esse processo...

Somente deixe P e C States ativados no config.plist e veja os resultados... creio já ser o suficiente.

Uma outra coisa que eu acho muito bom de se fazer é aplicar o patch na AICPUPM, mesmo que você não vá fazer esse processo... você pode injetar esse processo através do config.plist deixando a opçõa AsusAICPUPM ativada...
 

Share this post


Link to post
Share on other sites

Olá

 

Eu não sou utilizador do Clover, mas creio que para CPUs Sandy e Ivy Bridger O Clover já gere automaticamente os P e C States...

 

Creio eu que não é necessário criar SSDT e fazer todo esse processo que eu realizei ai, pois o Chameleon não gera mais isso automaticamente por isso com ele é necessário fazer esse processo...

 

Somente deixe P e C States ativados no config.plist e veja os resultados... creio já ser o suficiente.

 

Uma outra coisa que eu acho muito bom de se fazer é aplicar o patch na AICPUPM, mesmo que você não vá fazer esse processo... você pode injetar esse processo através do config.plist deixando a opçõa AsusAICPUPM ativada...

 

Sim, o clover ja gera PeC states para ambos os CPUS sandy e ivy.

mas mesmo assim ainda vc pode usar seu SSDT Olhe aqui: http://clover-wiki.zetam.org/Configuration/ACPI#SSDT

Share this post


Link to post
Share on other sites

Olá

Valeu por confirmar Mirone...

Eu estava usando Clover, mas estava tendo muito problemas com P-States(no meu caso somente ativar P e C States não funcionava... tinha que colocar essa SSDT gerada pelo script)no meu hack e precisava de um hack funcional para logo, então voltei para o Chameleon... não esqueço do suporte que vocês me deram acerca do Clover. E ainda vou testar o Clover outra hora.

Share this post


Link to post
Share on other sites

Olá

 

Muito bom JorgeMax, Allan possui alguns tutos bem interessantes sobre Clover... :)

 

Quando tiver tempo e outro HDD, vou testar o Clover e ver o que acontece ao tentar gerenciamento de energia com ele gerado pelo Script...

Share this post


Link to post
Share on other sites

Olá

 

Não esqueça de habilitar DropSSDT=Yes...

 

Em outro post tu ainda está "lutando" para ajustar o OSX+Windows, então... Quando tudo estiver ok, ajuste seu gerenciamento de energia.

Share this post


Link to post
Share on other sites

Olá

Obrigado Allan.

Claro que pode... isso não interfere em nada, pois quando o gerenciamento de energia for passado para o kernel XNU a kext AICPUPM não será mais carregada, mas mesmo assim, como eu já falei é necessário que ela seja patcheada(caso sua Bios seja trancada), mesmo que não vá usa-la, é necessário patchear....

O patch kernel não é necessário em CPUs Ivy somente em Haswell...

Boa sorte!

Share this post


Link to post
Share on other sites

Olá

 

Obrigado Allan.

 

Claro que pode... isso não interfere em nada, pois quando o gerenciamento de energia for passado para o kernel XNU a kext AICPUPM não será mais carregada, mas mesmo assim, como eu já falei é necessário que ela seja patcheada(caso sua Bios seja trancada), mesmo que não vá usa-la, é necessário patchear....

 

O patch kernel não é necessário em CPUs Ivy somente em Haswell...

 

Boa sorte!

 

Perfeito.

 

Acabei de testar aqui, e o sistema não subiu, mas o gerenciamento de energia está perfeito, com todas as kexts carregadas.

 

Obrigado Pimentel.  ;)

Share this post


Link to post
Share on other sites

Olá

 

Como assim o sistema não subiu? Mas ficou tudo ok depois disso? Como fez para subir de novo?

 

Mais uma vez, de nada.

 

Outra coisa somente: Não cite(quote) um texto por inteiro, isso deixa uma poluição visual no fórum... cite apenas o que interessa no momento. Agradeço a compreensão :)

Share this post


Link to post
Share on other sites

Bem quando inseri o código no config.plist e reiniciei a tela de boot apenas aparece a maça, e volta pra tela do BIOS.

 

E como fiz para subir normalmente, eu fui no menu de opções de boot do Clover, e retirei o -xcpm da seção "Arguments", isso é temporário, pois não retira permanentemente, pois no sistema tive de tirar manualmente depois.

 

E o sistema ficou tudo ok, estava apenas testando.

 

Sobre o "quote" tudo bem, quando citado o texto todo realmente fica poluído.

 

Vlw

Share this post


Link to post
Share on other sites

Olá

 

Pelo menos o teste foi muito bom... :)

 

O que eu realmente quero é que esse guia seja útil para os usuários do fórum.

 

Depois você me falar mais acerca daquela sua sugestão... Estou de "ouvidos" bem abertos para entender. :)

Share this post


Link to post
Share on other sites

Amigos, é necessário mesmo estas kexts serem carregadas: "ACPI_SMC_PlatformPluginAppleLPC"?

Pois só achei a kext "X86PlatformPlugin" carregada. Vejam:

Jorge-Kexts Carregadas.rtf

 

O meu sistema está funcionando, sem nenhum erro relatado até o momento. E em relação ao "patch" na "AppleIntelCPUPowermanagement", eu não apliquei e nem adicionei o "-xcpm" no "config.plist" do Clover.

 

Uso o processador da "assinatura". Criei somente o "SSDT" e adicionei o TDP e a freqüência máxima do mesmo. Minha placa-mãe utiliza BIOS UEFI com o Clover instalado neste modo.

Mas não vejo carregada a kext "AppleLPC".

 

Share this post


Link to post
Share on other sites

Então amigo Jorge, para ter o gerenciamento completo, você tem que ter estas kexts carregadas.

 

Já vi que algumas placas Gigabyte realmente não é preciso aplicar o patch na AICPM, mas para carregar a LPC é preciso que você procure o device na DSDT e aplique o patch nela.

 

No config.plist do Clover, a opção AsusAICPUPM está marcada?

 

Sem falar que para carregar estas kexts, você precisa aplicar alguns patchs na DSDT.

Como:

*DTGP

*New_HPET

*IRQs

*RTC

Estes patchs você encontra aqui: http://olarila.com/forum/patches.php

 

Mas tenha certeza do que vai aplicar, qualquer coisa estamos ai.

Share this post


Link to post
Share on other sites

Amigo, dê uma olhada de novo nos dois arquivos: JorgeMax.zip

 

Eu estou lhe enviando o "DSDT, SSDT e o Config.plist".

 

Eu não sei se todos esses "patchs" que você mencionou estão aplicados no "DSDT".

Share this post


Link to post
Share on other sites

Olá

 

Na realidade a kext ACPI_SMC_PlatformPlugin não é tão necessária assim, somente em alguns casos onde existe algum erro causado pela falta dela(geralmente é um KP)é que ela precisa ser carregada. Se não está tendo problema nenhum então fica gelo em relação a isso. Mas a X86PlatformPlugin é obrigatoria para Ivy e Haswell

 

A kext AppleLPC precisa ser carregada ou o sleep/wake não irão funcionar bem...

 

A sua mobo é atual e é UEFI, como eu mencionei, algumas mobos atuais não precisam do patch no AICPUPM, pois tem a Bios destravada... se não patcheou, mas não teve KP, então deixa sem patch mesmo...

 

Não confunda as coisas... sua CPU é Ivy então o gerenciamento pelo XCPM kernel é opcional... se está tudo ocorrendo bem com o gerenciamento dado pela AICPUPM então não há necessidades de trocar para o XCPM

Eu não sei se todos esses "patchs" que você mencionou estão aplicados no "DSDT".

 

 

Como não sabe? Você é quem patcheou... não podemos advinha se patcheou ou não... inclua nesse DSDT o patch LPC(para carregar a kext AppleLPC)

Aqui um guia sobre DSDT: http://olarila.com/forum/viewtopic.php?f=7&t=646

Share this post


Link to post
Share on other sites

PimentelX86. Eu não patcheei, e sim eu pedi para o Artur patchear e não faz muito tempo. 


Amigo o patch "LPC" para Ivy Bridge não tem? Qual daqueles patchs eu aplico?

Share this post


Link to post
Share on other sites

Olá

Então faça uma para você... não é tão difícil assim quando os patches já estão feitos e prontos para aplicar... Dúvidas olhe no guia.

Tenta adicionar o LPC Sandy Bridger mesmo, vamos ver no que dá...

Share this post


Link to post
Share on other sites

Olá

 

Então o melhor caminho é deixar quieto... eu por exemplo não entendo muito bem sobre DSDT...

E quem fazia esses patches na sua maioria essa o Mald0n, ele atualmente simplesmente deixou de fazer, então... fica por nossa conta agora...

 

Procura pelo google se encontra alguma solução... e fato o importante no gerenciamento de energia é ter todos os states trabalhando... se já tem isso, então fica tranquilo...

 

Um Abraço.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

Announcements

  • Similar Content

    • By MaLd0n
      -Donations with PayPal
      https://tinyurl.com/r2bvzm7
       
      -Donations with Bitcoin
      33HeGCuCSh4tUBqdYkQqKpSDa1E7WeAJQ3
       
      -Donations with PicPay 
      @danielnmaldonado
        Nehalem, SandyBridge, IvyBridge, Haswell, Broadwell   https://www.olarila.com/topic/5794-guide-install-macos-with-olarila-image-step-by-step-install-and-post-install-windows-or-mac/   Skylake, Kabylake and Coffeelake is here https://www.olarila.com/topic/5794-guide-install-macos-with-olarila-image-step-by-step-install-and-post-install-windows-or-mac/   Install MacOS with Olarila Image, Step by Step, Install and Post Install
       
      https://www.olarila.com/topic/5794-guide-install-macos-with-olarila-image-step-by-step-install-and-post-install-windows-or-mac/
          First...   ***Update bios to last available version!***   If you need a full patched DSDT...  -Extract tables with F4 key in Clover boot screen! -Run it and send me files! RunMe.app   Installation   --Create a bootable copy of macOS Sierra / High Sierra / Mojave   https://github.com/chris1111/Create-Install-Media/releases   --Install Clover in USB stick   https://github.com/CloverHackyColor/CloverBootloader/releases   --Replace with my Clover folder https://www.olarila.com/topic/5676-clover-folder-for-all-chipsets/   --Install Sierra/High Sierra and boot into system!   Post Installation --Install Clover and replace with my folder   https://www.olarila.com/topic/5676-clover-folder-for-all-chipsets/   --Reboot and activate video!   Bingo!   Now you need a fine tune! DSDT time!   --DSDT   Patches -FIX ERRORS AND WARNINGS -HPET -SATA -DMAC -SLPB -DARWIN -LPC -XHCI -PLUGIN TYPE -XXXX to HDEF -HDEF -RTC -IRQs -SBUS -BUS1 -MCHC -ALS0 -SHUTDOWN -LAN -USBX -PMCR -EC -PNLF -HDMI
       
      --Power Management
      - 1 Generation Intel Processors, use Generate P and C States in config.plist
      - 2 and 3 Generations Intel Processors, Generate SSDT with Piker script and drop CpuPm and Cpu0Ist SSDTs
      ssdtPRGen.command.zip
      Credits-https://github.com/Piker-Alpha/ssdtPRGen.sh
      - 4 Generation+ Intel Processors, use PluginType=1 in DSDT, SSDT or Clover config.plist
       
      for check Power, Frequency, Temperature and Utilization, use it
       
      Install Intel Power Gadget.pkg.zip
       
      --Brightness
      Install .app, select the required permission and reboot. Work in F1 / F2 keys!
      NativeDisplayBrightness.app.zip


      https://github.com/Bensge/NativeDisplayBrightness/releases
      *in some cases .app don't work, check patches in config.plist inside Clover folder Post Install
       
      --Clover
       
      https://sourceforge.net/projects/cloverefiboot/files/Installer/
       
      --AUDIO
       
      Use DSDT + AppleAlc
       
      --install Lan driver by Mieze
        -Atheros   http://www.insanelymac.com/forum/files/file/313-atherose2200ethernet/   -Intel   http://www.insanelymac.com/forum/files/file/396-intelmausiethernet/   -Realtek   http://www.insanelymac.com/forum/files/file/88-realtekrtl8111-binary/   --Links   -FakeSMC   https://bitbucket.org/RehabMan/os-x-fakesmc-kozlek   -Audio   https://github.com/vit9696/AppleALC http://www.insanelymac.com/forum/topic/314406-voodoohda-289/   -USB   https://bitbucket.org/RehabMan/os-x-usb-inject-all/downloads   It's time to Rock   -Credits and thanks to the old and new people in the community who developed patches, kexts and bootloaders!   Apple, Slice, Kabyl, usr-sse2, jadran, Blackosx, dmazar, STLVNUB, pcj, apianti, JrCs, pene, FrodoKenny, skoczy, ycr.ru, Oscar09, xsmile, SoThOr, RehabMan, Download-Fritz, Zenit432, cecekpawon, Intel, Oracle, Chameleon Team, crazybirdy, Mieze, Mirone, Oldnapalm, netkas, Elconiglio, artut-pt, ErmaC, Pavo, Toleda, Master Chief and family, bcc9, The King, PMheart, Sherlocks, Micky1979, vit9696, vandroiy2013, Voodoo Team, Pike R. Alpha, lvs1974, Austere.J, CVad and many, many, many others!   We're all here to have fun and learn from each other!  
    • By Kailash
      I successfully managed to install Hackintosh on my Lenovo Ideapad 520 but now I don't have audio, brightness control feature or battery indicator. My audio driver is an ALC230. I am new to all this. What do I do to solve this? I have attached my EFI files below.
      EFI.zip
    • By chatelp
      Hi all !
       
      I'm migrating from Clover to OpenCore and stuck on an ACPI error at boot:
      ACPI Error [_STA] Namespace lookup failure, AE_ALREADY_EXISTS This comes from trying to load my custom SSDT-EC tables.
       
      From what I gather, the preferred method of dealing with EC0 for Desktops with OC is to add an _STA method to EC0 to change return code to 0, and then to add a new fake EC device. Both done via SSDT-EC.
       
      Problem is, my EC0 defined in the system DSDT already has an _STA method. And it looks like it can't be overridden through SSDT redefinition at boot. Is this excepted ACPI behavior? Is it not possible to override/redefine methods like _STA? If so, what other option do I have?
       
      Here is the original EC0 device in DSDT
      Device (EC0) { Name (_HID, EisaId ("PNP0C09")) // _HID: Hardware ID Name (_UID, One) // _UID: Unique ID Name (_GPE, 0x6E) // _GPE: General Purpose Events Method (_STA, 0, NotSerialized) // _STA: Status { Return (0x0F) } ....  
      Here is my very standard SSTD-EC for Skylake:
       
      /* * AppleUsbPower compatibility table for Skylake+. * * Be warned that power supply values can be different * for different systems. Depending on the configuration * these values must match injected IOKitPersonalities * for com.apple.driver.AppleUSBMergeNub. iPad remains * being the most reliable device for testing USB port * charging support. * * Try NOT to rename EC0, H_EC, etc. to EC. * These devices are incompatible with macOS and may break * at any time. AppleACPIEC kext must NOT load. * See the disable code below. * * Reference USB: https://applelife.ru/posts/550233 * Reference EC: https://applelife.ru/posts/807985 */ DefinitionBlock ("", "SSDT", 2, "ACDT", "SsdtEC", 0x00001000) { External (_SB_.PCI0.LPCB, DeviceObj) /* * Uncomment replacing EC0 with your own value in case your * motherboard has an existing embedded controller of PNP0C09 type. * * While renaming EC0 to EC might potentially work initially, * it connects an incompatible driver (AppleACPIEC) to your hardware. * This can make your system unbootable at any time or hide bugs that * could trigger randomly. */ External (_SB_.PCI0.LPCB.EC0, DeviceObj) Scope (\_SB.PCI0.LPCB.EC0) { Method (_STA, 0, NotSerialized) // _STA: Status { If (_OSI ("Darwin")) { Return (0) } Else { Return (0x0F) } } } Scope (\_SB) { Device (USBX) { Name (_ADR, Zero) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { If ((Arg2 == Zero)) { Return (Buffer (One) { 0x03 // . }) } Return (Package (0x08) { "kUSBSleepPowerSupply", 0x13EC, "kUSBSleepPortCurrentLimit", 0x0834, "kUSBWakePowerSupply", 0x13EC, "kUSBWakePortCurrentLimit", 0x0834 }) } } Scope (\_SB.PCI0.LPCB) { Device (EC) { Name (_HID, "ACID0001") // _HID: Hardware ID Method (_STA, 0, NotSerialized) // _STA: Status { If (_OSI ("Darwin")) { Return (0x0F) } Else { Return (Zero) } } } } } }  
      I saw this other similar post but can't find a working solution in it: https://www.insanelymac.com/forum/topic/341585-hpet/?_fromLogin=1
       
       
    • By MacKonsti
      Hello everyone, I hope you are well and safe. Long time Hackintosh user, didn't post new topics really as most solutions are here, just need some good digging around.
       
      However, there has been no talk about renaming "bare" PCI devices shown in IORegistryExplorer such as e.g. pci8086,1911@8 or pci8086,9def@14,2 to something more meaningful such as ACPI Devices like (SPI1) or (PGMM) or (SHRM) etc. etc.
       
      I have been experimenting a lot with different SSDT ways of making code and injecting the compiled AML via Clover, in preparation for OpenCore, but I cannot succeed for this one.
       
      Why is this needed? For starters, I have two good reasons.
       
      a) My device pci8086,3ed0@0 is MCHC per lspci and despite Clover being able to inject the parameter AddMCHC, I cannot achieve the same result via SSDT injection instead, meaning OpenCore would not do it either (well, for now).
       
      b) Moreover, I discovered by accident from another config.plist in some Github repository, that my device pci8086,9df9@12 that is listed in lspci as Coffee Lake Thermal Controller [8086:9df9] can be set to being compatible with Apple's accepted and combatible device-id of pci8086,9d21 via Clover injection in Devices -> Properties section or via SSDT, but I cannot make it get a human-friendly ACPI name at all so it get to work and load kext com.apple.driver.AppleIntelPCHPMC.
       
      Believe me, I have a few structures of code... Here is my code (compiles 100%) as an example and below, a blocking issue as well.
       
      /* * Intel ACPI Name Space Architecture for NUC8i7BEH2 device * * NOTES: * Assigned PCI device generic (PGMM) and working (PMCR) to undefined devices in IODeviceTree. * Added new (SBUS) sub-system (BUS0) and (DVL0) devices for improved vanilla detection. * Added new (LPCB) sub-system (EC) device for improved Catalina detection. */ DefinitionBlock ("SSDT-OTHER.aml", "SSDT", 2, "Clover", "OTHER", 0x00000000) { External (_SB_.PCI0, DeviceObj) External (_SB_.PCI0.LPCB, DeviceObj) External (_SB_.PCI0.LPCB.H_EC, DeviceObj) External (_SB_.PCI0.SBUS, DeviceObj) Scope (\_SB.PCI0) { // Device (MCHC) // Intel Corporation Host Bridge/DRAM Registers [8086:3ed0] // { // Name (_ADR, 0x00000000) // } // Device (PGMM) // Intel Corporation Core Processor Gaussian Mixture Model [8086:1911] // { // Name (_ADR, 0x00080000) // } Device (PMCR) // Intel Corporation Coffee Lake Thermal Controller [8086:9df9] { Name (_ADR, 0x00120000) } // Device (SRAM) // Intel Corporation Coffee Lake Shared SRAM [8086:9def] // { // Name (_ADR, 0x00142000) // } // Device (SPI1) // Intel Corporation Coffee Lake Serial Bus SPI Controller [8086:9da4] // { // Name (_ADR, 0x001F5000) // } } Scope (\_SB.PCI0.LPCB) // Intel Corporation Coffee Lake LPC Controller [8086:9d84] { Device (EC) { Name (_HID, "ACID0001") Method (_STA, 0, NotSerialized) { If (_OSI ("Darwin")) { Return (0x0F) } Else { Return (Zero) } } } } // Do not rename EC0, H_EC, etc. to EC as these devices are incompatible with macOS // and may break at any time; AppleACPIEC kext must NOT load. If your motherboard // has an existing Embedded Controller of PNP0C09 type, use the code below to disable. Scope (\_SB.PCI0.LPCB.H_EC) { Method (_STA, 0, NotSerialized) { If (_OSI ("Darwin")) { Return (Zero) } Else { Return (0x0F) } } } Scope (\_SB.PCI0.SBUS) // Intel Corporation Coffee Lake SMBus Controller [8086:9da3] { Device (BUS0) { Name (_ADR, Zero) Name (_CID, "smbus") Device (DVL0) { Name (_ADR, 0x57) Name (_CID, "diagsvault") Method (_DSM, 4, NotSerialized) { If (LEqual (Arg2, Zero)) { Return (Buffer (One) {0x57}) } Return (Package (0x02) {"address", 0x57}) } } } } } So if I use External (_SB_.PCI0, DeviceObj) reference on top, then a Scope (\_SB.PCI0) under it, I found out after many tests and reboots that device with 0x00120000 address is somehow allowed to be assigned a "name" in IODeviceTree but not any others! If I enable the other ones, nothing gets injected in this SSDT as a result !
       
      00:00.0 Host bridge [0600]: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers [8086:3ed0] (rev 08) 00:08.0 System peripheral [0880]: Intel Corporation Core Processor Gaussian Mixture Model [8086:1911] 00:12.0 Signal processing controller [1180]: Intel Corporation Coffee Lake Thermal Controller [8086:9df9] (rev 30) 00:14.2 RAM memory [0500]: Intel Corporation Coffee Lake Shared SRAM [8086:9def] (rev 30) 00:1f.5 Serial bus controller [0c80]: Intel Corporation Coffee Lake SPI Controller [8086:9da4] (rev 30) I guess this is likely due to the way my Intel NUC8i7BEH's BIOS and ACPI code is written ?
       
      What's amazing is that if we use Clover's AddMCHC option, in MacIASL I see inside the main DSDT a new code portion added in the _SB.PCI0 very very end at the bottom:
       

       
      But if I uncomment the code for adding Device (MCHC) in my SSDT code above, the device will not get injected ! This is nuts.
       
      @MaLd0n I have been following most of your work for many years and know that you have better knowledge of ACPI code than me, can you possibly advise how we can rename these "naked" PCI devices in IORegistry Explorer to something meaningful like Device (XYZ) ? Is this possible via SSDT code injection?
       
      Anyone else you have in mind, that could help? @Hervé peut-être, maybe you?
       
      The idea is that, except device at 0x00120000 address being accepted (by chance!) and renamed as Device (PMCR) that helps enable the native power-management by injecting later in Clover's configuration a <key>compatible</key> ID, all others including MCHC cannot be assigned a name.
       
      Your help is appreciated... I tried ways to define Devices with root " \ " reference as in External (\_SB_.PCI0, DeviceObj) and Scope (\_SB.PCI0) and without this, for the love of me I cannot understand how to do it.
       
      Moreover, having disassembled all AML files obtained at Clover Boot time, there is no reference to a device with addresses Name (_ADR, 0x00000000), Name (_ADR, 0x00080000), Name (_ADR, 0x00120000) or Name (_ADR, 0x001F5000) anywhere...
       
      Could it be that they do not belong to Scope (\_SB.PCI0) at all ? But Hackintool does report them as being under PciRoot(0x0) ! Could it be differently under some other device instead? ACPIPlane in IORegistryExplorer doesn't show anything
       
      IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/MCHC@0 --> PciRoot(0x0)/Pci(0x0,0x0) IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PMCR@12 --> PciRoot(0x0)/Pci(0x12,0x0) IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/pci8086,9def@14,2 --> PciRoot(0x0)/Pci(0x14,0x2) IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/pci8086,9da4@1F,5 --> PciRoot(0x0)/Pci(0x1F,0x5)  
      Thanks... hope I can resolve this before spending time migrating to OpenCore...!
       
      Here's a screenshot of the "bare" pci8086,xxxx devices without injection of my code at all, except Clover's AddMCHC option.

    • By Cimmerian_Iter
      Hello everyone i have a sony vaio svd1321Z9E intel i7-4500U/4400HD and 8G of ram and using opencore 5.6
      I made a battery patch following rehabman tutorials and i think the patch looks good, but when i try to load it with the kext my pc won't boot to the home menu.

      Like i it does the verbose boot then show me a grey glitchy screen with scattered apple logo.

      Normally it should give this screen then immediately turn into a black apple loading screen (still glitchy) and then return back to normal once it boot into the desktop menu of mac os. (my gpu problem that i never managed to fix but doesn't bother me)

      I would like to know how i could debug and solve this problem. Any help is appreciated.
      Here are my DSDT, config and my battery patch

       
      config.plist
      DSDT.dsl
      SSDT-BATT-3.aml
×