Nvidia Optimus Disable Etme Yaması - Mac OS X

Laptopda sistem bilgilerinde grafik kısmına girince 2 ekran kartı görünüyordu. GT 620M ve Intel HD 4000.

Sistem 1024 MB RAM'li HD 400o'i kullanıyordu. 1. ekran kartını sistemden yok eden yamayı Maciasl'de de denedim sorunsuz çalışıyor. Satın aldığım laptop Fujitsu AH532 G21 ama 2 ekran kartı olan laptoplarda 1. nVidia kartını bu yama disable yapacaktır.
Bu yama sisteminizdeki DSDT.aml ye uygulanmalı.
Google Docs - create and edit documents online, for free.
 
Konuyu biraz daha detaylandırabilir miyiz ? Mesela diğer dizüstü bilgisayarlar optimus özelliğini kapatabilmek için DSDT.aml düzenlemesi yaparken dikkat edebileceğimiz noktalar neler olabilir ?
 
1- Bu yamayı diğer laptoplarda çalışabilmesi için sadeleştirdim. Konu ingilizce forum sitelerinde çok tartışılmış çözüm önerileri sunulmuş ama bunları uygulamak programcılıkla uğraşmayan sıradan bir kullanıcı için çok zor -Bu verdiğim yama sizin laptop ta da çalışmalı benim çevremde arkadaşların laptoplarına uyguladım sorunsuz çalışdı. Çalışmıyorsa şunları uygulayın

2- MACOS kurarken usb den 10.9.x installer kullandıysanız şunu yapmanızı tavsiye ederim. Windows makinede Bu usb yi takın. İkinci bir usb bellek daha takın fat32 olarak formatlayın . Usb installer içeriğini yani windowsdan görülen fat32 içeriğini bu yeni usb belleğe kopyalayın. Orjinal usb osx installer diskinizi çıkarın bu zarar görmesin bu bellek 250MB dahi olabilir. Makineyi yeni usb bellekten boot ettirin. Sisteminize göre extra ayar yapmanız gerekiyorsa yapın. Boot yaptıracağınız hard disk volume ini seçin. F3 tuşuna basın 15 saniye bekleyin bu işlem size clover da SSDT-1.aml, …..,,,,SSDT-7.aml, SSDT-8.aml oluşturcak F4 tuşuna basarak saklayın oluşan yer bellekte /CLOVER/ACPI/origin/ içerisinde yer alacak.

SSDT-7.aml optimus bilgilerini içeriri SSDT-8.aml ise muhtenelen 2. ekran kartınız olcaktır.
3- SDT-7.aml yi MaciAsl ile aç
4- OPTIMUS kelimesini arat
5- Aşağıdaki gibi bir kod bulmalısın

…………………………

Scope (\_SB.PCI0.PEG0.PEGP)

{

Name (OMPR, 0x02)

Method (NVOP, 4, NotSerialized)

{

Name (_T_0, Zero)

Store ("------- NV OPTIMUS DSM --------", Debug)

If …

………………………….

Bizin hedefimiz bu ifade —> \_SB.PCI0.PEG0.PEGP



6- Biz dosyaya hiç bir şey yapmadık. Tekrar bu dosyayı masaüstüne saklamayı dene hata verecek.

hata ‘syntax error , unexpected PARSEOP_FIELD’
7- hatayı yok edelim. Hatanın olduğu satıra gidelim benim makinede böyle karışık bi kod çıktı.
Scope (\_SB.PCI0.PEG0.PEGP)

{

OperationRegion (NVHM, SystemMemory, NVHA (0x00020400), Field (NVHM, AnyAcc, NoLock, Preserve)

{

Offset (0x100),

NVHO, 32,

RVBS, 32,

Offset (0x400),

RBF1, 262144,

RBF2, 262144,

RBF3, 262144,

RBF4, 262144

})

}

bu kodun düzeltilmiş hali aşağıdaki gibi olmalıdır.

Scope (_SB.PCI0.PEG0.PEGP)
{
OperationRegion (NVHM, SystemMemory, 0x00020400, NVHA)
Field (NVHM, AnyAcc, NoLock, Preserve)
{
Offset (0x100),
NVHO, 32,
RVBS, 32,
Offset (0x400),
RBF1, 262144,
RBF2, 262144,
RBF3, 262144,
RBF4, 262144
}
}



8- bunu sakla recompile et hata vermeyecek

aynı dosyada definitionblock a git

en üstte aşağıdaki gibi kodlar olacak

External (\_SB_.PCI0.PEG0.PEGP._OFF, MethodObj) // 0 Arguments
External (\_SB_.PCI0.PEG0.PEGP._ON_, MethodObj) // 0 Arguments




bu ikisini ve yukarıda düzelttiğim program kodunu kendi DSDT.aml içine yapıştırmalısın

9- DSDT.aml içinde Method (_WAK, 1, Serialized) yi aratıp bul bu kodun hemen üstüne

Method (PINI, 0, NotSerialized)
{
\_SB.PCI0.PEG0.PEGP._OFF()
}


yukarıdaki 3 satır kodu yapıştır

10- Method (_WAK, 1, Serialized) içinde en sonlarda

Return (Package (0x02)

{

Zero,

Zero

})


kodlarını bul. ve en üstüne

PINI ()
WAK (Arg0)

kodlarını yapıştır.

yeni durumda kod bloğun aşağıdaki gibi görülmeli

Method (_WAK, 1, Serialized)
{
…………...
PINI ()
WAK (Arg0)

Return (Package (0x02)
{
Zero,
Zero
})
}


11- dsdt.aml içinde

Scope (_SB.PCI0)

{
Method (_INI, 0, NotSerialized)


kısmına git

ve PINI () yi yapıştır.

yeni durumda kodun şu şekilde olmalı

Scope (_SB.PCI0)
{
Method (_INI, 0, NotSerialized)
{
PINI ()
Store (0x07D0, OSYS)
If (CondRefOf (_OSI, Local0))
{
If (_OSI ("Windows 2001"))
{
Store (0x07D1, OSYS)
}

If (_OSI ("Windows 2001 SP1"))
{
Store (0x07D1, OSYS)
…………………

dsdt.aml yi sakla çık.tekrar makineni bu bellekten başlat . BİRİNCİ EKRAN kartın optimus sistem bilgilerinden gidecek.
avantajların
A- Bataryan buraya ekstra akım yollamayacak ve daha fazla dayanacak.
B- Macos burayı dikkate almayacak gereksiz sistem tanıma algılama ile uğraşmayacak daha kararlı bir sistemin olacak
 
Falacal ne kadar teşekkür etsem azdır.Yine de çok teşekkür ederim.

Yabancı forumlarda dolana dolana gına gelmişti.

Bir kaç şeye değinmek istiyorum.DSDT ikinci kartı kapatmak için yeterli oldu.Bazı dizüstü bilgisayarlarda ise SSDT ile kapatmak gerekiyormuş.

SSDT düzenlemesi yaparken:

OperationRegion (PCIS, SystemMemory, EBAS (0x0100), Field (PCIS, ByteAcc, NoLock, Preserve)

OperationRegion (NVHM, SystemMemory, NVHA (0x00010400), Field (NVHM, AnyAcc, NoLock, Preserve)


yukarıdaki satırlarda aşağıdaki hatayı veriyor.

syntax error , unexpected PARSEOP_FIELD

ve ayrıca
RBF3, 262144,
RBF4, 262144

yukarıdaki iki satır bende yok ama ekleme falan yaptım.Olmadı :(

Ama yardımcı olursanız da sebebini öğrenmeyi çok isterim.

Neyse DSDT düzenlemesi yaparak problemi bazı farklılıklar ile çözdüm.


Aşagıdaki satırı kullanmadım.
External (\_SB_.PCI0.PEG0.PEGP._ON_, MethodObj) // 0 Arguments


PINI ()
WAK (Arg0)
yandaki satırı silerek sorunu aştım.

Ayrıca sizden ilham alarak uygulamasını daha önce yapamadığım M_OF ile kapatma işlemini yapabiliyorum.


2'inci adımda anlatıklarını Ubuntu 14.04 canlı USB ile (/sys/firmware/acpi/tables) kopya ettim.Sorun olmaz sanırım ? Çünkü ben bir sorun yaşamadım.Verdiğiniz anlatım ile farklılık olur muydu ?

Olabildiğince açıklayıcı olmaya çalıştım. :)

Son olarak Mac kullanmak bir harika deneyimmiş daha önce Arch-KDE,Debian ,Ubuntu ... kullanmıştım ama Unix'in tadı Mac ile daha başka oluyormuş bunu öğrendim.


 
Son düzenleme:
1. Hatanın sebebini bulmak kolay bunu örnekle izah etmeye çalışayım
Aşağıdaki kod hata verecek , bunu düzeltelim

HATA VEREN KOD - (EN Sondaki parentezi kaldırıp operationregion kodunu iki parçalı koda çevirmeliyiz)

OperationRegion (NVHM, SystemMemory, NVHA (0x00020400), Field (NVHM, AnyAcc, NoLock, Preserve)
{
………
……..

})
-------
DÜZELTİLMİŞ KISIM (BAKIN SONDAKİ PARENTEZ YOK)

OperationRegion (NVHM, SystemMemory, 0x00020400, NVHA)

Field (NVHM, AnyAcc, NoLock, Preserve)
{
………
……..
}
------
SİZİN KODUNUZ

OperationRegion (PCIS, SystemMemory, EBAS (0x0100), Field (PCIS, ByteAcc, NoLock, Preserve)

OperationRegion (NVHM, SystemMemory, NVHA (0x00010400), Field (NVHM, AnyAcc, NoLock, Preserve)

HATA VERMEMESİ İÇİN DÖNÜŞTÜRELİM

OperationRegion (PCIS, SystemMemory, 0x0100, EBAS)

Field (PCIS, ByteAcc, NoLock, Preserve)

OperationRegion (NVHM, SystemMemory, 0x00010400, NVHA)

Field (NVHM, AnyAcc, NoLock, Preserve)

EN ALTLARDA PARENTEZ KAPATMA OLMALI ONUDA SİLMELİSİNİZ

Linuxden dsdt ve ssdt çıkarmakla , windowsdan çıkarmak arasında bir fark yok. Her iki işletim sistemide bilgisayarın biosunu okuyor ve bunu dosya haline getiriyor.
 
Falacal yardımınız teşekkür ederim.Söyledikleriniz harfiyen yaptım ama olmadı.Derlemeye çalıştığımda önceki iletimde belirttiğim 2 tane hatayı verip derlemiyor.

Rica etsem SSDT dosyasına uzman olarak bir de siz bakar mısınız ?
 
Son düzenleme:
Asıl işlerim ve ek işlerimden dolayı zamanı kısıtlı olan biriyim inanın dinlenmeye zaman bulamıyorum . Vaktim olsa sizin için uğrasırdım MacOs uzmanıda sayılmam eski bir programcıyım sadece. Bu arada gönderdğin dosya tek başına yeterli değil. yama yapılmamış kurcalanmamış, DSDT.aml ve diğer SSDT lerde bir arada olmalı.
 
Son düzenleyen: Moderatör:
Falacal optimus düzenlemesi gereken SSDT-7.aml dosyası.İstediğin gibi herhangi bir yama,düzenleme içermiyor.
 
Son düzenleme:
Bu verdiğiniz dosyalar müdahale edilmemiş ise biosunuzda hata olabilir bios bug diyede geçer dsdt.aml ilk açışta hata verdi düzeltim
düzenlediğm dsdt.aml ekte 4.0 da düzeltip acpi 5.0 lı sakladım. kapatıp tekrar açtım hata görünmüyor. bunu EFI/CLOVER/ACPI/patched içine koyarsanız optimus sistem bilgilerinden kaybolmalı . SSDT-7.aml nin hata vermesi önemli değil. Sistem bu dosyayı kullanmıyor bu dosya bizi bilgilendiriyor bunun içinden tanımlamaları felan çekip dsdt.aml içine ekliyoruz. Dsdt.aml hata veriyorsa ssdt-7.aml ye dönüp dsdt ye eklediğimiz kod nasıl kullanılmış diye bakıp hatayı gidermeye çalışıyoruz.

sizin dsdt.aml içinde Method (WAK, 1, NotSerialized) bulamadım .
aşağıdakini ekledim

Method (WAK, 1, NotSerialized)
{
}

ekledim.

Önemli olan sistem bilgilerinde ekran kartının tek görünmesi.
DSDT.aml.zip - Google Drive
 
Ben düzeltme ve saklama işlemini yani ikisini de acpi 5.0 ile yaptım.Ama sizdeki gibi bir hata bende olmuyor.Bunun yanı sıra DSDT Editor programında da bahsettiğiniz hata ya da eksik bölüm dediğiniz kısım görünmüyor.Method (WAK, 1, NotSerialized) eksik dediğiniz kısım bende görünüyor.Sizde görünmeyen bende görünen bölüme benzer yazıları yabancı forumlarda denk gelmişti.Bununla birlikte optimus kapatma olayında sorun yaşamıyorum.Nitekim sistem bilgilerinde ekran kartı tek görünüyor.Bununla birlikte makine bir o kadar sessiz çalışıp ısınma yapmıyor.

SSDT-7.aml derlerken aldığım hata benzerini yaşayan kişilerde var aşağıdaki bağlantıdan inceleyebilirsiniz.Orada problemi çözenler olmuş.

Belkide SSDT-7 dosyası DSDT üzerinden kapatılmış olan nvidia kısmını okuyamadığından böyle bir hata alıyor olabilir miyim acaba ? Çünkü sistemde sadece HD 3000 görünüyor.

DSDT patching to disable Nvidia card on Acer 5755G - Page 2
 
Son düzenleme:
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.

Yeni konular

Geri
Yukarı