Ön bilgilendirme
macOS ve OS X'te dizüstü bilgisayarların dahili ekranları için arka ışık kontrolünün nasıl uygulanacağı konusunda hızlı bir rehber olacaktır.
Not: Eski yöntem parlaklık kısayollarını etkinleştirmek için hala kullanışlı. SysPrefs -> Displays ile parlaklığı çalıştırdıktan sonra, parlaklık kısayollarını etkinleştirmek için eski rehbere başvurabilirsiniz.
Yalnız, IntelBacklight.kext ve ACPIBacklight.kext çözümleri 10.12.4 güncellemesiyle birlikte etkisini yitirdi.
Bu rehber yeni başlayanlar için biraz karmaşık olabilir. Rehberi basitleştirmek adına birlikte çalışarak çözümü oluşturan şu ilk bileşeni kullanacağız:
En son AppleBacklightFixup.kext sürümünü ve SSDT-PNLF.aml dosyasını buradan indirin:
Not: AppleBacklightFixup.kext, Lilu.kext gerektirmektedir. Clover kurulumdaysanız buna muhtemelen sahipsinizdir.
Kurulum
Bu yöntem için üç bileşen gerekmektedir.
Diğer Not: SSDT-PNLF.aml dosyası, GFX0'ın (Thinkpad cihazlarda VID) IGPU olarak isimlendirildiğini varsaymaktadır. Eğer IGPU _SB.PCI0.IGPU altında değilse çalışmayacaktır.
SSDT-PNLF.aml dosyasını diskin EFI bölümündeki EFI/Clover/ACPI/patched dizinine kopyalayın. config.plist içinde SortedOrder kullanıyorsanız SSDT-PNLF.aml'yi eklediğinizden emin olun. SSDT-PNLF.aml, OEM SSDT'den sonra yüklenmeli. Birçok laptop için IGPU (eski adıyla GFX0) SSDT içinde tanımlıdır, DSDT içinde değil! SSDT-PNLF bunun halihazırda tanımlı olmasına bağlı olduğundan IGPU'yu tanımlayan OEM SSDT'den sonra yüklenmelidir.
ZIP dosyasını çıkardıktan sonra AppleBacklightFixup.kext'i \L\E dizinine yükleyin. Bu örnek dosyanın ~/Downloads dizine indirilip çıkarıldığını varsaymaktadır:
IntelBacklight.kext ve ACPIBacklight.kext'i nereye yüklediyseniz kaldırın.
Kurulum sonrası kernel cache kontrolü yapmanızda fayda var:
Sonra yeniden başlatın.
Özelleştirme
Bazı durumlarda, framebuffer özelliklerinizi eşlemekte kullanılan PWMMax değerini değiştirmek isteyebilirsiniz. Bu özellikle tipik bir IG-Platform-ID kullanmadığınızda ve bu IG-Platform-ID'nin farklı bir PWMMax değeri kullandığı durumlarda gereklidir.
Örnek olarak şu Haswell IG-Platform-ID'yi ele alalım: 0xa2e0008
Bu ID, 0xad9 yerine 0x56c kullanmaktadır, burada da olduğu gibi: 0xa260006
İşte bu durumda, Device-ID'ye göre belirlenen PWMMax değeri IG-Platform-ID'niz ile uyuşmayacağından dolayı özel bir LMAX değeri belirtmeniz gerekecektir.
Bunu da ACPI/patched dizinine SSDT-RMCF.aml dosyası atarak yapabilirsiniz. Bu dosyayı hotpatch klasöründe bulabilirsiniz: RehabMan/OS-X-Clover-Laptop-Config
ACPI .dsl kodunu değiştirmek meşakkatli olduğundan bunu halihazırda bildiğinizi varsayacağız. MaciASL size tanıdık gelmiyorsa buraya bakın:
Örneğin arka ışık için PWMMax bu şekilde ayarlanıyor:
Bunu:
Bununla değiştirerek:
Display ID bağımlılıkları (dependencies)
EDID içerisindeki bazı product/display-ID'leri problem yaratıyor. Buna karşın bu rehberde kullanılan yamalar AppleBacklight içindeki FxxTxxxx profil seçimini doğru bir şekilde yapmayı başaracaktır. Belirli ID'lerin bazı yerlerinde arka ışığın çalışmamasına neden olan özel durum kodu bulunuyor.
Bunu çözmek için yamalanmış bir EDID enjekte etmeniz gerekiyor...
Eğer Clover otomatik olarak EDID tespiti yapabiliyorsa en kolay çözüm Clover'ın özel EDID'i yamalanmış product-id ile birlikte otomatik olarak enjekte edebileceği biçimde config.plist'i değiştirmek olacaktır. Çalıştığı bilinen product-id: 0x9c7c
Yapılacak değişiklikler:
Not: WhateverGreen.kext kullanıldığında tüm IGPU özellikleri, config.plist/Devices/Properties kullanılarak enjekte edilir.
Not: IGPU altında EDID enjeksiyonu, AAPL00,override-no-connect bileşeni enjekte edilerek yapıldığından config.plist/Devices/Properties kullanıldığında config.plist/Graphics tabanlı enjeksiyon (config.plist/Graphics/EDID da dahil) çalışmamaktadır. Dolayısıyla EDID'i sadece config.plist/Devices/Properties kullanarak enjekte etmeniz gerekiyor.
Bu sorun bitbucket üzerindeki Clover_v2.4k_r4701.RM-4961.695d25a4.zip ile "çözülmüştür". Aynı çözüm gelecekteki resmi Clover sürümlerinde yer almalıdır. Devices/Properties/PciRoot(0)/Pci(0x02,0) kısmındaki "AAPL00,override-no-connect" bileşenini etkinleştirmeyi unutmayın. (Clover EDID'i tanıdığı sürece EDID'i doldurmaya gerek yok ama EDID'in hazır ve boş olması önemli.)
Örnek:
Bazı laptoplarda (Sony, Fujitsu gibi birkaç tanesinden bahsetmek gerekirse) Clover EDID'i tespit edemeyebilir. Bunu Clover bootlog altındaki EDID boyutunun 0 olup olmadığına bakarak anlayacaksınız. Eğer 0 ise tespit edememiştir. Bu durumda muhtemelen halihazırda çıkarılmış bir EDID enjeksiyonu yapıyorsunuz demektir çünkü diğer türlü dahili ekranınız çalışmazdı.
Bu durumda EDID verileri arasından product-id'yi 0x9c7c olarak değiştirin. Ayrıca macOS/OS X bunu kontrol etmiyor gibi görünse de yamalama sonrası EDID checksum bilgisini yeni checksum ile uyuşacak şekilde güncelleyin.
tonymacx86 kullanıcısı @tosbaha, 0x9c7c product-id ile EDID'inizi sizin için yamalayacak bir Ruby scripti hazırladı. Detaylar için: Fixing Brightness with Custom EDID
Yeniden başlatmalar arasında arka ışık seviyesini kaydetme ve geri yükleme
AppleBacklight.kext, anlık parlaklık seviyesini yeniden başlatmalar arasında geri yükleme için NVRAM'de tutmaktadır. Bunu tam olarak 'backlight-level' adlı NVRAM değişkeninde saklıyor.
Kaydet/geri yükle sisteminin çalışması için NVRAM'e düzgün bir şekilde entegre olmanız gerekiyor. Bazı laptoplarda yerleşik NVRAM çalışmayabiliyor, bu durumda EmuVariableUefi-64.efi'ye ihtiyacınız var. Eğer drivers64UEFI dizininde EmuVariableUefi-64.efi dosyası olmazsa yerleşik NVRAM çalışır, eğer olursa emüle edilen NVRAM kullanılır, kapanışta diske kaydedilir (nvram.plist) ve açılışta yüklenir. Emüle edilen VRAM'in çalışabilmesi için Clover yükleyicisi içindeki "RC scripts" bileşenini yüklemiş olmanız gerekir. "RC scripts" yüklenmemiş olduğunda drivers64UEFI klasöründe EmuVariableUefi-64.efi varsa NVRAM ayarları hiçbir zaman nvram.plist'e kaydedilemeyecektir.
AptioMemoryFix.efi yerine OsxAptioFix*.efi kullanırsanız bazı bilgisayarda EmuVariableUefi-64.efi olmadan da yerleşik NVRAM'i çalıştırmayı başarmanız mümkün. Bu yüzden AptioMemoryFix.efi denemeye değer. Yalnız AptioMemoryFix.efi'nin daha yeni olduğunu göz önünde bulundurun. Herkeste beklenen sonucu veremeyebilir.
Ayrıca, config.plist dosyanızda config.plist/SystemParameters/BacklightLevel adlı bir girdinin bulunmadığından emin olun! Clover'ın arka ışık seviyesini NVRAM değerinden farklı bir değere çekmesini istemezsiniz
Son olarak, Clover Options -> Graphics Injector yolunu ziyaret ederseniz Backlight Level değerinin 0xFFFF olduğunu görebilirsiniz. Eğer o menüden çıkış yaparsanız Clover o değeri enjekte edecek ve NVRAM'i geçersiz kılacaktır! Bunu da doğal olarak istemezsiniz. O yüzden Options -> Graphics Injector menüsünden çıkış yaparken Backlight Level değerini silin.
Ortam Işık Sensörü
Bazı laptopların DSDT yapısında tanımlı bir ortam ışık sensörü bulunmaktadır. Bu, çoğu zaman macOS/OS X ortam ışık sensör sürücüsü (bu sürücülerin Mac SMC bağımlılıkları vardır) ile uyumlu olmadığından arka ışık geri yüklemesinde çakışmaya neden olacaktır.
Bu tür aygıtlar _STA'nın 0 döndürecek şekilde ayarlanmasıyla devre dışı bırakılmalıdır.
DSDT'nizi (SSDT de olur) ortam ışık sensörü için kontrol edebilirsiniz. Bunun için _HID tanımlayıcısına bakmanız yeterli: ACPI0008
Örneğin:
_STA metodunu 0 döndürmesi için düzenleyebilirsiniz:
Bazı sistemlerde Fake ALS cihazına (hiç değişmeyen) ve uyumlu FakeSMS sürümüne sahip olmanız gerekebilir:
Hiç değişmeyen, sahte ALS için çalışacak küçük bir SSDT-ALS0.dsl:
macOS ve OS X'te dizüstü bilgisayarların dahili ekranları için arka ışık kontrolünün nasıl uygulanacağı konusunda hızlı bir rehber olacaktır.
Not: Eski yöntem parlaklık kısayollarını etkinleştirmek için hala kullanışlı. SysPrefs -> Displays ile parlaklığı çalıştırdıktan sonra, parlaklık kısayollarını etkinleştirmek için eski rehbere başvurabilirsiniz.
Yalnız, IntelBacklight.kext ve ACPIBacklight.kext çözümleri 10.12.4 güncellemesiyle birlikte etkisini yitirdi.
Bu rehber yeni başlayanlar için biraz karmaşık olabilir. Rehberi basitleştirmek adına birlikte çalışarak çözümü oluşturan şu ilk bileşeni kullanacağız:
- Bir adet önceden hazırlanmış AppleBacklightFixup.kext
- AppleBacklight.kext'i aktifleştirmek için SSDT-PNLF.aml
- Bu rehber sadece Intel GPU'ya sahip laptoplar içindir.
- Arrandale, Sandy Bridge, Ivy Bridge, Haswell, Broadwell, Skylake ve Kaby Lake işlemcilerde çalışacaktır.
- Coffee Lake grafik/parlaklık kontrolü için çalışmalar devam etmektedir.
En son AppleBacklightFixup.kext sürümünü ve SSDT-PNLF.aml dosyasını buradan indirin:
RehabMan / AppleBacklightFixup / Downloads — Bitbucket
bitbucket.org
- AppleBacklightFixup.kext dosyasını ZIP dosyası içindeki Release klasöründe bulabilirsiniz.
- SSDT-PNLF.aml dosyasını da kök dizin (root) içinde bulacaksınız.
Not: AppleBacklightFixup.kext, Lilu.kext gerektirmektedir. Clover kurulumdaysanız buna muhtemelen sahipsinizdir.
Kurulum
Bu yöntem için üç bileşen gerekmektedir.
- ACPI/patched içindeki SSDT-PNLF.aml dosyası
- /L/E altına kurulan AppleBacklightFixup.kext
Diğer Not: SSDT-PNLF.aml dosyası, GFX0'ın (Thinkpad cihazlarda VID) IGPU olarak isimlendirildiğini varsaymaktadır. Eğer IGPU _SB.PCI0.IGPU altında değilse çalışmayacaktır.
SSDT-PNLF.aml dosyasını diskin EFI bölümündeki EFI/Clover/ACPI/patched dizinine kopyalayın. config.plist içinde SortedOrder kullanıyorsanız SSDT-PNLF.aml'yi eklediğinizden emin olun. SSDT-PNLF.aml, OEM SSDT'den sonra yüklenmeli. Birçok laptop için IGPU (eski adıyla GFX0) SSDT içinde tanımlıdır, DSDT içinde değil! SSDT-PNLF bunun halihazırda tanımlı olmasına bağlı olduğundan IGPU'yu tanımlayan OEM SSDT'den sonra yüklenmelidir.
ZIP dosyasını çıkardıktan sonra AppleBacklightFixup.kext'i \L\E dizinine yükleyin. Bu örnek dosyanın ~/Downloads dizine indirilip çıkarıldığını varsaymaktadır:
Kod:
sudo cp -R ~/Downloads/RehabMan-BacklightFixup*/Release/AppleBacklightFixup.kext /Library/Extensions
Kurulum sonrası kernel cache kontrolü yapmanızda fayda var:
Kod:
sudo kextcache -i /
Özelleştirme
Bazı durumlarda, framebuffer özelliklerinizi eşlemekte kullanılan PWMMax değerini değiştirmek isteyebilirsiniz. Bu özellikle tipik bir IG-Platform-ID kullanmadığınızda ve bu IG-Platform-ID'nin farklı bir PWMMax değeri kullandığı durumlarda gereklidir.
Örnek olarak şu Haswell IG-Platform-ID'yi ele alalım: 0xa2e0008
Bu ID, 0xad9 yerine 0x56c kullanmaktadır, burada da olduğu gibi: 0xa260006
İşte bu durumda, Device-ID'ye göre belirlenen PWMMax değeri IG-Platform-ID'niz ile uyuşmayacağından dolayı özel bir LMAX değeri belirtmeniz gerekecektir.
Bunu da ACPI/patched dizinine SSDT-RMCF.aml dosyası atarak yapabilirsiniz. Bu dosyayı hotpatch klasöründe bulabilirsiniz: RehabMan/OS-X-Clover-Laptop-Config
ACPI .dsl kodunu değiştirmek meşakkatli olduğundan bunu halihazırda bildiğinizi varsayacağız. MaciASL size tanıdık gelmiyorsa buraya bakın:
Laptop'lar için DSDT / SSDT Yamalamak
OS X işletim sistemini Laptop cihazlarımızda sorunsuzca kullanmak için en iyi yol DSDT / SSDT kullanmaktır. Bunun için çoğu zaman internet üzerinden sistemimize uygun olduğunu düşündüğümüz DSDT dosyalarını kullanıyoruz. Ancak bu dosyalar cihazımız için ne kadar uygun görünürlerse de, en ufak bir...
www.technopat.net
Örneğin arka ışık için PWMMax bu şekilde ayarlanıyor:
Bunu:
Kod:
// LMAX: Backlight PWM MAX. Must match framebuffer in use.
//
// Ones: Default will be used (0x710 for Ivy/Sandy, 0xad9 for Haswell/Broadwell)
// Other values: must match framebuffer
Name(LMAX, Ones)
Kod:
// LMAX: Backlight PWM MAX. Must match framebuffer in use.
//
// Ones: Default will be used (0x710 for Ivy/Sandy, 0xad9 for Haswell/Broadwell)
// Other values: must match framebuffer
Name(LMAX, 0x56c)
Display ID bağımlılıkları (dependencies)
EDID içerisindeki bazı product/display-ID'leri problem yaratıyor. Buna karşın bu rehberde kullanılan yamalar AppleBacklight içindeki FxxTxxxx profil seçimini doğru bir şekilde yapmayı başaracaktır. Belirli ID'lerin bazı yerlerinde arka ışığın çalışmamasına neden olan özel durum kodu bulunuyor.
Bunu çözmek için yamalanmış bir EDID enjekte etmeniz gerekiyor...
Eğer Clover otomatik olarak EDID tespiti yapabiliyorsa en kolay çözüm Clover'ın özel EDID'i yamalanmış product-id ile birlikte otomatik olarak enjekte edebileceği biçimde config.plist'i değiştirmek olacaktır. Çalıştığı bilinen product-id: 0x9c7c
Yapılacak değişiklikler:
- config.plist/Graphics/EDID/Inject=true
- config.plist/Graphics/EDID/ProductID=0x9c7c
Not: WhateverGreen.kext kullanıldığında tüm IGPU özellikleri, config.plist/Devices/Properties kullanılarak enjekte edilir.
Not: IGPU altında EDID enjeksiyonu, AAPL00,override-no-connect bileşeni enjekte edilerek yapıldığından config.plist/Devices/Properties kullanıldığında config.plist/Graphics tabanlı enjeksiyon (config.plist/Graphics/EDID da dahil) çalışmamaktadır. Dolayısıyla EDID'i sadece config.plist/Devices/Properties kullanarak enjekte etmeniz gerekiyor.
Bu sorun bitbucket üzerindeki Clover_v2.4k_r4701.RM-4961.695d25a4.zip ile "çözülmüştür". Aynı çözüm gelecekteki resmi Clover sürümlerinde yer almalıdır. Devices/Properties/PciRoot(0)/Pci(0x02,0) kısmındaki "AAPL00,override-no-connect" bileşenini etkinleştirmeyi unutmayın. (Clover EDID'i tanıdığı sürece EDID'i doldurmaya gerek yok ama EDID'in hazır ve boş olması önemli.)
Örnek:
Bazı laptoplarda (Sony, Fujitsu gibi birkaç tanesinden bahsetmek gerekirse) Clover EDID'i tespit edemeyebilir. Bunu Clover bootlog altındaki EDID boyutunun 0 olup olmadığına bakarak anlayacaksınız. Eğer 0 ise tespit edememiştir. Bu durumda muhtemelen halihazırda çıkarılmış bir EDID enjeksiyonu yapıyorsunuz demektir çünkü diğer türlü dahili ekranınız çalışmazdı.
Bu durumda EDID verileri arasından product-id'yi 0x9c7c olarak değiştirin. Ayrıca macOS/OS X bunu kontrol etmiyor gibi görünse de yamalama sonrası EDID checksum bilgisini yeni checksum ile uyuşacak şekilde güncelleyin.
tonymacx86 kullanıcısı @tosbaha, 0x9c7c product-id ile EDID'inizi sizin için yamalayacak bir Ruby scripti hazırladı. Detaylar için: Fixing Brightness with Custom EDID
Yeniden başlatmalar arasında arka ışık seviyesini kaydetme ve geri yükleme
AppleBacklight.kext, anlık parlaklık seviyesini yeniden başlatmalar arasında geri yükleme için NVRAM'de tutmaktadır. Bunu tam olarak 'backlight-level' adlı NVRAM değişkeninde saklıyor.
Kaydet/geri yükle sisteminin çalışması için NVRAM'e düzgün bir şekilde entegre olmanız gerekiyor. Bazı laptoplarda yerleşik NVRAM çalışmayabiliyor, bu durumda EmuVariableUefi-64.efi'ye ihtiyacınız var. Eğer drivers64UEFI dizininde EmuVariableUefi-64.efi dosyası olmazsa yerleşik NVRAM çalışır, eğer olursa emüle edilen NVRAM kullanılır, kapanışta diske kaydedilir (nvram.plist) ve açılışta yüklenir. Emüle edilen VRAM'in çalışabilmesi için Clover yükleyicisi içindeki "RC scripts" bileşenini yüklemiş olmanız gerekir. "RC scripts" yüklenmemiş olduğunda drivers64UEFI klasöründe EmuVariableUefi-64.efi varsa NVRAM ayarları hiçbir zaman nvram.plist'e kaydedilemeyecektir.
AptioMemoryFix.efi yerine OsxAptioFix*.efi kullanırsanız bazı bilgisayarda EmuVariableUefi-64.efi olmadan da yerleşik NVRAM'i çalıştırmayı başarmanız mümkün. Bu yüzden AptioMemoryFix.efi denemeye değer. Yalnız AptioMemoryFix.efi'nin daha yeni olduğunu göz önünde bulundurun. Herkeste beklenen sonucu veremeyebilir.
Ayrıca, config.plist dosyanızda config.plist/SystemParameters/BacklightLevel adlı bir girdinin bulunmadığından emin olun! Clover'ın arka ışık seviyesini NVRAM değerinden farklı bir değere çekmesini istemezsiniz
Son olarak, Clover Options -> Graphics Injector yolunu ziyaret ederseniz Backlight Level değerinin 0xFFFF olduğunu görebilirsiniz. Eğer o menüden çıkış yaparsanız Clover o değeri enjekte edecek ve NVRAM'i geçersiz kılacaktır! Bunu da doğal olarak istemezsiniz. O yüzden Options -> Graphics Injector menüsünden çıkış yaparken Backlight Level değerini silin.
Ortam Işık Sensörü
Bazı laptopların DSDT yapısında tanımlı bir ortam ışık sensörü bulunmaktadır. Bu, çoğu zaman macOS/OS X ortam ışık sensör sürücüsü (bu sürücülerin Mac SMC bağımlılıkları vardır) ile uyumlu olmadığından arka ışık geri yüklemesinde çakışmaya neden olacaktır.
Bu tür aygıtlar _STA'nın 0 döndürecek şekilde ayarlanmasıyla devre dışı bırakılmalıdır.
DSDT'nizi (SSDT de olur) ortam ışık sensörü için kontrol edebilirsiniz. Bunun için _HID tanımlayıcısına bakmanız yeterli: ACPI0008
Örneğin:
Kod:
Device (ALSD)
{
Name (_HID, "ACPI0008") // _HID: Hardware ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((ALSE == 0x02))
{
Return (0x0B)
}
Return (Zero)
}
...
_STA metodunu 0 döndürmesi için düzenleyebilirsiniz:
Kod:
Device (ALSD)
{
Name (_HID, "ACPI0008") // _HID: Hardware ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (0)
}
...
Bazı sistemlerde Fake ALS cihazına (hiç değişmeyen) ve uyumlu FakeSMS sürümüne sahip olmanız gerekebilir:
Hiç değişmeyen, sahte ALS için çalışacak küçük bir SSDT-ALS0.dsl:
Kod:
// Fake ambient light sensor device
DefinitionBlock("", "SSDT", 2, "hack", "ALS0", 0)
{
Device(_SB.ALS0)
{
Name(_HID, "ACPI0008")
Name(_CID, "smc-als")
Name(_ALI, 300)
Name(_ALR, Package()
{
//Package() { 70, 0 },
//Package() { 73, 10 },
//Package() { 85, 80 },
Package() { 100, 300 },
//Package() { 150, 1000 },
})
}
}
//EOF
Gördüğünüz gibi yukarıdaki sürüm _ALI için her zaman 300 döndürecek ve _ALR için sadece bir adet haritalamaya sahiptir: a neutral mapping (100) for 300 lux)
Bu, Sistem->Ekran altındaki "Parlaklığı otomatik ayarla" seçeneğini devreye sokuyor. Belki parlaklık geri yüklemesini çözmek için de yeterlidir (ve hiçbir yerleşik ACPI'nin hiçbir detayına gerek duymadan).
- Önceden hazırlanmış SSDT-ALS0.aml: SSDT-ALS0.aml
- FakeSMC: FakeSMC.kext.zip
Son düzenleme: