Patch IGPU

Chuẩn bị

B1: Chỉnh DVMT trong bios thành 64 MB (DVMT Pre-Allocated)

B2: Thêm liluwhatvergreen Kext vào EFI ==> OC ==> kext sau đó snapshot nếu dùng OpenCore hoặc bỏ kext vào EFI ==> Clover ==> kext ==> other nếu dùng Clover.

B3: Xóa hết các Kext sau (nếu có dùng).

  • IntelGraphicsFixup.kext

  • NvidiaGraphicsFixup.kext

  • CoreDisplayFixup.kext

  • Shiki.kext

  • IntelGraphicsDVMTFixup.kext

  • AzulPatcher4600.kext

  • AppleBacklightFixup.kext

  • FakePCIID_Intel_HD_Graphics.kext

  • FakePCIID_Intel_HDMI_Audio.kext

  • FakePCIID.kext (Nếu không có bất kì kext PCIID nào khác)

B4: Tắt tất cả Graphic Injects của Clover.

B5: Tắt những DSDT patches sau của Clover đi

  • AddHDMI

  • FixDisplay

  • FixIntelGfx

  • AddIMEI

  • FixHDA

  • AddPNLF

B6: Tắt các patches sau ở Clover

  • UseIntelHDMI

  • SetIntelBacklight

  • SetIntelMaxBacklight

B7: Tắt tính năng Devices ==> Inject ở Clover

B8: Xóa các mục sau ở trong boot-arg (boot arguments).

  • -disablegfxfirmware

  • -igfxnohdmi

B9: Xóa các patch fake-id cho IMEIIntelGFX.

B10: Xóa các patch ig-platform-id ở Clover.

B11: Xóa hết các patch về IGPU, IMEI, HDEFHDMI audio trong SSDT hoặc DSDT.

B12: Xóa hết các Patch rename sau:

  • GFX0 to IGPU

  • PEGP to GFX0

  • HECI to IMEI

  • MEI to IMEI

  • HDAS to HDEF

  • B0D3 to HDAU

Sơ lược

Đầu tiên ta phải biết để inject properties ở OpenCore ta sẽ inject vào Devices ==> Properties ở Clover ta sẽ inject vào DeviceProperties trong config.plist

1 số Properties thường dùng:

  • AAPL,ig-platform-idAAPL,snb-platform-id patch framebuffer.

  • device-id dùng để fake id của các device.

  • layout-id cho HDEF để inject các layout cho AppleALC.

Ngoài ra bạn còn có thể dùng boot-arg để inject framebuffer vd: igfxframe=0x0166000B

Lưu ý
  • Nếu framebuffer không được sử dụng thì sẽ tự inject frambuffer mặc định

  • Nếu có dgpu và framebuffer cũng không được inject thì sẽ inject 1 framebuffer rỗng

Chọn framebuffer

Arrandale

Được support ở OS X 10.6.4 đến macOS 10.13.6

Hầu hết đều yêu cầu Cách patch sau: framebuffer-patch-enableframebuffer-singlelink. AAPL,ig-platform-id thường không yêu cầu.

Khuyến khích:

  • framebuffer-patch-enable (enable patching)

  • framebuffer-linkwidth (dùng để đặt link width mặc định để là 1)

  • framebuffer-singlelink (enable single link mode)

FBCControl:

  • framebuffer-fbccontrol-allzero (đặt tất cả các properties thành 0, cácproperties* bên dưới sẽ ghi đè)*

  • framebuffer-fbccontrol-compressio

FeatureControl:

  • framebuffer-featurecontrol-allzero (đặt tất cả các properties thành 0, cácproperties bên dưới sẽ ghi đè*)*

  • framebuffer-featurecontrol-fbc

  • framebuffer-featurecontrol-gpuinterrupthandling

  • framebuffer-featurecontrol-gamma

  • framebuffer-featurecontrol-maximumselfrefreshlevel

  • framebuffer-featurecontrol-powerstates

  • framebuffer-featurecontrol-rstimertest

  • framebuffer-featurecontrol-renderstandby

  • framebuffer-featurecontrol-watermarks

Device-id:

  • 0x0042

  • 0x0046

Sandy Bridge

Được support từ OS X 10.7.x đến macOS 10.13.6

Spoiler: SNB connectors

Device-id:

  • 0x0106

  • 0x1106

  • 0x1601

  • 0x0116

  • 0x0126

  • 0x0102

Framebuffer:

  • Desktop:

    • 0x00030010 (default)

  • Laptop:

    • 0x00010000 (default)

  • Empty Framebuffer:

    • 0x00050000 (default)

Ivy Bridge

Được hỗ trợ từ OS X 10.8.x đến macOS 11.x ở bản macOS 12 các bạn vẫn có thể dùng OpenCore Leagcy Patcher để patch.

Spoiler: Capri Connectors

Device-id:

  • 0x0152

  • 0x0156

  • 0x0162

  • 0x0166

framebuffers :

  • Desktop:

    • 0x0166000A (default)

    • 0x01620005

  • Laptop:

    • 0x01660003 (default)

    • 0x01660009

    • 0x01660004

  • Empty Framebuffer:

    • 0x01620007 (default)

HD2500 không thể xuất được màn hình do đó bạn vẫn phải dùng empty framebuffer. Nếu máy bạn có main là 6 series thì cần fake imei device-id 3A1E0000 và add ssdt-imei. Nếu dử dụng empty framebuffer thì bạn phải fake device-id.

Haswell

Hỗ trợ từ OS X 10.9.x+

Spoiler: Azul connectors

Device-id:

  • 0x0d26

  • 0x0a26

  • 0x0a2e

  • 0x0d22

  • 0x0412

framebuffers:

  • Desktop:

    • 0x0D220003 (default)

  • Laptop:

    • 0x0A160000 (default)

    • 0x0A260005 (recommended)

    • 0x0A260006 (recommended)

  • Empty Framebuffer:

    • 0x04120004 (default)

Đối với desktop HD4400 and mobile HD4200/HD4400/HD4600 cần fake device-id 12040000.

Broadwell

Được support từ OS X 10.10.2+

Spoiler: BDW connectors

Device-id:

  • 0x0BD1

  • 0x0BD2

  • 0x0BD3

  • 0x1606

  • 0x160e

  • 0x1616

  • 0x161e

  • 0x1626

  • 0x1622

  • 0x1612

  • 0x162b

framebuffers:

  • Desktop:

    • 0x16220007 (default)

  • Laptop:

    • 0x16260006 (default)

Skylake

Được support từ OS X 10.11.4+

Spoiler: SKL connectors

Device-id:

  • 0x1916

  • 0x191E

  • 0x1926

  • 0x1927

  • 0x1912

  • 0x1932

  • 0x1902

  • 0x1917

  • 0x193B

  • 0x191B

framebuffers:

  • Desktop:

    • 0x19120000 (default)

  • Laptop:

    • 0x19160000 (default)

  • Empty Framebuffer:

    • 0x19120001 (default)

Kaby Lake và Amber Lake Y

Kaby Lake support từ macOS 10.12.6+ vàAmber Lake Y support từ macOS 10.14.1

Spoiler: KBL/ABL connectors

Device-id:

  • KBL:

    • 0x5912

    • 0x5916

    • 0x591B

    • 0x591C

    • 0x591E

    • 0x5926

    • 0x5927

    • 0x5923

  • ABL:

    • 0x87C0

framebuffers:

  • Desktop:

    • 0x59160000 (default)

    • 0x59120000 (recommended)

  • Laptop:

    • 0x591B0000 (default)

  • Empty Framebuffer:

    • 0x59120003 (default)

Coffee Lake và Comet Lake

Được hỗ trợ từ macOS 10.14+ (UHD630 củaComet Lake được hỗ trợ từ macOS 10.15.4)

Spoiler: CFL/CML connectors

Device-id:

  • CFL:

    • 0x3E9B

    • 0x3EA5

    • 0x3EA6

    • 0x3E92

    • 0x3E91

    • 0x3E98

  • CML:

    • 0x9BC8

    • 0x9BC5

    • 0x9BC4

Framebuffers:

  • Desktop:

    • 0x3EA50000 (default)

    • 0x3E9B0007 (recommended)

  • Laptop:

    • 0x3EA50009 (default)

  • Empty framebuffer (CFL):

    • 0x3E910003 (default)

  • Empty framebuffer (CML):

    • 0x9BC80003 (default)

Đối với Gen 9 Coffee Lake cần add device-id device-id 923E0000 . Nhưng đối với macos 10.14.4+ thì ko cần thiết nữa.

Đối với uhd 620 Whiskey Lake cần fake device-id A53E0000

Ice Lake

Hỗ trợ từ macOS 10.15.4+

Spoiler: ICL connectors

Device-id:

  • 0xff05

  • 0x8A70

  • 0x8A71

  • 0x8A51

  • 0x8A5C

  • 0x8A5D

  • 0x8A52

  • 0x8A53

  • 0x8A5A

  • 0x8A5B

framebuffers:

  • Laptop:

    • 0x8A520000 (default)

Đối với các iGPU UHD G1 khuyến khích bạn sử dụng AAPL,ig-platform-id: 01005C8A

device-id: 5C8A0000

Mình đã patch sẵn tại đây các bạn có thể tham khảo tại đây

Tiến hành

Method1: Thủ công

Sửa AAPL, ig-platform-id

Hoặc AAPL,snb-platform-id nếu như là Gen 2 đổ xuống

B1: Các bạn tiến hành lấy framebuffer thích hợp ở phần trên

  • device-id: các bạn lấy device-id ở đây

  • Framebuffer: các bạn lấy appl,ig-platform-id ở đây

B2: Bây giờ chúng ta sẽ chuyển đổi id vừa lấy được để sử dụng:

B3: Các bạn hãy thêm 1 dòng sau trong DeviceProperties

Key
Type

PciRoot(0x0)/Pci(0x2,0x0)

Dictionary

B4: tiếp các bạn add dòng

Key
Type
Vaule

AAPL,ig-platform-id

Data

03006601

Thay Vaule thành giá trị của các bạn

Thay AAPL,ig-platform-id thành AAPL,snb-platform-id

Nếu từ gen 2 trở xuống

Do id này mình chỉ lấy làm demo nên sẽ không khớp với id trong hình mong các bạn thông cảm

Cái này dành cho Opencore

Clover thì làm như sau

B1: Tải Clover Configurator.

B2: Mở đến tab Device ==> Properties

B3: Ấn vào dấu +

B4: Nhấn đúp vào tên của Properties vừa add và đổi thành PciRoot(0x0)/Pci(0x2,0x0).

B5: Add các Framebuffer như ở OpenCore.

Sửa Device Id

B1: Đọc phần trên để lấy device id nó sẽ có dạng:

B2: Chỉnh sửa Device-id

B3: Add thêm dòng sau ở dưới AAPL,ig-platform-id

Key
Type
Vaule

device-id

Data

52010000

add dưới dòng này

B4: Restart và tận hưởng thôi.

Phần này dành cho Opencore

Clover thì làm như sau

B1: Tải Clover Configurator.

B2: Mở đến tab Device ==> Properties

B3: Add device-id ở dưới AAPL,ig-platform-id

Method2: Hackintool

B1: Down Hackintool tại đây

B2: Mở sang Tab Patch

Các bạn nhớ chỉnh mục frambuffer và patch đúng với phiên bản macOS hiện tại

B3: Các bạn chỉnh mục Intel Generation này lại thành Gen của các bạn.

cách xác định xem hướng dẫn tại đây

B4: Chỉnh mục PlatformID lại sao cho ở phần selected Framebuffer hiện đúng tên igpu của các bạn.

B5: Mở qua mục Patch và chỉnh như hình:

B6: Mở tiếp qua tab Advanced và chỉnh như hình

B7: Chọn dòng Generate Patch (sẽ được như hình).

B8: Các bạn Menu ⇒ File ⇒ Export ⇒ Bootloader config.plist

B9: Mở file config vừa tạo và copy mục Devices Properties qua file config trong EFI

Chỉ copy mục PciRoot(0x0)/Pci(0x2,0x0) nếu mục này của các bạn có những patch khác

B10: Save lại và Reboot

và đây là thành quả

Đối với những bạn nào muốn VRAM nhận là 3gb

mặc định sau khi làm xong sẽ là 2gb

thì chỉnh lại mục framebuffer-unifiedmem này thành 000000C0

Quy luật nhận VRAM khi dùng framebuffer-unifiedmem là mặc định sẽ là 0000000 ta sẽ chú ý 2 chữ số cuối nếu là 10 ⇒ 80 mỗi lần sẽ tăng 255MB

ở hàng số thì vault 80 là cao nhất

Từ 80 ⇒ A0 ⇒ F0 mỗi lần tăng 255MB

Ở hàng chữ thì F0 là cao nhất

Tiếp theo sau khi full chữ kế cuối tức là F0 thì các bạn đổi tiếp chứ số kế nó từ là F1 ⇒ FF sau khi full chữ cuối cùng ta sẽ đổi tiếp tới chữ số ở trên 2 chữ số vừa full tức 1FF ⇒ FFF như vậy nếu muốn tăng VRAM lên 4GB ta sẽ đổi như sau 00000FFF

Max là 4GB

Đối với các bạn Desktop khi bị tạch iGPU mà vẫn muốn vào macOS trước thì các bạn dán code sau vào boot-arg -igfxvesa

Arg -cdfon chỉ khi nào các bạn đã patch thành công iGPU thì mới dùng nếu chưa thành công mà dùng sẽ có thể ko boot vào được hoặc mất độ sáng thì tự chịu nhé .

Các bạn phải đổi SMBIOS cho đúng với model.

Nếu các bạn dùng iGPU cần fake device-id thì có thể dùng Hackintool để fake thành 1 dòng cụ thể như sau:

Spoof device id bằng hackintool
  • Các bạn hãy chọn Ig-platform id chính xác với máy của mình (các làm như ở trên nên phần này mình sẽ không nói kỹ).

  • Tiếp các bạn chọn đến Hackintool ⇒ Patch ⇒ Patch ⇒ Advanced (sẽ được như hình).

  • Các bạn chú ý nhớ tick và mục Spoof Video Device ID .

  • Sau đó ấn vào (sẽ được như hình).

  • Các bạn sẽ chọn iGPU muốn fake .

  • Sau đó generate patch thôi.

  • Sau khi xong các bạn chọn export để xuất ra file config (làm như ở trên).

  • Sau khi copy xong các bạn save lại và reboot.

Check IGPU Status

B1: Các bạn mở Hackintool tại đây

B2: Các bạn mở tab System xuống phần VDA Decoder nếu nó hiện thị là fully supported như hình thì iGPU đã hoạt động.

Tăng Vram

Các bạn có thể mod bios theo hướng dẫn tại đây

Hoặc tiếp tục đọc guide này

Xác định giá trị của các Patch

Các bạn vào phần chọn frambuffer

Phải nhấn vào nút spoiler: Azul connectors

Lấy phần thông tin có id khớp với id định patch igpu

Ở đây mình lấy vd là igpu của Haswell desktop.

Chúng ta sẽ cần chú ý đến 2 dòng đầu.

Các mục chính các bạn cần quan tâm trong 2 dòng này là:

Dựa vào bảng trên ta có thể hình dung được những thứ cần patch

Tiến hành Patch

B1: Xác định STOLEN FBMEM :

  • Các bạn cần chọn số MB cần cho STOLEN, FBMEM

B2: Chuyển đổi MB sang Bytes.

  • Dán lệnh này vào Terminal : echo ‘số mb cần chuyển ** 1024 ** 1024

như của mình sẽ là echo ‘9 ** 1024 ** 1024′ | bc

B3: Chuyển đổi từ thập phân sang thập lục phân:

  • Các ban dán lệnh sau vào Terminal : echo ‘obase=16; ibase=10; kết quả của B1’ | bc

như của mình sẽ là echo ‘obase=16; ibase=10; 9437184’ | bc

hoặc dùng Hackintool)

B4: Các bạn tách thành từng cặp và đảo ngược thứ tự các cặp

Ở đây là đảo ngược thứ tự các cập nên phải giữ đúng thứ tự các chữ số trong từng cập

900000 -> 90 00 00 -> 00 00 90

B5: Các bạn viết thêm 2 chữ số 0 vào cuối dãy số vừa chuyển.

00 00 90 -> 00 00 90 00 -> 00009000

Làm tương tự với giá trị của stolenmem và đảm bảo giá trị cuối cùng gồm 8 chữ số

Như Patch Stolenmem thì chỉ thêm 1 số 0 ở đằng sau cùng để đảm bảo giá trị cuối cùng nhận được là 8 chữ số

Nhớ là tách từ dưới lên trên và làm đúng quy trình

Áp dụng vào config

B1: Xác định các Patch đúng với các giá trị:

Sau khi làm xong các phần trên ta sẽ có được các giá trị ở các patch sau

giá trị ở framebuffer-patch-enable đơn giản chỉ là để enable các patch mà thôi.

B2: Add các patch vào config theo đường dẫn sau DeviceProperties -> Add -> PciRoot(0x0)/Pci(0x2,0x0)

Đối với clover thì các bạn cũng add tương tự nhưng ở device ==> properties ==> PciRoot(0x0)/Pci(0x2,0x0 )

Công dụng của một số properties thường dùng
  • hda-gfx: patch audio ( thường là hdmi audio )

  • framebuffer-conx-type : dùng để set type cho port ( thường là hdmi, DP )

  • framebuffer-patch enable: dùng để enable các patch framebuffer

  • Appl, ig-platform-id: dùng để inject frambuffer

  • device-id: dùng để inject device-id

  • model: set model cho device

  • framebuffer-stolenmem: để tăng vram

  • framebuffer-fbmem: để tăng vram

  • framebuffer-unifiedmem: dùng để tăng vram ( không khuyến khích )

  • framebuffer-flags: dùng để inject flag cho framebuffer

  • framebuffer-conX-enable: enable port framebuffer ( dùng để patch connect )

  • framebuffer-conX-index: inject index cho frambuffer ( dùng để patch connect )

  • framebuffer-conX-busid: inject busid cho frambuffer ( dùng để patch connect )

  • framebuffer-conX-pipe: inject pie cho frambuffer ( dùng để patch connect )

  • framebuffer-conX-type: inject type cho framebuffer ( dùng để patch connect )

  • framebuffer-conX-flags: inject flag cho frambuffer ( dùng để patch connect )

  • framebuffer-conX-alldata: inject data cho frambuffer bằng method all data ( dùng để patch connect )

  • AAPL00,override-no-connect: để inject edid

  • enable-hdmi20: để add thuộc tính hdmi cho igpu

  • disable-external-gpu: disable vga rời

  • enable-lspcon-support: enable LSPCON adapter cho igpu

  • framebuffer-conX-has-lspcon: inject frambuffer cho LSPCON adapter

  • framebuffer-conX-preferred-lspcon-mode: inject model cho LSPCON adapter

  • AAPL01,DualLink: inject duallink chi igpu

  • AAPL00,DualLink: inject duallink chi igpu

Source tham khảo: WhateverGreen/FAQ.IntelHD.en.md at master · acidanthera/WhateverGreen (github.com) | [GUIDE] General Framebuffer Patching Guide (HDMI Black Screen Problem) | tonymacx86.com | Intel iGPU Patching | OpenCore Post-Install (dortania.github.io) | Patching VRAM | OpenCore Post-Install (dortania.github.io)

Last updated