Bildiğiniz üzere Hackintosh kurulumda en büyü sıkıntılardan birisi, eğer bir ATI / AMD Grafik kartınız varsa bunu tanıtmak. Çoğu durumda kartlarımızın doğru olarak tanıtılamamasının sebebi, kext içinde tanımlı olan bağlantı portları ile grafik kartımızın bağlantı portlarının uyuşmaması. Bununla ilgili daha fazla bilgiye şu bağlantıdan ulaşabilirsiniz.
ATI/AMD Ekran Kartları İçin Uyumluluk Rehberi
Bu rehberde ise gartifk kartınıza uygun framebuffer düzenlemesini ve bunu Clover içine nasıl entegre edeceğinizi anlatacağım.
ADIM 1; ROM Dosyasının çıkartılması;
- Cihazı Windows ile başlatın.
- GPU-Z indirin:
TechPowerUp GPU-Z v0.6.6 - GPU-Z açın.
- Aşağıdaki ekran gözükecek:
- BIOS Versiyonunu bulun:
- ROM ikonunua tıklayarak ATI/ AMD ROM’u çıkartın ve ROM’ Flash diske kaydedin.
- Sistemi Mac OS X ile başlatın.
ADIM 2; Uygun Framebuffer Bulunması
Bu adımda grafik kartınız içn uygun Framebuffer'ı nasıl bulacağınızı görelim. Uygun Framebuffer kodlarını bulmak için izlenen yöntem AMDXXXXControllers.kexts içindeki FB kodunu ayıklamak için "ati-personality.pl"komut dosyası kullanmak. Ancak bu komutu kullanmak Xcode kurulumu gerektiğinden bu uygulamayı kullanmayanları düşünerek ve işinizi biraz kolaylaştırmak adına AMDXXXXControllers.kexts içindeki güncel FB kodunu ayıklayıp aşağıda paylaştım.
ATI Framebuffer Sierra.zip
High Sierra Güncel Framebuffer;
ATI FRAMEBUFFER.txt.zip
Dosyayı açıp incelerseniz uzun framebufferlerin uzun kodlar ile tanımlanmış olduğunu görebilirsiniz. Burada yama işlemi yapmadan önce sizin kartınıza uygun frambufferları tespit etmek önemlidir. Zira bu sayede yama işlemine gerek kalmadan sadece kartınıza uygun olabilecek Framebuffer kodları ile kartınızı tanıtabilir ya da yama işlemini kolaylıkla yapıp kartınızı sorunsuzca kullanabilirsiniz.
Bunun için ilk olarak grafik kartınızdaki bağlantıları portlarını tespit edin. Bu rehberde üstünde çalışılan kart olan Radeon R9 270X üzerinde dört adet konektör var. 2 X DVI, 1X HDMI ve 1X DP. Yani bizim dört konektöre sahip Framebuffer'lara ihtiyacamız var.
Bunu tespit ettikten sonra yapılacak iş, dosya içerisinde 4 konektörle tanımlanmış Framebufferlerı tespit etmek.
Yukarıda dediğimiz gibi, kullandığımız kart Radeon R9 270X ve bunun tanımlaması bu şekilde;
Personality: Futomaki
ConnectorInfo count in decimal: 4
Yani bizim dosya içerisnde bakacağımız FB düzenleri 4 konektör içerenler olacak. Radeon R9 270X kartı, AMD7000Controller.kext tarafından çalıştırılır ve bu sürücünün içerdiği FB'lar şunlardır; MaguroS, Maguro, KaniS, Kani, Junsai, IkuraS, Ikura, OPM, Hamachi, Futomaki, Gari, Ebi, Dashimaki, Chutoro, Buri, Aji.
Dediğimiz gibi burada bizim baktığımız Radeon R9 270X için. Eğer kartınız mesela Radeon 6850HD ise bakmanız gereken Frameebufer'lar AMD6000Controller.kext içinde olacaktır.
Şimdi elimizde bizim kartımız için FB'ler var. Yapmamız gereken bunlardan hangisinin bizim kartımızı doğru bir şekilde çalıştıracağını bulmak. Bunun için Config dosyanızı açın ve Graphics seçeneklerinde "FBName" yazan yere uygun FB isimlerini girin. Ardından sistemi yeniden başlatın. Eğer girdiğiniz FB ismi uygun ise sisteminiz sorunsuz açılacaktır. Ancak burada iki durum oluşabilir.
Birincisi sistem açılır ve siyah ekran hatası alırsınız ancak monitor çalışmaktadır. Bu atadığınız FB'nin çalıştığı anlamına gelir, ancak ayrılmış AMD Denetleyici kextindeki bağlayıcı kodları uyuşmuyor demektir. Bu durumda yapmanız gereken kasadaki Güç düğmesine basarak bilgisayarınızı basitçe uyutun. Sistem uyandıktan sonra bilgisayarınızın ekranı yeniden aktifleşecektir.
Diğer tüm durumlarda, büyük olasılıkla monitörünüz otomatik olarak kapanacaktır. Bu, atanan FB'nin çalışmadığı veya GPU'nuzla uyumlu olmayan başka bir FB kullanıdğınız anlamına gelir. Bu durumda tavsiyem, bilgisayarınızı kapatmanızdır. Bunu yapmanın en iyi yolu, bilgisayarı Command + Option + Control + Eject (PC klavyelerindeki Eject= F12 tuşudur) tuşları ile kapatılmasını sağlamaktır.
Bu noktadan sonra (biraz sabırla) yapmanız gereken , Config dosyanıza tek tek FB isimlerini girerek hangi FB'nin sizin kartınızla uyumlu olduğunu tespit etmektir. Doğru FB tespit ettikten sonra bir sonraki adıma geçebilirsiniz.
ADIM 3: FrameBuffer Kod Yapılandırması
Buradaki adım en önemli adımdır. Zira burada Grafik kartınızdaki konektör çıkış sinyalini tanımlayan sürücü içindeki onaltılık değerler değiştirilecektir.
Bu işlem için varolan ROM dosyasından çıkarılan doğru değerlere ihtiyacımız olacak. Bunun için iki komut dosyası kullanacağız: radeon_bios_decode ve redsock_bios_decoder komut dosyaları (Konu sonunda paylaşıldı) . Bu iki komut dosyasını kullanmamazın sebebi, her ikisininde farklı sonuçlar vermesi ve bu iki farklı değerin bizim yapacağımız düzenlemeler için önemli olması.
Bu her iki komut dosyasını kullanmak için aşağıdaki adımları takip edin.
- Terminal açın.
- Betiği Terminal içine sürükleyip bırakın:
- Terminal içine (< ) girin:
- ATI / AMD ROM’u terminal içine sürükleyip bırakın:
- Enter basın.
radeon_bios_decode bize aşağıdaki sonuçları çıkarttı;
Kod:
ATOM BIOS Rom:
SubsystemVendorID: 0x148c SubsystemID: 0x2336
IOBaseAddress: 0x0000
Filename: E8B11LCC.HHW
BIOS Bootup Message:
C63101 CURACAO XT 2GB GDDR5 64Mx32 E8B11LCC.HHW 2013
PCI ID 1002: 6810
Connector at index 0
Type [offset 43522]: DisplayPort (10)
Encoder [offset 43526]: INTERNAL_UNIPHY2 (0x21)
i2cid [offset 43632]: 0x90, OSX senseid: 0x1
Connector at index 1
Type [offset 43532]: HDMI-A (11)
Encoder [offset 43536]: INTERNAL_UNIPHY2 (0x21)
i2cid [offset 43659]: 0x92, OSX senseid: 0x3
Connector at index 2
Type [offset 43542]: DVI-I (2)
Encoder [offset 43546]: INTERNAL_UNIPHY (0x1e)
i2cid [offset 43696]: 0x95, OSX senseid: 0x6
Connector at index 3
Type [offset 43552]: DVI-I (2)
Encoder [offset 43556]: INTERNAL_KLDSCP_DAC1 (0x15)
i2cid [offset 43696]: 0x95, OSX senseid: 0x6
Connector at index 4
Type [offset 43562]: DVI-D (3)
Encoder [offset 43566]: INTERNAL_UNIPHY1 (0x20)
i2cid [offset 43723]: 0x94, OSX senseid: 0x5
Kod:
E8B11LCC.HHW:
C63101 CURACAO XT 2GB GDDR5 64Mx32 E8B11LCC.HHW 2013
Subsystem Vendor ID: 148c
Subsystem ID: 2336
Object Header Structure Size: 355
Connector Object Table Offset: 48
Router Table Object Offset: 0
Encoder Object Table Offset: fd
Display Path Table Offset: 12
Connector Object Id [19] which is [DISPLAY_PORT]
encoder obj id [0x21] which is [INTERNAL_UNIPHY2 (osx txmit 0x12 [duallink 0x2] enc 0x4)] linkb: false
Connector Object Id [12] which is [HDMI_TYPE_A]
encoder obj id [0x21] which is [INTERNAL_UNIPHY2 (osx txmit 0x22 [duallink 0x2] enc 0x5)] linkb: true
Connector Object Id [2] which is [DVI_I]
encoder obj id [0x1e] which is [INTERNAL_UNIPHY (osx txmit 0x10 [duallink 0x0] enc 0x0)] linkb: false
Connector Object Id [2] which is [DVI_I]
encoder obj id [0x15] which is [INTERNAL_KLDSCP_DAC1 (osx txmit 0x00 0x10 enc)] linkb: false
Connector Object Id [4] which is [DVI_D]
encoder obj id [0x20] which is [INTERNAL_UNIPHY1 (osx txmit 0x11 [duallink 0x1] enc 0x2)] linkb: false
01 [DISPLAY_PORT]
redsock_bios_decoder :
enc obj 0x21 transmitter 0x12 dual link 0x2 enc 0x4
radeon_bios_decode:
Connector at index 0
Type [@offset 43522]: DisplayPort (10)
Encoder [@offset 43526]: INTERNAL_UNIPHY2 (0x21)
i2cid [@offset 43632]: 0x90, OSX senseid: 0x1
Kod yapılandırması: 12 04 01 01
02 [HDMI_TYPE_A]
redsock_bios_decoder :
enc obj 0x21 transmitter 0x22 dual link 0x2 enc 0x5
radeon_bios_decode:
Connector at index 1
Type [@offset 43532]: HDMI-A (11)
Encoder [@offset 43536]: INTERNAL_UNIPHY2 (0x21)
i2cid [@offset 43659]: 0x92, OSX senseid: 0x3
Kod yapılandırması: 22 05 02 03
03 [DVI_I]
redsock_bios_decoder :
enc obj 0x1e transmitter 0x10 dual link 0x0 enc 0x0
radeon_bios_decode:
Connector at index 2
Type [@offset 43542]: DVI-I (2)
Encoder [@offset 43546]: INTERNAL_UNIPHY (0x1e)
i2cid [@offset 43696]: 0x95, OSX senseid: 0x6
Kod yapılandırması: 10 00 03 06
04 [DVI_I]
redsock_bios_decoder :
enc obj 0x15 transmitter 0x00 enc 0x10
radeon_bios_decode:
Connector at index 3
Type [@offset 43552]: DVI-I (2)
Encoder [@offset 43556]: INTERNAL_KLDSCP_DAC1 (0x15)
i2cid [@offset 43696]: 0x95, OSX senseid: 0x6
Kod yapılandırması: 00 10 04 06
05 [DVI_D]
redsock_bios_decoder :
enc obj 0x20 transmitter 0x11 dual link 0x1 enc 0x2
radeon_bios_decode:
Connector at index 4
Type [@offset 43562]: DVI-D ( 3 )
Encoder [@offset 43566]: INTERNAL_UNIPHY1 (0x20)
i2cid [@offset 43723]: 0x94, OSX senseid: 0x5
Kod yapılandırması: 11 02 05 05
Şimdi R9 270X'i etkinleştiren FB Futomaki'nin orijinal sürücüsünden çıkarılmış orijinal kaynak koda bakalım:
Personality: Futomaki 10.9.2
ConnectorInfo count in decimal: 4
Disk offset in decimal 811280
00 04 00 00 04 03 00 00 00 01 01 01 12 04 04 01
00 04 00 00 04 03 00 00 00 01 02 01 22 05 05 02
04 00 00 00 14 02 00 00 00 01 03 00 00 00 06 06
00 08 00 00 04 02 00 00 00 01 04 00 11 02 01 03
Her satır bir konektör için tanımlamayı temsil eder. Bu durumda bizde 4 tane tanımlanmış konektör var. Daha iyi anlayabilmek için örnekteki ilk satırı ayırıp inceleyelim;
00 04 00 00 04 03 00 00 00 01 01 01 12 04 04 01
Segmentlere ayrılmış olarak:
00 04 00 00 / Connector type
04 03 00 00 / ATY, ControlFlags
00 01 01 01 / Features
12 / Transmitter
04 / Encoder
04 / hotplug ID
01 / Sense ID
Peki bunlar ne anlama geliyor?
İlk olarak bağlantı türlerini bilmek gerekiyor. Bunun için aşağıda listeye inceleyin.
Connector Type LVDS 0 × 00000002 = 02 00 00 00 Note: Laptop Monitor
Connector Type DVIDL 0 × 00000004 = 04 00 00 00 Note: Dual Link DVI
Connector Type VGA 0 × 00000010 = 10 00 00 00
Connector Type SV 0 × 00000080 = 08 00 00 00
Connector Type DP = 0 × 00000400 00 04 00 00
Connector Type HDMI 0 × 00000800 = 00 08 00 00
Connector Type DVISL 0 × 00000200 = 00 02 00 00 Note: Single Link DVI
Yukarıdaki listeye bakarak bizim kodumuzdaki ilk 4 çift rakamların hangi bağlantı türlerini tanımladığını anlayabiliriz.
00 04 00 00 04 03 00 00 00 01 01 01 12 04 04 01 / Display Port
00 04 00 00 04 03 00 00 00 01 02 01 22 05 05 02 / Display Port
04 00 00 00 14 02 00 00 00 01 03 00 00 00 06 06 / DVI-D
00 08 00 00 04 02 00 00 00 01 04 00 11 02 01 03 / HDMI
Genel olarak bir FB yapılandırılma düzeni bu şekildedir. Zira Apple DP monitörleri birinci sırada kullanır ve diğer bağlantı noktaları bunu takip eder.
Düzenlemelerin çoğunda yapılması gereken en önemli değişiklik son 4 basamağı değiştirmektir. Ancak bazı durumlarda monitorünüz için ayrıca DVI-I (SL) bağlantı noktası atamanız gerekebilir. Çoğunlukla bu, orijinal kod da olmadığında yapılması gerekli bir düzenlemedir . Bu nedenle ikinci satırdaki DP bağlantı noktasını DVI-SL olarak değiştirmek gerekir. Bunu yapmak için ilk dört rakamın 00 04 00 00'den 00 02 00 00'ye değiştirmelisiniz.
00 02 00 00
Şimdi ikinci dörtlü rakam düzenine bakalım;
0×0002 : LVDS ControlFlag : 0×0040 and 0×0100
0×0004 : DVI ControlFlag : 0×0016, 0×0014, and 0×214
0×0010 : VGA ControlFlag : 0×0010
0×0080 : S-Video ControlFlag : 0×0002
0×0200 : DVI ControlFlag : 0×0014, 0×0214, and 0×0204
0×0400 : DisplayPort ControlFlag : 0×0100, 0×0104, 0×0304, 0×0604, and 0×0400
0×0800 : HDMI ControlFlag : 0×0200
0×1000 : DVI ControlFlag : 0×0016
Bunu açıkladığımızda bağlantı türlerini görebiliriz.
Connector Type DP 04 03 00 00
Connector Type DP 04 03 00 00
Connector Type HDMI 00 02 00 00
Connector Type DVIDL 14 02 00 00
Connector Type_DVISL C 04 02 00 00
Connector Type_DVISL 04 02 00 00
Yukarıda DVI-SL için verdiğimiz örnekten yola çıkarak, değiştirilen satırda eşleşen listedeki konektör adına göre 04 02 00 00 eklememiz gerekiyor. Bu yüzden, ilk 00 02 00 00'den sonra listede kalın olarak işaretlenmiş 04 02 00 00 numaralı çifti eklememiz gerek.
Eklediğimiz de hepsi beraber şu şekilde görünecek;
00 02 00 00 04 02 00 00
Bunların devamında gelenler ise ATY ile alakalıdır.
İlk çift sayılar;
0 × 0002: LVDS * 0x09 = 09
0 × 0004: DVI 0x00 = 00
0 × 0010: VGA 0x00 = 00
0 × 0080: S-Video 0x04 = 04
0 × 0200: DVI 0x00 = 00
0 × 0400: Display Port 0 × 00 = 00
0 × 0800: HDMI 0 × 00 = 00
0 × 1000: DVI 0x00 = 00
İkinci çift Sayılar;
Use Internal * 0 × 01 = 01
Use RGB YUV On 0 × 04 = 04
Use Backlight * 0 × 08 = 08
Backlight Inverted 0 × 10 = 10
Use Clamshell 0 × 20 = 20
Üçüncü sayı çifti, konektör etkinleştirmesi sırasını temsil eder
01 = İlk etkin konektör
02 = İkinci etkin konektör
03 = Üçüncü etkin konektör
vs..
Dördüncü son rakam ise bilinmiyor.
Bunu olduğu gibi bırakabilirsiniz ( genellikle 01 ya da 00 olur)
Son olarak yukarıda anlatılan gibi son numaraları girdiğimizde kodumuz şu şekilde görünecek;
00 02 00 00 04 02 00 00 00 01 01 01
Son rakamlar da yukarıda yapılandırma tablosundan ekliyoruz. Bu örnekte DVI için ekleme yapıyoruz.
03 [DVI_I]
redsock_bios_decoder :
enc obj 0x1e transmitter 0x10 dual link 0x0 enc 0x0
radeon_bios_decode:
Connector at index 2
Type [@offset 43542]: DVI-I (2)
Encoder [@offset 43546]: INTERNAL_UNIPHY (0x1e)
i2cid [@offset 43696]: 0x95, OSX senseid: 0x6
Kod yapılandırması: 10 00 03 06
Not: Anlaşılır olması açısından Kod yapılandırması ile igili olarak küçük bir açıklama yapalım. Kod yapılandırmasında en önemli şey rakamların doğru bir şekilde yerleştirilmesi.
İlk çift rakam: transmitter= 10
İkinci çift rakam: Encoder= 00
Üçüncü çift rakam: Hotplug ID= 03
Dördüncü çift rakam: Sense ID= 06
Not: Sierra için kodda ek rakam kullanılması gerekiyor. Bu nedenle kod yapımınızın önünde ve sonrasında fazladan sıfır segmentler eklemeniz gerekecek. Aşağıdaki örneği kontrol edin:
00080000 00020000 00010000 00000000 + (kod yapılandırmanızı ekleyin) 00000000
Ve bu son kodu da eklediğimizde nihai kod yapılandırmamız aşağıdaki gibi olacak;
00 02 00 00 04 02 00 00 00 01 01 01 10 00 03 06
Detaylı anlatım sonunda normalde yapılması gereken rehber başında da belirttiğim üzere, Bağlantı portu düzeni gerekmediği durumlarda son dört kod yapılandırmasını sizinkisi ile değiştirmek.
Kodumuzun orijinal hali:
00 04 00 00 04 03 00 00 00 01 01 01 12 04 04 01 - DP
00 04 00 00 04 03 00 00 00 01 02 01 22 05 05 02 - DP
04 00 00 00 14 02 00 00 00 01 03 00 00 00 06 06 - DVI-DL
00 08 00 00 04 02 00 00 00 01 04 00 11 02 01 03 - HDMI
Düzenlenmiş hali ( Değişiklikleri mavi renkli olarak işaretledim)
00 04 00 00 04 03 00 00 00 01 02 01 12 04 01 01 - DP
00 02 00 00 04 02 00 00 00 01 01 01 10 00 03 06 - DVI-I
04 00 00 00 14 02 00 00 00 01 03 00 11 02 05 05 - DVI-D
00 08 00 00 00 02 00 00 00 01 04 00 22 05 02 03 - HDMI
Bu işlemlerden sonra artık kodumuzu Clover içine enjekte edebilirz.
ADIM 4: Framebuffer Kodunu Clover içine eklemek
Düzenlediğimiz Framebuffer kodunu Clover içine eklemek oldukça kolay bir işlem.
- Bunun için Config.plist dosyanızı Clover Düzenleme Aracı ile açın
- Kernel & Kext Patches seçeneğine gelin.
- Burada (+) işaretine basarak yeni bir satır açın.
- "Name": Buraya yamalamak istediğiniz kextin ismini girin ( Bu rehberde AMD7000Controller)
- "Find: Buraya original hex kodunu yapıştırın.
- Replace: Buraya düzenlemiş olduğunuz kodu yapıştırın.
- Comment: Buraya istediğiniz bir yazıyı girebilirsiniz.
- Bu işlemden sonra config dosyanızı kaydedin.
Ekli dosyalar
-
4 KB Görüntüleme: 1,075
-
14.4 KB Görüntüleme: 527
-
3.7 KB Görüntüleme: 1,051
Son düzenleme:
- BootLoader
- OpenCore 0.6.4
- Anakart Modeli
- Asus Z170 Deluxe
- İşlemci Modeli
- Intel i7 6700K
- Grafik Kartı
- 8 GB Sapphire RX 580 & HD 530
- Ses Kartı Modeli
- ALC 1150
- Ağ Aygıtları
- Broadcom BCM43xx - I211 Gigabit Ethernet
- Disk ve RAM
- 500GB NVMe & 32 GB DDR4