Laptop Cihazlarda Harici Ekran Kartını Kapatmak

tosbaha

PADAVAN
MODERATOR
DEVELOPER
11 Mar 2017
140
110
0
42
Çoğu laptopta Intel kartına ek olarak Nvidia veya AMD ekran kartı vardır. Bu kartlar macOS ile kullanılamamaktadır. Bu kartlar sistemden kapatılmadığı zaman daha fazla güç kullanımına ve hızlı fan çalışmasına ve dolayısıyla düşük pil ömrüne sebep olmaktadır. Aşağıdaki rehberde bu kartların nasıl kapanacağını anlatmaya çalışacağım. Rehber uzun olabilir ama adım adım takip ederseniz ve her adımı neden yaptığımızı anlarsanız, problem yaşamazsınız. Rehberi daha da anlaşılır kılabilmek için örnek bir makinenin dosyalarını da buraya ekledim. Siz de kendinizi deneyebilirsiniz.

[WARNING]Aşağıdaki yamalar sadece ve sadece ekran kartını kapatmak içindir. Batarya ses kartı vs için uyguladığınız yamalar varsa tekrar uygulayın.[/WARNING]

İçerik
  1. Öncelikle orjinal DSDT ve SSDT dosyalarınıza ihtiyacımız var. Bunun için buradaki rehberi takip ederek bir klasöre dosyalarınızı çıkartın. Sökerken BÖLÜM 4: ACPI Dosyalarının "refs.txt" İle Sökülmesi kısmını takip edin.
  2. MaciASL indirin
  3. MaciASL/Preferences/Sources kısmına eğer ekli değilse şunu ekleyin.
  4. Clover ile çıkardığınız dosyalar içersinde sonu x ile biten dosyalar varsa bu dosyaları silin.
  5. Yama yapılacak dosyaların bulunması
  6. Rename GFX0 to IGPU yaması
  7. Ekran Kartının Kapanması
  8. Gerekli diğer yamaların yapılması.

Şimdi örnek dosyalar üzerinden 4. adımdan başlayalım. Klasörü açtığımız zaman sonu x ile biten şu dosyları görüyoruz ve onları siliyoruz.

4. Dosyaların Silinmesi
  • SSDT-3x.dsl
  • SSDT-4x.dsl
  • SSDT-5x.dsl

5. Yama yapılacak dosyaların bulunması

Önce GFX0 geçen bütün dosyaları buluyoruz. Dosyaların olduğu klasöre gidiyoruz ve terminale şunu yazıyoruz.
Kod:
grep -l GFX0 *.dsl
Sonuç şu olacaktır.
Kod:
DSDT.dsl
SSDT-0.dsl
SSDT-1.dsl
SSDT-10.dsl
SSDT-11.dsl
SSDT-12.dsl
SSDT-2.dsl
SSDT-6.dsl
SSDT-7.dsl
SSDT-8.dsl
SSDT-9.dsl
[WARNING]Bütün bu dosyalara yama yapılacaktır. İlk yapacağınız yama her zaman Rename _DSM methods to XDSM olsun. Cihazların ayarlarını barındıran bu methodların silinmesi veya isminin değişmesi gerekir.Bazı dosyalarda bu yamaya gerek olmayabilir.[/WARNING]

6. Rename GFX0 to IGPU yaması

DSDT.dsl

  • Rename _DSM methods to XDSM
  • OS Check Fix (Windows 8) Buradaki amaç macOS u Windows gibi tanıtmak. Çünkü bazı cihazlar mesela sadece uygun Windows versiyonu varsa açılır. Sizin cihazınızda en yüksek Windows ne ise ona uygun yamalayabilirsiniz.
  • Rename GFX0 to IGPU
    Ekran kartı için bütün yamalarda ilk bunun uygulanması gerekir.
  • Batarya vs için diğer yamaları uygulamayı unutmayın.
SSDT-0.dsl
  • Rename _DSM methods to XDSM
  • Rename GFX0 to IGPU
SSDT-1.dsl
  • Rename GFX0 to IGPU
    Bunu yapıp compile dediğimizde şu hatayı alıyoruz.
    • 246, 6126, syntax error, unexpected PARSEOP_PACKAGE
  • Bu hatayı görünce yapacağımız yama şu:
    • [syn] Remove _PSS placeholders
SSDT-2.dsl
  • Rename GFX0 to IGPU
SSDT-6.dsl
  • Rename GFX0 to IGPU
SSDT-7.dsl
  • Rename GFX0 to IGPU
SSDT-8.dsl
  • Rename GFX0 to IGPU
Gördüğünüz gibi bu dosyada birden fazla isim değiştirme var. Muhtemelen bu dosyada diğer ekran kartı var aklımızda tutalım.

SSDT-9.dsl
  • Rename GFX0 to IGPU
SSDT-10.dsl
  • Rename B0D3 to HDAU
    Grafik kartı ve ses ile alakalı yama. layout id 12 kullanır. Eğer ses layout için başka numara kullanıyorsanız bunu değiştirebilirsiniz.
  • Rename GFX0 to IGPU
    Gördüğünüz gibi bu dosyada birden fazla isim değiştirme var. Muhtemelen bu dosyada diğer ekran kartı var aklımızda tutalım.
SSDT-11.dsl
  • Rename GFX0 to IGPU
    Gördüğünüz gibi bu dosyada birden fazla isim değiştirme var. Muhtemelen bu dosyada diğer ekran kartı var aklımızda tutalım.
SSDT-12.dsl
  • Rename GFX0 to IGPU
    Gördüğünüz gibi bu dosyada birden fazla isim değiştirme var. Muhtemelen bu dosyada diğer ekran kartı var aklımızda tutalım.
  • Bu dosyayı compile etmeye çalışınca 1324, 6126, syntax error, unexpected PARSEOP_NAMESEG hatası alıyoruz. Bu hatayı alınca uygulayacağınız yama:
    [gfx0] Cleanup/Fix Errors (SSDT)
7. Ekran Kartının Kapatılması

Şimdi yamanın ilk ayağı olan Rename GFX0 to IGPU kısmını bitirdik. Şimdi yapacağımız harici kart olan SSDT yi bulup o kartın _INI (başlangıç) kısmında _OFF metodunu çağıracağız.

DSDT / SSDT Dosyalarımız içinde _OFF geçen dosyaları bulalım. Yine komut satırına gidiyoruz ve şunu yazıyoruz.
Kod:
grep -l Method.*_OFF *.dsl
Sonuç şu olacaktır:
  • SSDT-12.dsl
Demek ki ekran kapatma kısmımız bu dosyada. Şimdide ekran kartını başlatan dosyaları bulalım:
Kod:
 grep -l Method.*_INI *.dsl
  • DSDT.dsl
  • SSDT-10.dsl
  • SSDT-11.dsl
  • SSDT-12.dsl
Harici ekran kartlarının ismi genelde PEGP olur. Şimdi SSDT dosyalarına tek tek bakalım ve ekran kartının _INI kısmını bulalım.
  • SSDT-10.dsl içinde _INI arıyoruz:
    Burada ekran kartı yok.
  • SSDT-11.dsl
    Kod:
      Method (_INI, 0, NotSerialized)  // _INI: Initialize
      {
      Store (Zero, \_SB.PCI0.RP05.PEGP._ADR)
      }
_INI (başlangıç) kısmında _OFF metodunu çağıracağız. Eğer _INI ve _OFF kısmı aynı dosyada ise _INI den _OFF methodu çağrılır fakat eğer farklı dosyalarda ise işler biraz daha karışıktır.
Gördüğünüz gibi _INI methodumuz bu fakat _OFF methodumuz başka dosyada. Böyle olduğu zaman bazı şeylere dikkat etmemiz gerekiyor.
Bazen _OFF kısmında EC (Embedded Controller) ye erişim sağlanır. Biz _INI' den _OFF' u çağırdığımız zaman bu EC aktif olmayabilir ve bu yüzden problemler çıkar. Bu yüzden SSDT-12.dsl dosyasındaki _OFF kısmını inceleyelim:
Kod:
Method (_OFF, 0, Serialized)  // _OFF: Power Off
  {
  If (LEqual (CTXT, Zero))
  {
  \_SB.PCI0.LPCB.EC0.SPIN (0x96, Zero)
  If (LNotEqual (GPRF, One))
  {
  Store (VGAR, VGAB)
  }

  Store (One, CTXT)
  }

  SGOF ()
  }
Gördüğünüz üzere \_SB.PCI0.LPCB.EC0.SPIN (0x96, Zero) ile EC ye erişim sağlanıyor. Bunu halletmemiz gerekiyor. Biz bunu bu dosyadan silip başka dosyaya ekleyeceğiz. O satırı siliyoruz ve şu hale getiriyoruz ve compile diyoruz
Kod:
  Method (_OFF, 0, Serialized)  // _OFF: Power Off
  {
  If (LEqual (CTXT, Zero))
  {
  If (LNotEqual (GPRF, One))
  {
  Store (VGAR, VGAB)
  }

  Store (One, CTXT)
  }

  SGOF ()
  }
Bazen nadir olsa da, EC yi çağırmak için bir methodu da çağırabilir. O methodu inceleyip EC den bir şeyin çağrılmadığına emin olun.

SSDT-11.dsl dosyasının _INI kısmını söyle yapıyoruz:
Kod:
  Method (_INI, 0, NotSerialized)  // _INI: Initialize
  {
  Store (Zero, \_SB.PCI0.RP05.PEGP._ADR)
  External(\_SB.PCI0.RP05.PEGP._OFF, MethodObj) // ekran kartinin adresi
  _OFF()
  }
Gördüğünüz gibi _OFF metodo SSDT-12.dsl de olduğundan External.. diyerek o methodu belirtiyoruz. ve _OFF() ile kapatıyoruz. Buraya dikkat edin. SSDT-12.dsl dosyasındaki grafik kartının adres yolu neyse onu yazmanız gerek. Farklı cihazlarda bu adres farklı olabilir. Mesela SB.PCI0.PEG0.PEGP gibi.

İşimiz hala bitmedi. Sildiğimiz \_SB.PCI0.LPCB.EC0.SPIN (0x96, Zero) satırını eklememiz gerekiyor. DSDT dosyası ile EC başlatılıyor. Biz de bu satırı DSDT dosyasına ekleyeceğiz.
DSDT.dsl dosyasını açıyoruz.
EC0 nın reg methodu şöyle bir şekilde:
Kod:
  Method (_REG, 2, NotSerialized)  // _REG: Region Availability
  {
  If (LEqual (Arg0, 0x03))
  {
  Store (Arg1, ECFL)
  }
  }
Bunu şu şekide değiştiriyoruz:
Kod:
  Method (_REG, 2, NotSerialized)  // _REG: Region Availability
  {
  If (LEqual (Arg0, 0x03))
  {
  Store (Arg1, ECFL)
  }
  // EC0 kodunu ekliyoruz.
  If (LAnd(LEqual(Arg0,3),LEqual(Arg1,1)))
  {
  \_SB.PCI0.LPCB.EC0.SPIN (0x96, Zero)
  }
  }
Bu yamalar ile diğer ekran kartı kapanacaktır. Fakat bazı durumlarda bu yamalar yüzünden uykuya geçme problemi olabilir.
Bu nedenle aşağıdaki yamaları da yapıyoruz. Aşağıdaki yamalar ile uykuya geçmeden önce ekran kartı açılıyor ve uyandıktan sonra tekrar kapatılıyor. Bu yamaları MaciASL nin patch yazan text kutusuna yazıp patch diyorsunuz.


DSDT.dsl
Kod:
 into method label _PTS code_regex ([\s\S]*) replace_matched
begin
External(\\_SB.PCI0.RP05.PEGP._ON, MethodObj)\n
If (CondRefOf(\\_SB.PCI0.RP05.PEGP._ON)) { \\_SB.PCI0.RP05.PEGP._ON() }\n
%1
end;

into method label _WAK code_regex (Return\s+\(.*) replace_matched
begin
External(\\_SB.PCI0.RP05.PEGP._OFF, MethodObj)\n
If (CondRefOf(\\_SB.PCI0.RP05.PEGP._OFF)) { \\_SB.PCI0.RP05.PEGP._OFF() }\n
%1
end;
[WARNING]Burada önemli olan nokta _SB.PCI0.RP05.PEGP kısmı her ekran kartında farklı olabilir. Bazılarında mesela SB.PCI0.PEG0.PEGP Bu rehberi okuyanlar ona dikkat etsinler.[/WARNING]

Gördüğünüz gibi rehber uzun olduğu için herkese birebir yardım etmem olanaksız. Umarım bana anlayış göstrebilirsiniz.
 

Ekli dosyalar

Moderatörün son düzenlenenleri:

yusuf-5896

APPRENTICE
9 Haz 2017
31
4
0
22
Hocam bende 11 tane çıkıyor ve sizin belirttiğiniz hatalar farklı dosyalar da çıkıyor yanlış mı ilerliyorum yoksa her pc de farklı mı. Birde diğer konuda ddsdt çıkartırken laptop seçim yerinde benim laptop yok hiç bir şey seçmesek ne olur.
 

tosbaha

PADAVAN
MODERATOR
DEVELOPER
11 Mar 2017
140
110
0
42
Her cihaz farklı donanıma sahip. Dolayısıyla DSDT ve SSDT dosyaları farklıdır. Başkasının yamalanmış DSDT ve SSDT dosyaları siz de çalışmaz. Burada örnek vermemin amacı size harici grafik kartını nasıl kapatılacağını örnek ile anlatmak. DSDT ve SSDT dosyaları Clover ekranında iken F4 tuşuna basarak çıkartılır. Buradaki rehberi takip edin. DSDT ve SSDT yaması yapmadan laptopunuz çalışıyorsa yapmanıza gerek yok ama stabil bir sistem, güç yönetimi için bu yamaları yapmayı öğrenmeniz sizin yararınızadır.
 

montezuma

MASTER YODA
Yönetici
19 Eki 2016
16,907
4,056
4,351
hocam konu tasinmis ama sadece harici ekran karti icin acmadim konuyu genel olarak dtds yamasi icin acmistim ikisini ayni anda yaptim sadece.
O zaman Sierra kategorisi altında konunu aç. DSDT kategorisi sadece DSDT dosya paylaşımları içindir.
 

ismozy

PADAVAN
DENEYİMLİ ÜYE
26 Haz 2017
167
46
0
38
Ankara
Merhabalar,
Öncelikle rehber için teşekkürler.
Rehberde de belirttiğiniz gibi, _INI ve _OFF un ayrı SSDT lerde olduğu durumlar ve EC ye erişim sağlayan durumlar için çözüm verilmiş.
Benim durumumda ise _INI ve _OFF ikiside SSDT-8 içerisinde aşağıda görüldüğü gibi:

Kod:
Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            Store (Zero, \_SB.PCI0.PEG0.PEGP._ADR)
        }
Kod:
Method (_OFF, 0, Serialized)  // _OFF: Power Off
            {
                \_SB.PCI0.PEG0.PEGP.SGOF ()
                Store (Zero, _STA)
            }
Sormak istediklerim:
_OFF dan ekran kartını silince aşağıdaki gibi mi olacak, çünkü sizinki baya bi kalabalık benimki çok yalın kaldı :)

Kod:
Method (_OFF, 0, Serialized)  // _OFF: Power Off
            {
               Store (Zero, _STA)
            }
Sizin örnekte farklı SSDT lerde olduğundan _INI metoduna OFF u External olarak eklediniz. Benimki aynı SSDT de olduğundan Internal mu yazmam gerekiyor yoksa takısız aşağıdaki gibi mi olmalı?

Kod:
Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            Store (Zero, \_SB.PCI0.PEG0.PEGP._ADR)
            (\_SB.PCI0.RP05.PEGP._OFF, MethodObj) // ekran kartinin adresi
            _OFF()
        }
Son sorum ise benim örneğimde anladığım kadarı ile EC ye bir erişim yok bu durumda DSDT ye bir ekleme yapacak mıyız?

İlgili SSDT-8.dsl : SSDT-8.dsl - Google Drive
İlgili DSDT.dsl: dsdt.dsl - Google Drive
 

tosbaha

PADAVAN
MODERATOR
DEVELOPER
11 Mar 2017
140
110
0
42
Eğer _INI ve _OFF aynı .dsl dosyasında ise _INI den _OFF çağrılır ve iş biter. Sizin dosyanıza baktım aşağıdaki gibi yapınca hata veriyor.
Kod:
  Method (_INI, 0, NotSerialized)  // _INI: Initialize
  {
  Store (Zero, \_SB.PCI0.PEG0.PEGP._ADR)
  _OFF()
  }
Bu da demek oluyor ki _OFF ile _INI aynı scope ait değil. Diğer .dsl dosyalarınızı iyi kontrol ettiğinizden emin olun. Eğer kesinlikle eminseniz şu yamadan sadece birini deneyin

Yama1
Mantık: External ile OFF methodunun yolunu gösteriyoruz.
Kod:
 Method (_INI, 0, NotSerialized) // _INI: Initialize
{
  Store (Zero, \_SB.PCI0.PEG0.PEGP._ADR)
  External(\_SB.PCI0.PEG0.PEGP._OFF,MethodObj)
  _OFF()
}
Yama2
Mantık: _OFF methodu SGOF u çağırdığı için biz de direk onu çağırıyoruz. SGOF _INI ile aynı scope ta olduğu için sorun olmuyor.
Kod:
 Method (_INI, 0, NotSerialized) // _INI: Initialize
{
  Store (Zero, \_SB.PCI0.PEG0.PEGP._ADR)
  SGOF()
}
 

ismozy

PADAVAN
DENEYİMLİ ÜYE
26 Haz 2017
167
46
0
38
Ankara
Terminalden _OFF arattırdığımda 8 ve 9 _INI arattırdığımda 7-8-9 ve DSDT sonucu çıkıyor. Çok emin olamadığmdan tüm Patched klasörünü ekledim: patched - Google Drive
Son cevabınızdakileri uygulamaya çalışırken _OFF metodundaki kısmı silip silmemekten bahsetmemişsiniz. EC ye erişim sağlanmadığından _OFF metoddaki '' \_SB.PCI0.PEG0.PEGP.SGOF () '' kısmını silmicem sanırım. Sadece _INI kısmına iki yamadan birini uygulayıp yeniden başlattığımda sonucu görmemiz gerekli, anladığım kadarıyla.
Peki bu kartın devre dışı kaldığını nasıl anlıcaz?
 

tosbaha

PADAVAN
MODERATOR
DEVELOPER
11 Mar 2017
140
110
0
42
Sizin OFF methodunuz EC ye erişmiyor o yüzden eklenip silinecek bir şey yok. \_SB.PCI0.PEG0.PEGP._OFF methodu başka bir .dsl dosyasında ise ona bakın. Eğer EC vs görürseniz rehberde anlatıldığı gibi düzeltmeniz gerek.

Yama çalışırsa eğer About This Mac-->System Report-->Graphics/Displays kısmında sadece bir ekran kartı görürsünüz. Dediğim iki yamadan birini deneyerek kontrol edin.
 

ismozy

PADAVAN
DENEYİMLİ ÜYE
26 Haz 2017
167
46
0
38
Ankara
Malesef hiç biri olmadı. Hatta hata veriyor dediğiniz

Kod:
Method (_INI, 0, NotSerialized)  // _INI: Initialize
  {
  Store (Zero, \_SB.PCI0.PEG0.PEGP._ADR)
  _OFF()
  }
bu kodu bile

Kod:
External (_SB_.PCI0.PEG0.PEGP._OFF, MethodObj)    // 0 Arguments (from opcode)
kodunu en üstteki externalların arasına ekleyerek düzeltim denedim yine kapanmadı.
 

tosbaha

PADAVAN
MODERATOR
DEVELOPER
11 Mar 2017
140
110
0
42
Yamalar hatalı değil. Ya eski MaciASL kullanıyorsunuz veya dediğim yamayı uygulayamadınız. Yama1 veya Yama2 de göründüğü gibi _INI kısmını değiştireceksiniz. Ekte videoda ekledim göreceğiniz üzere hata falan vermiyor.

Video
2017-06-29_1345

Yamalanan dosyayı acpi/patched klasörüne kopyalacaksınız. Son olarak clover ın config dosyasını ayarlayacaksınız. Rehberi adım adım takip edin. 1. adımda DSDT nasıl yamalanır, yamalanmış SSDT dosyaları nasıl yüklenir anlatılıyor.

Bundan önceki mesajımda söylediğim gibi _OFF dosyanız başka dosyalarda olabilir iyice inceleyin. Sizin eklediğiniz patched - Google Drive dosyaya baktım ama bir dosya mı klasör mü anlamadım doğrusu.
 

ismozy

PADAVAN
DENEYİMLİ ÜYE
26 Haz 2017
167
46
0
38
Ankara
MaciASL ACPI6.1 ayarında kullanıyorum. Videoda yaptığınız gibi her iki yamayı da sırasıyla denedim. Bu yamalar hata verdi demedim. Ekran kartı kapanmadı dedim. Hatta #7 nolu mesajınızda verdiğiniz ilk kod için hata veriyor demişsiniz, o kodu bile denedim. Ama hala System report altında Display olarak ikinci bir kart görünüyor.
Patched klasörümü tekrar paylaştım inceleyebilirseniz gözden kaçırdığım bir yer varsa yardımcı olabilirseniz sevinirim.
 

tosbaha

PADAVAN
MODERATOR
DEVELOPER
11 Mar 2017
140
110
0
42
Malesef hiç biri olmadı. Hatta hata veriyor dediğiniz

[KOD]Method (_INI, 0, NotSerialized) // _INI: Initialize
{
Store (Zero, \_SB.PCI0.PEG0.PEGP._ADR)
_OFF()
}[/KOD]bu kodu bile

[KOD]External (_SB_.PCI0.PEG0.PEGP._OFF, MethodObj) // 0 Arguments (from opcode)[/KOD] kodunu en üstteki externalların arasına ekleyerek düzeltim denedim yine kapanmadı.
1. Siz dediniz 'Hatta hata veriyor'.
2. Ayrıca sizin bu mesaja yazdığınız benim verdiğim iki yama da değil. Benim verdiğim yamanın içersinde zaten External kısmı var. Benim verdiğim iki yamada compile edince hata vermiyor.

Ekran kartı kapanmamışsa sebebi ikidir.
1. Clover ile SSDT ler yüklenmiyordur.Clover config.plist i kontrol edin. Rehberdeki 1. adım
2. Doğru _OFF methodunu çağırmıyorsunuzdur.
 

ismozy

PADAVAN
DENEYİMLİ ÜYE
26 Haz 2017
167
46
0
38
Ankara
Rehabman in bu konuyla ilgili rehberini incelerken benim size göndermiş olduğum _OFF metodun doğru olmadığını öğrendim.
Daha önce SSDT-8 deki _OFF metodu diye gönderdiğim kod aşağıdaki idi.
Kod:
Method (_OFF, 0, Serialized)  // _OFF: Power Off
            {
                \_SB.PCI0.PEG0.PEGP.SGOF ()
                Store (Zero, _STA)
            }
Rehabman bunun için PowerResource macrosunda bir metod dur demiş.
If you open SSDT-10.dsl and look for _OFF, you find it is a method inside a PowerResource macro. This is not the _OFF method we want.
Yanlış _OFF metodu ile vaktinizi aldığım için özür dilerim öncelikle.

Doğru _OFF metodum ise SSDT-9 içerisindeymiş. Ama yine sorunlu bir şekilde sanırım.
Kod:
Method (_OFF, 0, Serialized)  // _OFF: Power Off
        {
            If (LEqual (CTXT, Zero))
            {
                If (LNotEqual (GPRF, One))
                {
                    Store (VGAR, VGAB)
                }
                Store (One, CTXT)
            }
            SGOF ()
        }
Ekran kartı ile ilgili adres yok bunda da.
Rehabman rehberindeki kod ise aşağıdaki gibi
Kod:
 Method (_OFF, 0, Serialized)  // _OFF: Power Off
        {
            If (LEqual (CTXT, Zero))
            {
                \_SB.PCI0.LPCB.EC0.SPIN (0x96, Zero)
                If (LNotEqual (GPRF, One))
                {
                    Store (VGAR, VGAB)
                }

                Store (One, CTXT)
            }

            SGOF ()
        }
Onun ki ile benimki 1-1 aynı tek eksik ekran kartı.
Bu durum için ne tavisye edersiniz.
 

tosbaha

PADAVAN
MODERATOR
DEVELOPER
11 Mar 2017
140
110
0
42
Paylaştığınız klasöre tekrar baktım. Siz patched klasörünü paylaşmışsınız. Yani bunlar yamanmış dosylar ne kadar doğru onu da bilemiyorum. . Sizin rehberi takip ederek EFI/Clover/acpi/origin klasöründeki dosyalar üsütünden yeniden başlamanız gerek. Hem buradaki konuda hem de sizin de okudunuğunuz RehabMan'ın açtığı konuda iki farklı cihaz üstünden yapılmış örnek var. Eğer dikkatlice takip ederseniz yapılmayacak birşey değil.
 

ismozy

PADAVAN
DENEYİMLİ ÜYE
26 Haz 2017
167
46
0
38
Ankara
Orjinal SSDT ler ile patched olanları kıyaslamadan yapmıyorum zaten. Anlatılanları yapamamak yada anlamamak gibi bir sorunum yok.
Örneklerde verilmeyen bir durum olduğu için çözüm bulamadım sadece.
Benim origin _OFF metodumda alttaki kısım yer almıyor. Sizin örneklerde silinmiş hali gibi yani. Bunun olmaması kapatma imkanı yok mu demek onu çözemedim.
Kod:
\_SB.PCI0.LPCB.EC0.SPIN (0x96, Zero)
Origin Klasörüm
 

tosbaha

PADAVAN
MODERATOR
DEVELOPER
11 Mar 2017
140
110
0
42
Eğer SSDT nin _OFF kısmında EC0 geçmiyorsa, direkt _OFF çağırılabilir. Rehberde eğer EC0 varsa ve ona erişilirse neler yapılacağı anlatılıyor. _INI den kapatmak yerine _REG den de kapatabilirsiniz.

1. _REG kısmı olan SSDT yi bulun
2. MaciASL ile o dosyayı açın ve Patch butonuna tıklayın
3. Gelecek pencereye aşağıdakı yamayı yapıştırın ve Apply deyin.
Kod:
into method label _REG parent_hid PNP0C09 insert
begin
//added to turn nvidia/radeon off\n
If (LAnd(LEqual(Arg0,3),LEqual(Arg1,1)))\n
{\n
  External(\_SB.PCI0.PEG0.PEGP._OFF, MethodObj)\n
  \_SB.PCI0.PEG0.PEGP._OFF()\n
}\n
end;
4. Clover config de DropOem in true olduğuna emin olun.
 

dr.arsimet

APPRENTICE
26 Ağu 2017
64
35
21
23
Merhabalar @tosbaha hocam. DSDT/SSDT leri söktüm sonunda x olanları sildim ve elimde DSDT ve SSDT 0, 1, 2, 3, 4, 12, 13 dosyaları kaldı.

DSDT dosyama bahsettiğiniz adımları uyguladım diğer içinde GFX0 geçen SSDT 2,3,13 dosyalara Rename GFX0 to IGPU yamasını uyguladım.

_OFF geçen dosyaları buldum DSDT, SSDT 12, SSDT 13

ekran kartını başlatan dosyaları da buldum DSDT, SSDT 12, SSDT 13

bu aşamadan sonra ne yapmam gerektiğini tam anlayamadım

SSDT 12 de _INI aradım

Kod:
Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            Store (Zero, \_SB.PCI0.RP01.PEGP._ADR)
        }


SSDT 12 de _OFF
Kod:
Method (_OFF, 0, Serialized)  // _OFF: Power Off
            {
                If (LEqual (TDGC, One))
                {
                    CreateField (TGPC, Zero, 0x03, GUPC)
                    If (LEqual (ToInteger (GUPC), One))
                    {
                        \_SB.PCI0.RP01.PEGP.GC6I ()
                        Store (Zero, _STA)
                    }
                    ElseIf (LEqual (ToInteger (GUPC), 0x02))
                    {
                        \_SB.PCI0.RP01.PEGP.GC6I ()
                        Store (Zero, _STA)
                    }
                }
                ElseIf (LNotEqual (OSYS, 0x07D9))
                {
                    \_SB.PCI0.RP01.PEGP.HGOF ()
                    Store (Zero, _STA)
                }
            }
DSDT EC0

Kod:
Method (_REG, 2, NotSerialized)  // _REG: Region Availability
            {
                If (LEqual (Arg0, 0x03))
                {
                    Store (Arg1, ECFL)
                }
            }
 

ismozy

PADAVAN
DENEYİMLİ ÜYE
26 Haz 2017
167
46
0
38
Ankara
Eğer _INI ve _OFF methodların ikiside SSDT-12 içindeyse aşağıdaki gibi yapman yeterli olacaktır.
Kod:
Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            Store (Zero, \_SB.PCI0.RP01.PEGP._ADR)
        _OFF()
        }
 
  • Like
Tepkiler: dr.arsimet

dr.arsimet

APPRENTICE
26 Ağu 2017
64
35
21
23
@ismozy Hocam hata aldım
MIvoNceh9j2BF6Q8QlEXsxUy_QT5ktu9.png


Eğer _INI ve _OFF methodların ikiside SSDT-12 içindeyse aşağıdaki gibi yapman yeterli olacaktır.
Kod:
Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            Store (Zero, \_SB.PCI0.RP01.PEGP._ADR)
        _OFF()
        }
@ismozy hocam SSDT yi kaydederken compile hatası almıştım, ancak kodu aşağıdaki gibi düzenlesem çalışır mı? Yoksa External yerine farklı birşey mi yazılmalı ?


Kod:
     Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            Store (Zero, \_SB.PCI0.RP01.PEGP._ADR)
            External(\_SB.PCI0.RP01.PEGP._OFF, MethodObj) // ekran kartinin adresi        
            _OFF()          
        }
Denedim External ile olmadı. Zamanım artık çok kısıtlı lütfen
@montezuma hocamdan da yardımlarını bekliyorum :)
 

AD Engelleyici Tespit Edildi

Anlıyoruz, reklamlar can sıkıcı!

Elbette, reklam engelleme yazılımı reklamları engelleme konusunda harika bir iş çıkarsa da, web sitemizin faydalı özelliklerini de engeller. En iyi site deneyimi ve bize destek olmak için lütfen AdBlocker’ınızı devre dışı bırakın.

AD Reklam Engelleyiciyi Devre Dışı Bıraktım
Hayır teşekkürler