macOS Laptoplar için Güç Yönetimi

Güç yönetimi, bir laptopa macOS kurulurken yapılması gereken önemli şeylerden biridir. Sıcaklık/gürültü ve batarya ömrü sorunları için NullCPUPowerManagement kullanmak iyi bir çözüm olmuyor.

Neyse ki Clover ile, NullCPUPowerManagement'e ihtiyacımız kalmıyor.

Uyku modunu devre dışı bırakmak

Hackintosh'da uyku modunun (diski durdurmak/s4 sleep) desteklenmediğini anlayalım.

O yüzden kapatmalıyız.
Kod:
sudo pmset -a hibernatemode 0
sudo rm /var/vm/sleepimage
sudo mkdir /var/vm/sleepimage

Güncellemelerden sonra her zaman kontrol edip devre dışı bırakmayı unutmayın.

Uyku modu ile alakalı diğer ayarları da kapatmak gerekli.
Kod:
sudo pmset -a standby 0
sudo pmset -a autopoweroff 0

ssdtPRGen.sh kullanarak özel SSDT.aml yapmak

Not: Eğer aşağıdaki rehberi takip edip yaptıysanız ve Haswell veya daha güncel bir işlemciye sahipseniz, burada sizin yapabileceğiniz bir şey kalmıyor. Rehberdeki plist'lerde CPU PM halihazırda etkin halde. Haswell veya daha güncel sistemlerde, gerekli ayarlamalar Clover(config.plist/ACPI/SSDT/Generate/PluginType=true) tarafından inject olduğu için ssdtPRgen.sh tarafından oluşturulan SSDT.aml'ye ihtiyacımız kalmıyor.

Fakat Sandy/Ivy Bridge için ssdtPRGen.sh scriptini kullanın: Piker-Alpha/ssdtPRGen.sh

Kullanmanız için gerekli adımlar README içerisinde bulunuyor.

Oluşturulan SSDT.aml EFI bölümünde bulundurulmalı. Tam olarak /EFI/Clover/ACPI/patched/SSDT.aml.

Adımlar

İlk olarak SSDT.aml oluşturmak için gerekli betiği Terminal kullanarak sistemimize indirelim. Bunun için;
macOS içinde Terminal uygulamasını açın ve aşağıdaki kodları sıra ile girin:
Kod:
cd ~
curl -o ./ssdtPRGen.sh https://raw.githubusercontent.com/Piker-Alpha/ssdtPRGen.sh/master/ssdtPRGen.sh
chmod +x ./ssdtPRGen.sh

Güncel sistemler (Broadwell, Skylake ve daha sonrası) şu kodları kullanın.
Kod:
cd ~
curl -o ./ssdtPRGen.sh https://raw.githubusercontent.com/Piker-Alpha/ssdtPRGen.sh/Beta/ssdtPRGen.sh
chmod +x ./ssdtPRGen.sh

Bu işlemden sonra betiği şu komut ile çalıştırın:
Kod:
./ssdtPRGen.sh

Bazı Ivy Bridge işlemciler için "-w 2" veya "-w 3" kullanmanız gerekebilir. (Stabildir, beta için "-c 2" veya "-c 3" kullanabilirsiniz).

Not: Eğer bu betik tarafından desteklenmeyen bir işlemciniz varsa, bu işlemcinin bilgilerini sizin girmeniz gerekir.

Örnek olarak i7-4720HQ için kodu şu şekilde girmeniz gerekir:
Kod:
./ssdtPRGen.sh -p 'i7-4710HQ' -f 2600 -turbo 3600

Bu terminal kodu ile i7-4720HQ için “i7-4710HQ” kullanarak turbo ve turbo olmayan frekanslar geçersiz kılınır ve betiğin sorunsuzca SSDT üretmesi sağlanır.

Betiği çalıştırdıktan sonra sonucu /Extra klasörüne kopyalamak isteyip istemediğinizi soracak. Burada klavyede “n” tuşuna basın. Aynı şekilde SSDT.aml için de aynı soru gelecek. Bunun için de “n” seçin.

Bu işlemden sonra dosyalar şurada oluşturulacak: ~/Library/ssdtPRgen/SSDT.aml.

EFI bölümünüzün /Volumes/EFI kısmına mount edildiğini farz ederek, dosyayı EFI'de /EFI/Clover/ACPI/patched/SSDT.aml bölümüne kopyalayalım.
Kod:
cd ~
cp ~/Library/ssdtPRGen/ssdt.aml /Volumes/EFI/EFI/Clover/ACPI/patched/SSDT.aml

PM'yi test etmek

Özel SSDT dosyamızı kurduktan sonra sistemi yeniden başlatıp test etmeliyiz. AppleIntelInfo.kext kullanarak test edin.

AppleIntelInfo.kext'i buradan indirin.

Kext'i sakın /L/E veya /S/L/E'ye kurmayın.

Kext'i ZIP'den çıkarıp yüklenebilecek bir yere kopyalayın:
Kod:
cd ~/Downloads
sudo mkdir /kexts
sudo cp -R AppleIntelInfo.kext /kexts

Şimdi yükleyelim:
Kod:
sudo kextutil /kexts/AppleIntelInfo.kext

Şimdi bilgisayarı, görevleri, benchmark vb. şeyleri değiştirmek için kullanalım.
AppleIntelInfo.kext sonuçlarına bakabilirsiniz:
Kod:
# view with page control
sudo cat /tmp/AppleIntelInfo.dat|more

Veya TextEdit'de yükleyebileceğiniz bir kopyasını yapın:
Kod:
# create copy of it
sudo cp /tmp/AppleIntelInfo.dat AppleIntelInfo.txt
# open in TextEdit
open AppleIntelInfo.txt

İlaveten, Ivy Bridge ve sonrası (Ivy, Haswell, Broadwell, Skylake, KabyLake, vb.), IORegistryExplorer'i çalıştırıp X86PlatformPlugin'in CPU0 node'un altında çalıştığından emin olmalısınız.

Son Denetim:

Yukarıda kurulumu ve testi anlattık. Ancak bu işlemin doğru olarak çalışması için bazı ayarlarımızı kontrol etmemiz gerek. Bunlar;
  • SSDT.aml, EFI/Clover/ACPI/patched içinde olmalı (Sadece Sandy/Ivy Bridge için).
  • config.plist/KernelAndKextPatches/AsusAICPUPM=true (Haswell öncesi) olarak işaretli olmalı.
  • config.plist/KernelAndKextPatches/KernelPm=true (Haswell sonrası) olarak işaretli olmalı.
  • config.plist/KernelAndKextPatches/KernelLapic=true olarak işaretli olmalı.
  • İşlemciniz ile uygun SMBIOS olduğuna dikkat edin (config.plist/SMBIOS).
  • Rollback(Geri alma) olmadığından emin olun: AppleACPIPlatform.kext.
  • NullCPUPowerManagement.kext olmadığından emin olun. (Genellikle bu anlama da gelir: AppleIntelCPUPowerManagement)

AppleACPIPlatform ve EmbeddedControl

Not: Sandy Bridge'de PM için, AppleACPIPlatform.kext rollback yapmak mümkün ancak önermiyoruz. Bu yüzden rollback yapılmış AppleACPIPlatform.kext’e dahil olan batarya yönetimi paketlerine dikkat edin.

Not: Stok AppleACPIPlatform.kext çalıştığında, 8 bitden büyük olan EC (Embedded Control) kayıtlarını emüle eden DSDT metodu çalışmayacaktır ve hata verecektir. Bu yüzden bu metotların yamalanması gerekiyor. Bu kayıtlara erişim DSDT batarya yöntemlerinde yaygındır. Uygun yamaları şu adresten bulabilirsiniz: https://github.com/RehabMan/Laptop-DSDT-Patch

AMD Radeon Kullanıcıları:

Burada, config.plist/ACPI/DropTables içinde MCFG kullanmaları gerekebilir.

Eski İşlemci Kullananlar:

Sandy Bridge’den daha eski işlemciler için özel SSDT.aml yerine config.plist/Generate=true kullanılmalıdır. Buna ek olarak OEM CPU ile ilişkili SSDT'leri droplamanız gerekecek. Bu, genellikle config.plist/ACPI/SSDT/DropOem=true ayarlamak anlamına gelir.

DropOem=true

Eğer eski bir donanımınız varsa OEM CPU ile alakalı SSDT çıkarmanız gerekebilir. Her ne kadar bunu Config.plist/ACPI/DropTables ile yapabilsek de, en kolay yolu config.plist/ACPI/SSDT/DropOem=true olarak ayarlamak.

Eğer Haswell ve sonrası sisteminiz varsa, tüm SSDT'leri tutarsanız sistem neredeyse her zaman daha iyi çalışır. Güncel sistemler bile SSDT'ler yokken boot'da sorun yaşatabilir.

Zorunlu değilseniz DropOem=true kullanmayın. Bu sadece Sandy Bridge ve eski sistemler için gerekli.

Sadece XCPM

Eğer Haswell veya daha güncel bir bilgisayarınız varsa (örn. Haswell, Broadwell, Skylake, KabyLake, vs.), ssdtPRgen.sh gerektirmeyen daha sade bir method kullanabilirsiniz. Güç yönetimi kernel (XCPM)'in içinde olduğundan beri, ssdtPRgen.sh tarafından oluşturulan ihtiyacımız olmayan özel tablolar ile birlikte geliyor. Fakat hala X86PlatformPlugin'i yüklememiz lazım.

Yükleyebilmek için sadece "plugin-type" inject edecek bir SSDT'ye ihtiyacımız var ("plugin-type"=1). SSDT'yi buradan bulabilirsiniz: RehabMan/OS-X-Clover-Laptop-Config (hotpatch/SSDT-XCPM.dsl).

Direkt link: https://raw.githubusercontent.com/RehabMan/OS-X-Clover-Laptop-Config/master/hotpatch/SSDT-XCPM.dsl

İçindekiler gayet sade:
Kod:
// Inject plugin-type=1 on _PR.CPU0
// This is experimental to see how only injecting plugin-type with native CPU PM SSDTs
// works on various platforms.
//
// Results: OK on Haswell+, not so good on Ivy
DefinitionBlock("", "SSDT", 2, "hack", "PluginType", 0)
{
    External(\_PR.CPU0, DeviceObj)
    Method (\_PR.CPU0._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return (Package()
        {
            "plugin-type", 1
        })
    }
}
//EOF

Kullanmak için AML'yi MaciASL içerisinde derlememiz, ardından da EFI/Clover/ACPI/patched'a kopyalamamız lazım.

Örneğin, Terminal'de (Sisteminizde iasl kurulu olduğunu varsayarsak):
Kod:
# download SSDT-XCPM.dsl and compile it as SSDT-XCPM.aml
curl -o ./SSDT-XCPM.dsl https://raw.githubusercontent.com/RehabMan/OS-X-Clover-Laptop-Config/master/hotpatch/SSDT-XCPM.dsl
iasl SSDT-XCPM.dsl
# not valid to use both SSDT.aml and SSDT-XCPM.aml, so remove it
rm /Volumes/EFI/EFI/Clover/ACPI/patched/SSDT.aml
cp SSDT-XCPM.aml /Volumes/EFI/EFI/Clover/ACPI/patched/SSDT-XCPM.aml

Burada da gösterildiği gibi, basitçe config.plist/ACPI/SSDT/Generate/PluginType=true olarak ayarlayabilirsiniz:
1588597237675.png


Test etmek ve onaylamak, ssdtPRgen.sh tarafından oluşturulan SSDT.AML ile aynı.

Skylake/Kaby Lake(ve sonrası) için deneysel seçenek: HWP

Skylake işlemcilerde, Intel SpeedShift (SST/HWP) adında yeni bir güç yönetimi teknolojisi tanıttı.

HWP açıkken, işlemci, pstate yönetimini işletim sistemi yerine kendisi hallediyor. İşlemci kendiliğinden otomatik olarak en yüksek ve en düşük pstate değerine geçiyor.

HWP kullanmak için, HWP aktif edilebilen SMBIOS kullanın. Şu anlık MacBook9,1/MacBookPro 13,X/MacBookPro14,X/MacBookPro15,X destekli. Ayrıca HWP, xcpm_idle'ın kullanılmasına neden olduğundan, xcpm_idle yamasının etkinleştirildiğinden emin olun. RehabMan'in Clover laptop rehberinde sağladığı tüm plist'lerde varsayılan olarak etkindir. Eğer güncel plist'ler yerine eski bir tane kullanıyorsanız, yamayı config.plist/KernelAndKextPatches/KernelToPatch bölümüne kopyalamak zorunda kalabilirsiniz.

X86PlatformPlugin.kext için yamalı bir kaynak enjektörü oluşturarak (veya kext'in kendisini yayarak) diğer SMBIOS'lar için de HWP'yi etkinleştirebilirsiniz. Ama bu başka bir günün konusu.

Not: Öncesinde bahsedildiği gibi hala ssdtPRgen.sh'deki veya SSDT-XCPM.aml'daki SSDT.aml'ye ihtiyacınız var.
 
Son düzenleyen: Moderatör:
./ssdtPRGen.sh -p 'i7-4710HQ' -f 2600 -turbo 3600

şu kodu tam olarak kendi işlemcim için nasıl değiştirebilirim.



  • Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz
    i5- 4210U CPU 1.70 GHz 2.40 GHz
 
Son düzenleyen: Moderatör:
Aşağıdaki kodu terminal içine gir. Ardından ssdtPRGen.sh tekrar çalıştırıp dene:
Kod:
rm ~/Library/ssdtPRGen/Tools/extractACPITables
 
Dediklerinizi aynen yaptım. Sadece şunu sormak istiyorum : Clover.config içinde SortedOrder kısmına SSDT.aml tanıtmaya gerek var mı? yani tüm SSDT'leri sırayla yazıyorduk, mesela benim SSDT-0.aml, SSDT-1.aml, SSDT-3.aml ..... şeklinde gidiyor. SSDT.aml yi oraya eklemeye gerek var mı?
 
Teşekkür ederim..

Herşeyi dediğiniz gibi yaptım, SSDT.aml sorunsuzca oluşturuldu. İşlemcim i5-4200H, onuda tanıdı. Fakat IORegistryExplorer programını kullanarak CPU0 altında X86PlatformPlugin'a baktığımda yüklenmediğini görüyorum. Nerde hata yapmış olabilirim ki?
 
Merhabalar
Bende de bu şekilde bir hata veriyor. Yardımlarınızı bekliyorum.
------
rm ~/Library/ssdtPRGen/Tools/extractACPITables . //Bu kodu da denedim.


Kod:
Karakaya-MacBook-Air:~ karakaya$ ./ssdtPRGen.sh


ssdtPRGen.sh v0.9 Copyright (c) 2011-2012 by † RevoGirl
             v6.6 Copyright (c) 2013 by † Jeroen
             v15.6 Copyright (c) 2013-2016 by Pike R. Alpha
-----------------------------------------------------------
Bugs > https://github.com/Piker-Alpha/ssdtPRGen.sh/issues <

gDataPath: /Users/karakaya/Library/ssdtPRGen/Data
System information: Mac OS X 10.12.1 (16B2555)
Brandstring 'Intel(R) Core(TM) i3-3110M CPU @ 2.40GHz'

./ssdtPRGen.sh: line 2295:  2031 Segmentation fault: 11  "${gToolPath}/extractACPITables"
xxd: /Users/karakaya/Library/ssdtPRGen/DSDT.aml: No such file or directory

Warning: No ACPI Processor declarations found in the DSDT!
     Using assumed Scope (\_SB) {}

./ssdtPRGen.sh: line 2295:  2088 Segmentation fault: 11  "${gToolPath}/extractACPITables"
Generating ssdt.dsl for a 'MacBookAir5,2' with board-id [Mac-2E6FAB96566FE58C]
Ivy Bridge Core i3-3110M processor [0x306A9] setup [0x0903]
With a maximum TDP of 35 Watt, as specified by Intel

Warning: Low Frequency Mode is 0 (unknown/unconfirmed)
         Now using 1200 MHz for Mobile processor

Number logical CPU's: 4 (Core Frequency: 2400 MHz)
Number of Turbo States: 0
Number of P-States: 13 (1200-2400 MHz)
Adjusting C-States for detected (mobile) processor
Injected C-States for CPU0 (C1,C3,C6,C7)
Injected C-States for CPU1 (C1,C2,C3)
Warning: 'cpu-type' may be set improperly (0x0903 instead of 0x0703)

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20140926-64 [Nov  6 2014]
Copyright (c) 2000 - 2014 Intel Corporation

ASL Input:     /Users/karakaya/Library/ssdtPRGen/ssdt.dsl - 262 lines, 7742 bytes, 48 keywords
AML Output:    /Users/karakaya/Library/ssdtPRGen/ssdt.aml - 1546 bytes, 16 named objects, 32 executable opcodes

Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 0 Optimizations

Do you want to copy /Users/karakaya/Library/ssdtPRGen/ssdt.aml to /Extra/ssdt.aml? (y/n)? n
Do you want to open ssdt.dsl (y/n)? n
Karakaya-MacBook-Air:~ karakaya$
 
Uyarı! Bu konu 8 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı