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
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.
Güncellemelerden sonra her zaman kontrol edip devre dışı bırakmayı unutmayın.
Uyku modu ile alakalı diğer ayarları da kapatmak gerekli.
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:
Güncel sistemler (Broadwell, Skylake ve daha sonrası) şu kodları kullanın.
Bu işlemden sonra betiği şu komut ile çalıştırın:
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:
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.
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:
Şimdi yükleyelim:
Şimdi bilgisayarı, görevleri, benchmark vb. şeyleri değiştirmek için kullanalım.
AppleIntelInfo.kext sonuçlarına bakabilirsiniz:
Veya TextEdit'de yükleyebileceğiniz bir kopyasını yapın:
İ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;
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:
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):
Burada da gösterildiği gibi, basitçe config.plist/ACPI/SSDT/Generate/PluginType=true olarak ayarlayabilirsiniz:
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.
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:
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: