1. Uyarı
Bu rehberi uygulayacak kişilerin bilmesi gerekenler;
Cihazınızda kullandığınız işletim sistemi en az Yosemite (10.10) olmalı ve Clover Bootloader kullanmanız gerekmektedir.
3. Cihazın hazırlanması;
DSDT yamalama konusunu bilmeniz gerektiğinden bahsetmiştik. Bu işleme başlamadan önce DSDT dosyanızın sisteminizin temel ihtiyaçlarına göre yamalanmış olması gerekmektedir. OSxinfo sitesinde rehberler altında bulunan DSDT / SSDT düzenleme Rehberini uygulamadan bir sonraki adıma geçmeyiniz. DSDT / SSDT Düzenleme Rehberi | osxinfo.net: Hackintosh Türkiye Destek Platformu
MaciASL programının son versiyonunu kullanmanız gerekmektedir Programın güncel sürümünü buradan indirebilirsiniz. RehabMan / OS-X-MaciASL-patchmatic / Downloads — Bitbucket
3.1 MaciASL programına VoodooI2C reposunu ekleme
3.4 GPIO Yamaları (Skylake üstü Sistemler İçin) Eğer cihazınız Skylake ve üzeri bir sisteme sahip ise GPIO yamasını yapmanız gerekmektedir.
4. GPIO Sabitleme;
Bu bölüm bazı sayısal değerleri manuel olarak bulup yamalanmış DSDT dosyasında uygun yerini bulup koymayı gerektirdiğinden biraz uğraştırıcıdır. Eğer DSDT dosyanızı daha öncede belirttiğim gibi OSxİnfo sitesinde rehberler altında bulunan DSDT / SSDT düzenleme Rehberini uygulamış ve sisteminizin kararlılığını sağlayan yamaları ve 3.1, 3.2 ve 3.3 numaralı konu başlıklarında belirtmiş olduğum yamaları da yapmış olduğunuzu kabul ediyoruz. Eğer henüz yapmadıysanız DSDT / SSDT Düzenleme Rehberi | osxinfo.net: Hackintosh Türkiye Destek Platformu linkinden sisteminizin DSDT dosyasının yamasını yapınız.
Öncelikle I2C cihazımızın ACPI Kimliğini tespit etmemiz gerekmektedir. Cihaz tiplerine göre yaygın olarak kullanılan ACPI Kimlikleri şunlardır;
Sizin cihazınız için doğru olan ACPI Kimliğini Windows da iken,
“Aygıt Yöneticisi/İnsan Arabirim Aygıtları/I2C HID Aygıtı”
üzerine gelerek Özellikleri açarak resimdeki şekilde olaşabilirsiniz.
Benim bilgisayarım için ACPI Kimliği “ETPD” dir.
4.1 İnterrupt Sabitleme numarasını tespit etme;
Programı IORegistryExplorer Download Mac linkinden indirin.
IORegistryExplorer Programını açın ve ACPI kimliğinizi “ETPD” arattırın. Eğer arama sonucunda ACPI Kimlik numaranı bulamadıysan muhtemelen yukarıda 3.2 inci madde de bahsettiğimiz Windows yamasını yapmamışsınızdır.
Resimdeki gibi bir ekran ile karşılaşmanız gerekmektedir. Eğer yukarıdaki gibi bir ekran ile karşılaşmadıysanız Sisteminize uygun kexti yükleyin sistemi yeniden başlatın. Tekrar bu noktaya geldiğinizde yukarıda resimde gösterilen numaraların ortaya çıktığını göreceksiniz.
Benim sistem için uygun Çekirdek Kext: VoodooI2C ve uydu kext VoodooI2CHID’dir. Ve bu çoğunlukla en uygun kombinasyondur.
Yukarıda belirtilen IOInterruptSpecifiers bölümüne geldiğinizde,
Resimde gösterilen yuvarlak içerisinde bulunan rakam sizin sisteminizin Onaltılık Sistem APIC pin numarasıdır. Bu rakamı bir yere not alın. Benim Sistemim için 0x6d (109)’dir.
Eğer sisteminizin APIC Pin Numarası 0x2F (47) den küçük yada eşit ise işiniz bayağı kolaylanmış olacak ve direk Kext Yükleme işlemine başlayabilirsiniz.
Onaltılık tan Ondalık sisteme çevirme; Hexadecimal to Decimal Converter linkinden yapılabilir.
Benim Sistem özelinde baktığımız taksirde; 0x6d (109) > 0x2F (47) olduğundan işim daha da zorlaşıyor.
Ayrıca aynı zamanda DSDT dosyasının içerisinde bulunan I2C Serial Bus isminin doğru bir şekilde adlandırıldığından emin olmanız gerekmektedir. ACPI Kimliğinizi “ETPD” DSDT dosyanızın içerisinde aratın, Eğer ACPI Kimliğinizin bulunduğu yerde içerisinde “Name (SBFB, ResourceTemplate ()” geçmiyorsa;
Aşağıdakine benzer bir kod bulacaksınız;
Bu durumda üst kasımda bulunan SBFI ismini SBFB olarak değiştirin Return kısmı ilerde değişeceğinden herhangi bir değişiklik yapmanıza gerek yoktur.
İsimden sonra gelen aşağıda belirtilen bölümü silelim,
Benim Sistemin Onaltılık Pin Numarası 0x6d (109) > 0x2F (47) olduğundan ilerlemeye devam ediyorum;
4.2 Cihazımızın GPIO-Pin’li olduğunudan emin olmalıyız,
Apple Driverları APIC Pin Numarası 0x2F (47) den büyük olan cihazları desteklemediği için burada VoodooI2C kextinin içerisinde yüklü olan VoodooGPIO driverı ile bu sınırlama aşılmaktadır.
Öncelikle cihazımızın GPIO Pini için uygun şekilde düzenlenip düzenlenmediğini tespit etmemiz gerekmektedir.
DSDT dosyamızda yine ACPI Kimliğini arıyoruz ve aşağıda yazan bölümü bulmaya çalışıyoruz;
Eğer yukarıdaki bölüm Cihazımızın ACPI Kimliğinin içerisinde mevcut ise, öncelikle Root bölümünde yada _CRS metodunun olduğu yerde bulunacaktır. Bu durumda cihazımızı Pinli kabul edeceğiz.
Eğer cihazımız pinli ve yukarıda görülen ve “// Pin list” yazısının altında bulunan numaralar sıfırdan farklı ise İyi-Pin’li olarak kabul edeceğiz.
Eğer yukarıda belirttiğim ismi geçen bölüm Bizim ACPI Kimliğimizin yani benim bilgisayar için “ETPD” bölümünün altında gerek root bölümünde ve gerekse _CRS metodunun olduğu yerde değil ise cihazımız pinlenmemiş olarak kabul edeceğiz.
Benim cihazımda “Name (SBFG, ResourceTemplate ()” arattığım zaman hiçbirisinin doğru konumda olmadığını görüyorum. Doğru Konum _SB.PCI0.I2C altında ACPI Kimliğim olan “ETPD” olmalıydı. Sonuç olarak benim cihazımda pinlenmemiş bir cihaz olduğundan bir sonraki adıma “Kayıp ResourceTemplate Ekleme” bölümüne geçeceğim.
4.3 Kayıp ResourceTemplate Ekleme,
Buraya geldiğimize göre cihazımız pinlenmemiştir, bu bölümde doğru “Name (SBFG, ResourceTemplate ()” bölümünü bularak cihazımızın doğru konumuna ekleyeceğiz.
Yukarıdaki kodu Doğru Konuma Benim Cihazım İçin "_SB.PCI0.I2C" altında ACPI Kimliğim olan “ETPD” altına ister root bölümüne isterseniz _CRS metodunun olduğu yere kopyalayarak ekliyoruz.
Benim sistem için “ETPD” bölümünün son hali bu şekilde oluyor;
Bu işlemden sonra cihazımız pinlenmiş hale gelmiş oldu. Ancak İyi-Pinlenmiş halde değil. Eğer cihazınız iyi pinli ise son adıma (4.5) geçebilirsiniz.
4.3 Cihazınızın iyi pinlenmiş olup olmadığını tespit etmek,
Cihazınızın ACPI Kimliğinin olduğu bölümde, ki benim sistem için “ETPD” içerisinde aşağıdaki kodlar var ise,
yukarıdaki kod tablosunda ve Pin List altında bulunan rakamlı bölüm 0x0000 olsa bile sisteminiz iyi pinlenmiş olabilir.
Bunu anlamak için ACPI Kimliğinizin olduğu bölümde _CRS metodunu bulun. Eğer aşağıdaki gibi bir Return döngüsü bulursanız
"Return (ConcatenateResTemplate (SBFB, SBFG))"
sisteminiz iyi pinlenmiştir. Ancak “Return (ConcatenateResTemplate (SBFB, SBFI))” ile karıştırmayalım. Bizim aradığımız içerisinde SBFI olan değil SBFG geçen Return döngüsü olmalıdır.
Eğer sisteminiz iyi pinlenmiş olarak tespit ettiyseniz son bölüme (4.5) geçebilirsiniz.
4.4 Sistemimizi manuel olarak iyi pinlenmiş hale getirmek,
Burada sistemimize manuel olarak GPIO numarası atamaya çalışacağız.
Daha önce cihazımızın Ondalık APIC pin numarasını bulmuştuk benim cihaz için “0x6d (109)”. Buradaki linkten coreboot/gpio_defs.h at master · coreboot/coreboot · GitHub açılan sayfada sağ tarafta bulunan kolondan Ondalık APIC Pin numaramızı buluyoruz.
Ve sol tarafta buluna bulunan GPP_XYY_IRQ şeklindeki tanımlamayı not ediyoruz. Benim cihaz için “GPP_D13_IRQ” değerini buldum.
Daha sonra bu linkten coreboot/gpio_soc_defs.h at master · coreboot/coreboot · GitHub yukarıda bulduğumuz değeri solda bulunan kolondan arıyoruz.
Ancak artık _IRQ yazısı görünmeyecektir. Bunu gözardı edebilirseniz. Benim sistem için “GPP_D13” yazısını arıyorum. Ve karşısına gelen değeri not ediyoruz. Bu değer bizim Onluk GPIO pin numaramızı ifade etmektedir. Benim sistem için “85” buldum.
Buradan çıkan sonucu Onaltılık sisteme çeviriyoruz. "85 (55)16 ". Eğer Ondalık APIC Pin Numaramız 0x55 (85), 0x5c (92) ile 0x77 (119) arasında ise bu numara sizin Onaltılık GPIO pin numaranızdır. Benim sistemimin numarası bu sınırların içerisinde değil maalesef. Bütün terslikler benim sistemimde var.
Böyle bir durumda 4.4 numaralı maddenin başındaki işlemi tekrar etmeniz gerekmekte ve bazı durumlarda aynı numaradan iki tane bulunabilmektedir. Bu şekilde bir durum oluştuğunda her iki rakamı da deneyerek sisteminizi hangisinin çalıştırdığını tespit etmeniz gerekmektedir.
Gelelim benim bilgisayara benim sistemimde tespit ettiğim numaralardan her ikisi içinde birer tane var ve yukarıda belirlediğim 0x55 (85) numaramı Ondalık GPIO Pin numaram olarak kabul etmek zorunda kaldım. Yani herhangi bir alternatif numara tespit edemedim çünkü tüm değerler bir adet olarak mevcut. Ancak sonuç benim için olumlu oldu korkulacak bir şey yok.
Tespit edilen Ondalık GPIO pin numarası Çok nadir durumlarda çalışmayabilmektedir, Böyle durumlarda 0x17, 0x1B, 0x34 ve 0x55 gibi genel kullanım numaralarını deneyebilirsiniz.
Tespit ettiğiniz Ondalık GPIO pin numaranızı ACPI Kimliğinizin bulunduğu yerde bulunan “SBFG” isminin altında bulunan //Pin list kısmına yazabilirsiniz. Benim sistemin Ondalık GPIO Pin Numarasını 0x55 örnek olarak kullanacak olursak oluşturduğumuz kod şu şekilde olmalıdır.
Cihazınız şu an itibariyle iyi pinlenmiş hale gelmiştir, bundan sonraki adıma geçebilirsiniz.
4.5 DSDT dosyamız tarafından tespit ettiğimiz GPIO Pin numaramızın sisteme tanıtıldığından emin olmak,
Son olarak, ACPI Kimliğimizin bulunduğu yerde bulunan _CRS metodunun içerisinde “Return (ConcatenateResTemplate (SBFB, SBFG))” ifadesinden başka bir “Return” cümlesinin olmadığından emin olalım. Aksi bir durumda diğer ifade ile “Return (ConcatenateResTemplate (SBFB, SBFG))” ifadesini yer değiştirmemiz gerekmektedir.
Daha açıklayıcı bir ifade ile Return (SBFI)” ile başlayan satırı şu şekilde değiştirin “Return (ConcatenateResTemplate (SBFB, SBFG))”
GPIO Pin Numara Tespit işlemi burada taamlanmış olmaktadır.
5. Kext Yükleme İşlemi,
Cihazımız hazır hale geldikten sonra sıra kext yükleme işlemine gelmiş bulunmaktadır. Kext için son sürüm kextleri buradan indirebilirisiniz. Releases · alexandred/VoodooI2C · GitHub.
Genellikle bir tanesi çekirdek kext, diğeri ise uydu kext olmak üzere iki tane kext yükleyerek sisteminizi çalışır hale getirebilirsiniz. Bazı durumlarda birden fazla uydu kext yüklemeniz de gerekebilir.
Çekirdek kext (VoodooI2C.kext) ve seçmiş olduğunuz uydu kextlerini Clover/kexts/other altına kopyalayarak sisteminizi yeniden başlatınız.
Benim sistemim için (FTE1001” VoodooI2C.kext ve VoodooI2CHID.kext yeterli olmaktadır. Ancak İzleme Dörtgeni olarak tanımamaktadır. Bazı sistemlerde özellikle “ELAN” serisi, bu tabii benim şahsi tespitim, İzleme Dörtgeni olarak tanımıştır. Bakınız, ÇÖZÜLDÜ - Asus TP410UR ELAN1200 Touchpad Problemi | Sayfa 4 | osxinfo.net: Hackintosh Türkiye Destek Platformu
Faydalanılan Siteler;
Documentation
Documentation
Documentation
Releases · alexandred/VoodooI2C · GitHub
Elimden geldiğince herkesin anlayabileceği şekilde yapmaya çalıştım, kendi yaptığım uygulamalıda örnek olarak vermek suretiyle ancak rehber bayağı uzun. Fakat uygulamaya geçildiğinde bir kaç uygulamadan sonra yapılan işlemin çok kısa olduğunu göreceksiniz ve çok pratik bir şekilde sonuca ulaşabileceksiniz. Bir hatamız varsa affola yöneticilerimizin desteğini bekleriz.
Keyifli Hackintoshlar ve bol şans.
Bu rehberi uygulayacak kişilerin bilmesi gerekenler;
- Kext nasıl yüklenir,
- DSDT dosyası nasıl yamalanır,
- Config dosyası nasıl düzenlenir.
1) Cihazınız İntel işlemciye (genellikle i3 / i5 / i7) sahip olmalı ve en az Haswell mimarisine sahip olmalıdır.
Eğer sisteminizin mimarisi “4 - Haswell” altında çıkarsa sisteminiz VoodooI2C.kext’i için uygun değildir.
2) Sisteminiz bir windows yüklü olarak geldiyse bu minimum Windows 7 olmalıdır. Windows 7’nin altında bir işletim sistemi yüklü olarak gelen sistemlerde bu yöntem çalışmayacaktır. Eğer bir işletim sistemi yüklü olarak gelmediyse yani “freedos” ise bu maddeyi dikkate almayın.
3) Cihazınızda aşağıda belirtilen ve desteklenen bir I2C denetleyicisi ve I2C-HID aygıtı olmalıdır.
1. 4 - Haswell
2. 5 - Broadwell
3. 6 - Skylake
4. 7 - Kaby Lake
5. 8 - Kaby Lake R
CPU nuzun hangi mimariye sahip olduğunu şu şekilde tespit edebilirsiniz. Örnek “İntel i7-6200U” burada “6200U” yazan yerin başında bulunan “6” altı rakamı sizin işlemcinizin hangi mimariye sahip olduğunu göstermektedir.2. 5 - Broadwell
3. 6 - Skylake
4. 7 - Kaby Lake
5. 8 - Kaby Lake R
Eğer sisteminizin mimarisi “4 - Haswell” altında çıkarsa sisteminiz VoodooI2C.kext’i için uygun değildir.
2) Sisteminiz bir windows yüklü olarak geldiyse bu minimum Windows 7 olmalıdır. Windows 7’nin altında bir işletim sistemi yüklü olarak gelen sistemlerde bu yöntem çalışmayacaktır. Eğer bir işletim sistemi yüklü olarak gelmediyse yani “freedos” ise bu maddeyi dikkate almayın.
3) Cihazınızda aşağıda belirtilen ve desteklenen bir I2C denetleyicisi ve I2C-HID aygıtı olmalıdır.
1. “INT33C2” and “INT33C3” - Haswell
2. “INT3432” and “INT3433” - Broadwell
3. “pci8086,9d60', 'pci8086,9d61', 'pci8086,a160' and 'pci8086,a161' - Skylake/Kaby Lake
2. “INT3432” and “INT3433” - Broadwell
3. “pci8086,9d60', 'pci8086,9d61', 'pci8086,a160' and 'pci8086,a161' - Skylake/Kaby Lake
Cihazınızda kullandığınız işletim sistemi en az Yosemite (10.10) olmalı ve Clover Bootloader kullanmanız gerekmektedir.
3. Cihazın hazırlanması;
DSDT yamalama konusunu bilmeniz gerektiğinden bahsetmiştik. Bu işleme başlamadan önce DSDT dosyanızın sisteminizin temel ihtiyaçlarına göre yamalanmış olması gerekmektedir. OSxinfo sitesinde rehberler altında bulunan DSDT / SSDT düzenleme Rehberini uygulamadan bir sonraki adıma geçmeyiniz. DSDT / SSDT Düzenleme Rehberi | osxinfo.net: Hackintosh Türkiye Destek Platformu
MaciASL programının son versiyonunu kullanmanız gerekmektedir Programın güncel sürümünü buradan indirebilirsiniz. RehabMan / OS-X-MaciASL-patchmatic / Downloads — Bitbucket
3.1 MaciASL programına VoodooI2C reposunu ekleme
- MaciASL programının Özelliklerine (Preferences) giriyoruz.
- Resimde görüldüğü üzere burada verdiğim http://raw.github.com/alexandred/VoodooI2C-Patches/master adresi repo olarak ekliyoruz.
- Özellikler penceresini kapatıyoruz.
- Makineniz ile gelen windows sürümünün yamasını seçerek uygulayın. Eğer makineniz bir windows ile gelmediyse veya hangi sürüm olduğunu tam olarak bilmiyorsanız Windows 10’dan başlayarak geriye doğru yamaları tek tek deneyerek VoodooI2C yamasının hangisinde çalıştığını bulmanız gerekecektir. Yeni bilgisayarlarda genellikle Windows 10 yaması çalışmaktadır.
3.4 GPIO Yamaları (Skylake üstü Sistemler İçin) Eğer cihazınız Skylake ve üzeri bir sisteme sahip ise GPIO yamasını yapmanız gerekmektedir.
4. GPIO Sabitleme;
Bu bölüm bazı sayısal değerleri manuel olarak bulup yamalanmış DSDT dosyasında uygun yerini bulup koymayı gerektirdiğinden biraz uğraştırıcıdır. Eğer DSDT dosyanızı daha öncede belirttiğim gibi OSxİnfo sitesinde rehberler altında bulunan DSDT / SSDT düzenleme Rehberini uygulamış ve sisteminizin kararlılığını sağlayan yamaları ve 3.1, 3.2 ve 3.3 numaralı konu başlıklarında belirtmiş olduğum yamaları da yapmış olduğunuzu kabul ediyoruz. Eğer henüz yapmadıysanız DSDT / SSDT Düzenleme Rehberi | osxinfo.net: Hackintosh Türkiye Destek Platformu linkinden sisteminizin DSDT dosyasının yamasını yapınız.
Öncelikle I2C cihazımızın ACPI Kimliğini tespit etmemiz gerekmektedir. Cihaz tiplerine göre yaygın olarak kullanılan ACPI Kimlikleri şunlardır;
- Touchpadler - TPDX, ELAN, SYNA, CYPR, ETPD
- Dokunmatik Ekranlar - TPLX, ELAN, ETPD, SYNA, ATML
- Algılayıcı Hubları - SHUB
Sizin cihazınız için doğru olan ACPI Kimliğini Windows da iken,
“Aygıt Yöneticisi/İnsan Arabirim Aygıtları/I2C HID Aygıtı”
üzerine gelerek Özellikleri açarak resimdeki şekilde olaşabilirsiniz.
Benim bilgisayarım için ACPI Kimliği “ETPD” dir.
4.1 İnterrupt Sabitleme numarasını tespit etme;
Programı IORegistryExplorer Download Mac linkinden indirin.
IORegistryExplorer Programını açın ve ACPI kimliğinizi “ETPD” arattırın. Eğer arama sonucunda ACPI Kimlik numaranı bulamadıysan muhtemelen yukarıda 3.2 inci madde de bahsettiğimiz Windows yamasını yapmamışsınızdır.
Resimdeki gibi bir ekran ile karşılaşmanız gerekmektedir. Eğer yukarıdaki gibi bir ekran ile karşılaşmadıysanız Sisteminize uygun kexti yükleyin sistemi yeniden başlatın. Tekrar bu noktaya geldiğinizde yukarıda resimde gösterilen numaraların ortaya çıktığını göreceksiniz.
Benim sistem için uygun Çekirdek Kext: VoodooI2C ve uydu kext VoodooI2CHID’dir. Ve bu çoğunlukla en uygun kombinasyondur.
Yukarıda belirtilen IOInterruptSpecifiers bölümüne geldiğinizde,
Resimde gösterilen yuvarlak içerisinde bulunan rakam sizin sisteminizin Onaltılık Sistem APIC pin numarasıdır. Bu rakamı bir yere not alın. Benim Sistemim için 0x6d (109)’dir.
Eğer sisteminizin APIC Pin Numarası 0x2F (47) den küçük yada eşit ise işiniz bayağı kolaylanmış olacak ve direk Kext Yükleme işlemine başlayabilirsiniz.
Onaltılık tan Ondalık sisteme çevirme; Hexadecimal to Decimal Converter linkinden yapılabilir.
Benim Sistem özelinde baktığımız taksirde; 0x6d (109) > 0x2F (47) olduğundan işim daha da zorlaşıyor.
Ayrıca aynı zamanda DSDT dosyasının içerisinde bulunan I2C Serial Bus isminin doğru bir şekilde adlandırıldığından emin olmanız gerekmektedir. ACPI Kimliğinizi “ETPD” DSDT dosyanızın içerisinde aratın, Eğer ACPI Kimliğinizin bulunduğu yerde içerisinde “Name (SBFB, ResourceTemplate ()” geçmiyorsa;
Aşağıdakine benzer bir kod bulacaksınız;
Kod:
Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings
{
Name (SBFI, ResourceTemplate ()
{
I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C1",
0x00, ResourceConsumer, , Exclusive,
)
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
{
0x0000006D,
}
})
Return (SBFI)
}
İsimden sonra gelen aşağıda belirtilen bölümü silelim,
Kod:
“Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
{
0x0000006D,
}”
4.2 Cihazımızın GPIO-Pin’li olduğunudan emin olmalıyız,
Apple Driverları APIC Pin Numarası 0x2F (47) den büyük olan cihazları desteklemediği için burada VoodooI2C kextinin içerisinde yüklü olan VoodooGPIO driverı ile bu sınırlama aşılmaktadır.
Öncelikle cihazımızın GPIO Pini için uygun şekilde düzenlenip düzenlenmediğini tespit etmemiz gerekmektedir.
DSDT dosyamızda yine ACPI Kimliğini arıyoruz ve aşağıda yazan bölümü bulmaya çalışıyoruz;
Kod:
Name (SBFG, ResourceTemplate ()
{
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
"\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0000
}
})
Eğer cihazımız pinli ve yukarıda görülen ve “// Pin list” yazısının altında bulunan numaralar sıfırdan farklı ise İyi-Pin’li olarak kabul edeceğiz.
Eğer yukarıda belirttiğim ismi geçen bölüm Bizim ACPI Kimliğimizin yani benim bilgisayar için “ETPD” bölümünün altında gerek root bölümünde ve gerekse _CRS metodunun olduğu yerde değil ise cihazımız pinlenmemiş olarak kabul edeceğiz.
Benim cihazımda “Name (SBFG, ResourceTemplate ()” arattığım zaman hiçbirisinin doğru konumda olmadığını görüyorum. Doğru Konum _SB.PCI0.I2C altında ACPI Kimliğim olan “ETPD” olmalıydı. Sonuç olarak benim cihazımda pinlenmemiş bir cihaz olduğundan bir sonraki adıma “Kayıp ResourceTemplate Ekleme” bölümüne geçeceğim.
4.3 Kayıp ResourceTemplate Ekleme,
Buraya geldiğimize göre cihazımız pinlenmemiştir, bu bölümde doğru “Name (SBFG, ResourceTemplate ()” bölümünü bularak cihazımızın doğru konumuna ekleyeceğiz.
Kod:
Name (SBFG, ResourceTemplate ()
{
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
"\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0000
}
})
Benim sistem için “ETPD” bölümünün son hali bu şekilde oluyor;
Kod:
Device (ETPD)
{
Name (_ADR, One) // _ADR: Address
Name (EPID, Package (0x04)
{
"ELAN1000",
"N/A",
"N/A",
"N/A"
})
Name (FPID, Package (0x04)
{
"FTE1001",
"N/A",
"N/A",
"N/A"
})
Method (_HID, 0, NotSerialized) // _HID: Hardware ID
{
If (ELAN)
{
Return (DerefOf (Index (EPID, TPSL)))
}
If (FOLT)
{
Return (DerefOf (Index (FPID, TPSL)))
}
Return ("ELAN1010")
}
Name (_CID, "PNP0C50") // _CID: Compatible ID
Name (_UID, One) // _UID: Unique ID
Name (_S0W, 0x03) // _S0W: S0 Device Wake State
Method (_S3W, 0, NotSerialized) // _S3W: S3 Device Wake State
{
If (LEqual (S0ID, Zero))
{
Return (0x03)
}
Else
{
Return (Zero)
}
}
Method (XDSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
If (LEqual (Arg0, ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
If (LEqual (Arg2, Zero))
{
If (LEqual (Arg1, One))
{
Return (Buffer (One)
{
0x03
})
}
Else
{
Return (Buffer (One)
{
0x00
})
}
}
If (LEqual (Arg2, One))
{
Return (One)
}
}
Else
{
Return (Buffer (One)
{
0x00
})
}
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (LEqual (TPIF, Zero))
{
Return (Zero)
}
If (And (DSYN, One))
{
Return (Zero)
}
Return (0x0F)
}
Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings
{
Name (SBFB, ResourceTemplate ()
{
I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C1",
0x00, ResourceConsumer, , Exclusive,
)
})
Name (SBFG, ResourceTemplate ()
{
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
"\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0000
}
})
Return (SBFI)
}
}
}
4.3 Cihazınızın iyi pinlenmiş olup olmadığını tespit etmek,
Cihazınızın ACPI Kimliğinin olduğu bölümde, ki benim sistem için “ETPD” içerisinde aşağıdaki kodlar var ise,
Kod:
Name (SBFG, ResourceTemplate ()
{
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
"\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0000
}
})
Bunu anlamak için ACPI Kimliğinizin olduğu bölümde _CRS metodunu bulun. Eğer aşağıdaki gibi bir Return döngüsü bulursanız
"Return (ConcatenateResTemplate (SBFB, SBFG))"
sisteminiz iyi pinlenmiştir. Ancak “Return (ConcatenateResTemplate (SBFB, SBFI))” ile karıştırmayalım. Bizim aradığımız içerisinde SBFI olan değil SBFG geçen Return döngüsü olmalıdır.
Eğer sisteminiz iyi pinlenmiş olarak tespit ettiyseniz son bölüme (4.5) geçebilirsiniz.
4.4 Sistemimizi manuel olarak iyi pinlenmiş hale getirmek,
Burada sistemimize manuel olarak GPIO numarası atamaya çalışacağız.
Daha önce cihazımızın Ondalık APIC pin numarasını bulmuştuk benim cihaz için “0x6d (109)”. Buradaki linkten coreboot/gpio_defs.h at master · coreboot/coreboot · GitHub açılan sayfada sağ tarafta bulunan kolondan Ondalık APIC Pin numaramızı buluyoruz.
Ve sol tarafta buluna bulunan GPP_XYY_IRQ şeklindeki tanımlamayı not ediyoruz. Benim cihaz için “GPP_D13_IRQ” değerini buldum.
Daha sonra bu linkten coreboot/gpio_soc_defs.h at master · coreboot/coreboot · GitHub yukarıda bulduğumuz değeri solda bulunan kolondan arıyoruz.
Ancak artık _IRQ yazısı görünmeyecektir. Bunu gözardı edebilirseniz. Benim sistem için “GPP_D13” yazısını arıyorum. Ve karşısına gelen değeri not ediyoruz. Bu değer bizim Onluk GPIO pin numaramızı ifade etmektedir. Benim sistem için “85” buldum.
Buradan çıkan sonucu Onaltılık sisteme çeviriyoruz. "85 (55)16 ". Eğer Ondalık APIC Pin Numaramız 0x55 (85), 0x5c (92) ile 0x77 (119) arasında ise bu numara sizin Onaltılık GPIO pin numaranızdır. Benim sistemimin numarası bu sınırların içerisinde değil maalesef. Bütün terslikler benim sistemimde var.
Böyle bir durumda 4.4 numaralı maddenin başındaki işlemi tekrar etmeniz gerekmekte ve bazı durumlarda aynı numaradan iki tane bulunabilmektedir. Bu şekilde bir durum oluştuğunda her iki rakamı da deneyerek sisteminizi hangisinin çalıştırdığını tespit etmeniz gerekmektedir.
Gelelim benim bilgisayara benim sistemimde tespit ettiğim numaralardan her ikisi içinde birer tane var ve yukarıda belirlediğim 0x55 (85) numaramı Ondalık GPIO Pin numaram olarak kabul etmek zorunda kaldım. Yani herhangi bir alternatif numara tespit edemedim çünkü tüm değerler bir adet olarak mevcut. Ancak sonuç benim için olumlu oldu korkulacak bir şey yok.
Tespit edilen Ondalık GPIO pin numarası Çok nadir durumlarda çalışmayabilmektedir, Böyle durumlarda 0x17, 0x1B, 0x34 ve 0x55 gibi genel kullanım numaralarını deneyebilirsiniz.
Tespit ettiğiniz Ondalık GPIO pin numaranızı ACPI Kimliğinizin bulunduğu yerde bulunan “SBFG” isminin altında bulunan //Pin list kısmına yazabilirsiniz. Benim sistemin Ondalık GPIO Pin Numarasını 0x55 örnek olarak kullanacak olursak oluşturduğumuz kod şu şekilde olmalıdır.
Kod:
Name (SBFG, ResourceTemplate ()
{
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
"\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x55
}
})
4.5 DSDT dosyamız tarafından tespit ettiğimiz GPIO Pin numaramızın sisteme tanıtıldığından emin olmak,
Son olarak, ACPI Kimliğimizin bulunduğu yerde bulunan _CRS metodunun içerisinde “Return (ConcatenateResTemplate (SBFB, SBFG))” ifadesinden başka bir “Return” cümlesinin olmadığından emin olalım. Aksi bir durumda diğer ifade ile “Return (ConcatenateResTemplate (SBFB, SBFG))” ifadesini yer değiştirmemiz gerekmektedir.
Daha açıklayıcı bir ifade ile Return (SBFI)” ile başlayan satırı şu şekilde değiştirin “Return (ConcatenateResTemplate (SBFB, SBFG))”
GPIO Pin Numara Tespit işlemi burada taamlanmış olmaktadır.
5. Kext Yükleme İşlemi,
Cihazımız hazır hale geldikten sonra sıra kext yükleme işlemine gelmiş bulunmaktadır. Kext için son sürüm kextleri buradan indirebilirisiniz. Releases · alexandred/VoodooI2C · GitHub.
Genellikle bir tanesi çekirdek kext, diğeri ise uydu kext olmak üzere iki tane kext yükleyerek sisteminizi çalışır hale getirebilirsiniz. Bazı durumlarda birden fazla uydu kext yüklemeniz de gerekebilir.
Çekirdek kext (VoodooI2C.kext) ve seçmiş olduğunuz uydu kextlerini Clover/kexts/other altına kopyalayarak sisteminizi yeniden başlatınız.
Benim sistemim için (FTE1001” VoodooI2C.kext ve VoodooI2CHID.kext yeterli olmaktadır. Ancak İzleme Dörtgeni olarak tanımamaktadır. Bazı sistemlerde özellikle “ELAN” serisi, bu tabii benim şahsi tespitim, İzleme Dörtgeni olarak tanımıştır. Bakınız, ÇÖZÜLDÜ - Asus TP410UR ELAN1200 Touchpad Problemi | Sayfa 4 | osxinfo.net: Hackintosh Türkiye Destek Platformu
Faydalanılan Siteler;
Documentation
Documentation
Documentation
Releases · alexandred/VoodooI2C · GitHub
Elimden geldiğince herkesin anlayabileceği şekilde yapmaya çalıştım, kendi yaptığım uygulamalıda örnek olarak vermek suretiyle ancak rehber bayağı uzun. Fakat uygulamaya geçildiğinde bir kaç uygulamadan sonra yapılan işlemin çok kısa olduğunu göreceksiniz ve çok pratik bir şekilde sonuca ulaşabileceksiniz. Bir hatamız varsa affola yöneticilerimizin desteğini bekleriz.
Keyifli Hackintoshlar ve bol şans.
Son düzenleme:
- BootLoader
- OpenCore 0.9.8 (Dev) / Sonoma
- Laptop Modeli
- Asus VivoBook x571li-bq377
- İşlemci Modeli
- Intel Core i7-10870H
- Grafik Kartı
- Intel(R) HD Graphics 630 & Nvidia Geforce 1650Ti
- Ses Kartı Modeli
- Realtek Alc 255 (Alc_ID:18)
- Ağ Aygıtları
- Broadcom BCM4350 (BT BCM2045A0 Bluetooth 4.0)
- Disk ve RAM
- Crucial P5+ M2 1TB SSD - 16GB DDR4 2667 Mhz