B1: Chỉnh DVMT trong bios thành 64 MB (DVMT Pre-Allocated)
B2: Thêm lilu và whatvergreen 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 IMEI và IntelGFX.
B10: Xóa các patch ig-platform-id ở Clover.
B11: Xóa hết các patch về IGPU, IMEI, HDEF và HDMI 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-id và AAPL,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-enable và framebuffer-singlelink. AAPL,ig-platform-id thường không yêu cầu.
1 số tình trạng gặp lỗi về display hoặc là wake thì các bạn có thể add framebuffer-fbccontrol-* and framebuffer-featurecontrol-* nó có thể sẽ fix được lỗi hoặc các bạn có thể thử. AppleIntelHDGraphicsFB.kext
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 đè*)*
Empty Framebuffer nó vẫn là 1 framebuffer nhưng nó ko đc ùng để xuất màn hình tức là không có bất kì màn nào cắm vào iGPU.
Intel HD2000 không thể xuất màn được. Vì vậy bạn phải dùng empty frambuffer để kích hoạt iGPU này. Dòng Sandy Bridge chỉ có HD3000 mới có khả năng xuất màn.
Sandy Bridge thường không cần inject framebuffer mà sẽ tự lấy ở SMBIOS.
Desktop yêu cầu fake device-id bạn có thể thử device-id này 26010000 cho iGPU
Đối với những bạn dùng empty framebuffer thì các bạn cần phảifake device-id.
Đối với những bạn sử dụng main series 7 thì cần add device-id 3A1C0000 và SSDT-IMEI
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-id3A1E0000 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-id12040000.
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-id923E0000 . 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-idA53E0000
Nếu bạn cài macOS 10.13 trên Coffee Lake thì nó sẽ không hoạt động. Tuy nhiên vẫn có 1 phiên bản macOS High Sierra 10.13.6 (17G2208) có hỗ trợ Coffee Lake nhưng bạn không thể sử dụng empty framebuffer. Vì chỉ có AppleIntelCFLGraphicsFramebuffer.kext từ 10.14+ mới hỗ trợ empty framebuffer và ở bản 10.13 cx ko có hỗ trọ device id 0x3E91 . Nhưng bạn vẫn có thể enable UHD630 ở 10.13 bằng việc fake device-id về Kaby Lake HD630 và sử dụng kabylake framebuffer HD630.
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
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
Nếu các bạn tick mục Enable HDMI20 (4K) thì hãy thêm vào boot-arg -cdfon
Chỉ tick dòng GfxYTile Fix nếu cpu của bạn là Gen 6+
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).
// Bỏ ký tự 0x ở đầu mỗi id và tách thành từng cặp
0x01660003 -> 01 66 00 03
// Sau đó đảo ngược thứ tự các cặp
01 66 00 03 -> 03 00 66 01
// Cuối cùng trái cấu trúc lại
03 00 66 01 -> 03006601
//Đầu tiên xoá 0x ở đầu id đi và tách thành các cặp
0x0152 -> 01 52
// Tiếp theo thêm các cặp số 0 vào trước dãy số để tạo được 4 cặp số
01 52 -> 00 00 01 52
// Đảo ngược thứ tự các cặp
00 00 01 52 -> 52 01 00 00
// Tái cấu trúc id
52 01 00 00 -> 52010000