Kích hoạt Intel iGPU (Intel Quick Sync, Framebuffer Patch, Connector Types Patch)
I. Kích hoạt Intel Quick Sync cho PC
Nói nôm na về Intel Quick Sync thì nó là 1 công nghệ của nhà Intel giúp tận dùng sức mạnh của Intel HD Graphics nhằm hỗ trợ xử lí nhanh các tác vụ render hình ảnh; render, encoder, decoder video còn về HDMI port và HDMI sound thì chắc bạn cũng không cần phải giải thích nữa rồi
Để bắt đầu, bạn cần mount EFI rồi mở config.plist lên nha.
Thêm bootarg:
Với Clover Bootloader: bạn vào Boot/Arguments
thêm shikigva=16
hoặc shikigva=80
nếu dùng AMD GPU + iGPU, khi chỉ dùng AMD GPU thì thêm shikigva=128
còn dùng shikigva=256
khi máy bạn chỉ có NVIDIA GPU.
Với OpenCore Bootloader: bạn vào NVRAM/Add/7C436110-AB2A-4BBB-A880-FE41995C9F82/boot-args
: bạn thêm shikigva=16
hoặc shikigva=80
nếu dùng AMD GPU + iGPU, khi chỉ dùng AMD GPU thì thêm shikigva=128
còn dùng shikigva=256
khi máy bạn chỉ có NVIDIA GPU.
Thêm device cho iGPU:
Với Clover Bootloader: bạn vào Devices/Properties
, các bạn thêm devices “PciRoot(0)/Pci(0x02,0)
” kèm
Properties Key: AAPL,ig-platform-id
Properties Value: #ig-platform-id
Value Type: DATA
Properties Key: device-id
Properties Value: #deviceid
Value Type: DATA
Với OpenCore Bootloader: bạn vào DeviceProperties/Add
, các bạn thêm devices “PciRoot(0)/Pci(0x02,0)
” kèm
Properties Key: AAPL,ig-platform-id
Properties Value: #ig-platform-id
Value Type: DATA
Properties Key: device-id
Properties Value: #deviceid
Value Type: DATA
Các bạn hãy thay thế AAPL,ig-platform-id
và device-id
sao cho đúng với thế hệ cpu của mình như dưới:
AAPL,ig-platform-id
và device-id
sao cho đúng với thế hệ cpu của mình như dưới:Thế hệ cpu
AAPL,ig-platform-id
device
Sandy Bridge
00000500
02010000
Ivy Bridge
07006201
62010000
Haswell
04001204
12040000
Sky Lake
01001219
Kaby Lake + Coffee Lake(8xxx)
03001259
12590000
Coffee Lake(9xxx) + Comet Lake
0300923E
923E0000
Sau khi nhập xong, các bạn save config.plist, vào BIOS tìm rồi enable Integrated Graphics/IGPU Multi-Monitor lên sau đó boot lại vào macOS.
Để biết xem đã được kích hoạt thành công hay chưa thì mở Hackintool kiểm tra xem dòng VDA Decoder nếu được như hình thì đã kích hoạt thành công.
II. Framebuffer patch
Để bắt đầu, bạn cần thay đổi 1 vài thứ như sau:
1. Vào BIOS tìm Graphics Memory Allocation (DVMT Pre-Allocated) rồi chọn 64MB, 96MB hoặc lớn hơn tuỳ vào độ phân giải màn hình hoặc BIOS của bạn cho phép.
Nếu BIOS của bạn không có option này thì bạn cần phải patch, mình sẽ hướng dẫn ở dưới.
2. Xoá hết những gì liên quan đến iGPU có trong Arbitrary
và Properties/Devices
trong config.plist Clover hoặc DeviceProperties/Add
khi dùng OpenCore.
3. Xoá bootarg -igfxvesa
và -disablegfxfirmware
4. Thêm kext Lilu và Whatevergreen vào /EFI/CLOVER/kexts/Other/
nếu dùng Clover hoặc /EFI/OC/Kexts/
nếu dùng OpenCore
5. Xoá các kexts sau (nếu có):
· IntelGraphicsFixup.kext
· NvidiaGraphicsFixup.kext
· CoreDisplayFixup.kext
· Shiki.kext
· IntelGraphicsDVMTFixup.kext
· AzulPatcher4600.kext
· AppleBacklightFixup.kext,
· FakePCIID_Intel_HD_Graphics.kext
6. Với Clover
· Bỏ tích các Clover's DSDT fixes trong ACPI/DSDT/Fixes
:
· AddHDMI
· AddHDMI
· FixDisplay
· FixIntelGfx
· FixHDA
· AddPNLF
· Xoá Devices/FakeID/IntelGFX
· Bỏ tích(set No) Devices/UseIntelHDMI
và Graphics/Inject/Intel
Tìm hiểu các bản vá (Patch)
Mình sẽ giải thích từng phần cho các bạn hiểu rõ hơn các key trong framebuffer patch
AAPL, ig-platform-id
có chức năng định danh tên iGPU bạn đang cần patch (Bắt buộc)
device-id
có chức năng định danh tên thiết bị bạn cần patch (chỉ yêu cầu với 1 vài phần cứng)
framebuffer-patch-enable
cần có khi các bạn cần áp dụng các bản vá sau:
framebuffer-fbmem
(data: 00009000
) và framebuffer-stolenmem
(data: 00003001
) chỉ cần khi BIOS của bạn không cho phép chỉnh DVMT lên 64MB hoặc lớn hơn
framebuffer-conX-busid
có chức năng thay đổi giá trị BusID cho conX
framebuffer-conX-enable
có chức năng kích hoạt thay đổi cho conX khi có thêm patch cho conX
framebuffer-conX-pipe
có chức năng thay đổi giá trị pipe, bạn nên chỉnh nó về 12000000
nhằm fix lỗi tự động restart sau khi kết nối HDMI
framebuffer-conX-type
có chức năng thay đổi cổng kết nối, data 00080000
là cổng HDMI, còn với cổng DP có data là 00040000
Các key mình nhắc đến ở trên là những key quan trọng nhất và cần có trong 1 framebuffer patch, nhưng nó còn rất nhiều key nữa các bạn có thể quan tâm
framebuffer-unifiedmem
giúp các bạn "tăng" vram cho iGPU cho đẹp là chính, nó chả giúp máy bạn có 1 hiệu năng tốt hơn đâu nhé! VD khi bạn dùng data 00000080
thì vram của iGPU hiện trong About This Mac sẽ là 2048 MB
enable-hdmi20
có chức năng vá cổng HDMI 2.0 và màn hình 4K hoặc cao hơn (có thể dùng bootarg -cdfon
thay thế)
disable-external-gpu
giúp disable card đồ hoạ rời (có thể dùng bootarg -wegnoegpu
thay thế)
enable-hdmi-dividers-fix
nhằm sửa lỗi vòng lặp vô hạn khi dùng HDMI do tốc độ xung nhịp pixel cao hơn trên các nền tảng Skylake hoặc mới hơn (có thể dùng bootarg -igfxhdmidivs
thay thế)
enable-dpcd-max-link-rate-fix
nhằm để áp dụng sửa chữa tỷ lệ liên kết tối đa cho màn hình gắn liền (Dell XPS 15 9570, Dell Vostro 3578,...) + bạn cũng có thể thay đổi thủ công tỷ lệ liên kết tối đa với key dpcd-max-link-rate
, dùng data 14000000
cho màn hình 4K còn data 0A000000
cho màn hình fHD, nếu không có key này thì data 14000000
sẽ được ưu tiên (có thể dùng bootarg -igfxmlr
thay thế)
enable-lspcon-support
giúp bật xuất hình từ DP sang HDMI trên các nền tảng Skylake hoặc mới hơn + bạn cần dùng thêm framebuffer-conX-has-lspcon
nhằm giúp trình điều kiển biết cổng kết nối nào có kết nối với LSPCON + nếu bạn cần xuất hình LS(DP sang HDMI 1.4) thì bạn cần thêm framebuffer-conX-preferred-lspcon-mode
với data là 00000000
còn với PCON (DP sang HDMI 2.0) thì dùng data 01000000
, nếu bạn không thêm key này thì mode PCON được ưu tiên (có thể dùng bootarg -igfxlspcon
thay thế)
force-online
để buộc trạng thái trực tuyến trên tất cả các màn hình, cụ thể hơn thì có có thể giúp các bạn fix lỗi wake bị đen màn trên iGPU từ macOS Catalina 10.15.4+ (có thể dùng bootarg igfxonln=1
thay thế)
Như vậy là mình đã giải thích khá đầy đủ phần tác dụng của 1 vài key, các bạn hãy linh hoạt sử dụng nó để kích hoạt thành công HDMI port cũng như các cổng kết nối khác nhé.
ig-platform-id và device-id
Ờ đây mình sẽ cung cấp hệ hex luôn cho mọi người đỡ xoắn với ở phần device-id
, nếu bạn thấy có dấu "+" ở trước device-id
thì bạn hãy thêm, còn có dấu "-" thì không bắt buộc nhé
Sandy Bridge:
Desktop: snb-platform-id
0x00030010
Laptop: snb-platform-id
0x00010000
Ivy Bridge
Desktop: ig-platform-id
0A006601
Laptop: ig-platform-id
03006601
(1366x768), 04006601
(1600x900), 09006601
(cho máy dùng màn hình có chuẩn kết nối eDP)
Lưu ý: Khi dùng 09006601
bạn sẽ không đủ cổng kết nối để xuất hình ra DP/HDMI cho nên bạn cần thêm thêm các patch sau, còn việc patch cổng xuất hình sẽ không có gì thay đổi nhé
Properties Key
Properties Value
Value Type
framebuffer-memorycount
02000000
Data
framebuffer-pipecount
02000000
Data
framebuffer-portcount
04000000
Data
framebuffer-stolenmem
00000004
Data
Haswell
Desktop: ig-platform-id
0300220D
Laptop:
+ HD4200, HD4400 và HD4600: ig-platform-id
0600260A
+ device-id
12040000
+ HD5000, HD5100 và HD5200: ig-platform-id
0500260A
Lưu ý: Nếu bạn bị glitches thì hãy thêm key framebuffer-cursor
với data 00009000
Broadwell
Desktop: ig-platform-id
07002216
Laptop:
+ HD5300, HD5500 và HD6000: ig-platform-id
06002616
+ HD5600: ig-platform-id
06002616
+ device-id
26160000
Skylake
Desktop: ig-platform-id
00001219
Laptop:
+ HD510: ig-platform-id
00001B19
hoặc 00001619
+ device-id
02190000
+ HD515, HD520, HD530 và HD540: ig-platform-id
00001619
hoặc 00001B19
+ HD550 và P530: ig-platform-id
00001619
(khuyến khích), 00001219
, 00002619
hoặc 00001B19
+ device-id
16190000
(khuyến khích), 12190000
, 26190000
, 1B190000
Kaby Lake, Kaby Lake - R, Amber Lake
Desktop: ig-platform-id
00001259
Laptop:
+ HD615, HD620, HD630, HD640 và HD650 (thêm nữa có thể hoạt động với UHD620): ig-platform-id
00001659
hoặc 00001B59
- device-id
(không bắt buộc thêm) 1B590000
hoặc 16590000
+ UHD620: ig-platform-id
0000C087
+ device-id
C0870000
Coffee Lake
Desktop: ig-platform-id
07009B3E
- device-id
00009B3E
, 0000A53E
, 0000923E
, 0000913E
Laptop: ig-platform-id
00009B3E
- device-id
(với UHD620 hoặc cho UHD630 nữa) 9B3E0000
Ice Lake
Desktop: updating...
Laptop: ig-platform-id
0000528A
Comet Lake
Desktop: ig-platform-id
07009B3E
Laptop:
+ Dùng UHD: ig-platform-id
0400A53E
+ device-id
A53E0000
, bạn có thể thử ig-platform-id
với device-id
của Coffee Lake(UHD620) nếu ig-platform-id
và device-id
này không hoạt động.
III. Patch cổng kết nối DP/HDMI cho iGPU
Trong phần hướng dẫn này mình sẽ không lấy những con iGPU trên laptop ra để làm ví dụ nhưng về cách patch là giống nhau nên các bạn hãy làm theo nhé! Nhưng đừng patch con0 là được vì thông thường nó đã được kết nối với màn hình gắn liền rồi
Ban đầu bạn cần mở config.plist lên bằng bất kì 1 app nào như Notepad, Wordpad,... rồi tìm đến key Devices/Properties hoặc DeviceProperties nếu dùng Opencore (config mình lấy làm ví dụ đây là từ config.plist gốc trong bộ cài dùng OpenCore)
...
<key>DeviceProperties</key>
<dict>
<key>Add</key>
<dict>
<key>PciRoot(0x0)/Pci(0x1b,0x0)</key>
<dict>
<key>layout-id</key>
<data>
AQAAAA==
</data>
</dict>
</dict>
<key>Delete</key>
<dict/>
</dict>
...
Sau đây mình sẽ cần thêm Properties->Add->PciRoot(0x0)/Pci(0x2,0x0)
để bắt đầu việc patch.
...
<key>DeviceProperties</key>
<dict>
<key>Add</key>
<dict>
<key>PciRoot(0x0)/Pci(0x1b,0x0)</key>
<dict>
<key>layout-id</key>
<data>
AQAAAA==
</data>
</dict>
<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
</dict>
<key>AAPL,ig-platform-id</key>
<data>
</data>
<key>device-id</key>
<data>
</data>
</dict>
</dict>
<key>Delete</key>
<dict/>
</dict>
...
Ban đầu thì bạn chỉ việc thêm 3 key như trên, sau đó chúng ta chỉ việc thêm ig-platform-id
, device-id
vào ở hệ base64 là được. Tức bạn cần chuyển ig-platform-id, device-id
,... ở hệ hex sang base64 rồi dán vào <data>...</data>
là được
VD: mình patch cho I5-10400 thì sẽ phải dùng ig-platform-id
và device-id
(tuỳ máy) của Comet Lake
ig-platform-id
là 0900A53E
chuyển thành base64 được BwCbPg==
device-id
là 9E3B0000
chuyển thành base64 được mz4AAA==
còn với framebuffer-patch-enable
thì data đã là hex 01000000
chuyển thành base64 sẽ đc AQAAAA==
Như vậy thì ta đã được như sau:
...
<key>PciRoot(0x0)/Pci(0x1b,0x0)</key>
<dict>
<key>layout-id</key>
<data>
AQAAAA==
</data>
</dict>
<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
<dict>
<key>AAPL,ig-platform-id</key>
<data>
BwCbPg==
</data>
<key>device-id</key>
<data>
mz4AAA==
</data>
<key>framebuffer-patch-enable</key>
<data>
AQAAAA==
</data>
</dict>
...
Tiếp theo chúng ta sẽ cùng thay đổi thông số cổng xuất hình ban đầu sau cho phù hợp với mainboard. Đây mình sẽ thêm 3 patch cho mỗi conX như sau, và các type mình sẽ chuyển sang HDMI, pipe sang 12 hết vì ban đầu mình cần cổng HDMI đã và không thể thiếu patch framebuffer-conX-enable
để quyết định đến việc áp dụng thay đổi cho từng conX
...
<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
<dict>
<key>AAPL,ig-platform-id</key>
<data>
BwCbPg==
</data>
<key>device-id</key>
<data>
mz4AAA==
</data>
<key>framebuffer-patch-enable</key>
<data>
AQAAAA==
</data>
<key>framebuffer-con0-enable</key>
<data>
AQAAAA==
</data>
<key>framebuffer-con0-type</key>
<data>
AAgAAA==
</data>
</dict>
...
Đây là danh sách các loại cổng kết nối phổ biến:
DATA
conX-type
Note
02 00 00 00
LVDS and eDP
Màn hình Laptop
10 00 00 00
VGA
Ngừng hỗ trợ từ macOS 10.8
00 04 00 00
DisplayPort
Cổng DP tíc hợp trong cổng USB-C
01 00 00 00
DUMMY
Được sử dụng khi không có cổng vật lý
00 08 00 00
HDMI
80 00 00 00
S-Video
04 00 00 00
DVI (Dual Link)
00 02 00 00
DVI (Single Link)
Patch tiếp theo bạn cần thêm đó là BusID, bạn hãy dựa vào nhưng BusID dưới đây rồi điền vào, lưu config lại sau đó boot lại cho đến khi cổng đó hoạt động được rồi thôi
VGA/DP: 02000000
, 04000000
, 05000000
, 06000000
DVI/HDMI: 01000000
, 02000000
, 04000000
, 05000000
, 06000000
Các bạn có thể thêm 1 vài patch sau để có thể kích hoạt được cổng xuất hình nhé, tác dụng của patch thì mình đã ghi ở trên
...
<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
<dict>
<key>AAPL,ig-platform-id</key>
<data>
BwCbPg==
</data>
<key>device-id</key>
<data>
mz4AAA==
</data>
<key>framebuffer-patch-enable</key>
<data>
AQAAAA==
</data>
<key>framebuffer-con0-enable</key>
<data>
AQAAAA==
</data>
<key>framebuffer-con0-type</key>
<data>
AAgAAA==
</data>
</data>
<key>framebuffer-con0-enable</key>
<data>
AQAAAA==
</data>
<key>framebuffer-con0-flags</key>
<data>
xwMAAA==
</data>
<key>framebuffer-con0-index</key>
<data>
AgAAAA==
</data>
<key>framebuffer-con0-pipe</key>
<data>
CgAAAA==
</data>
<key>framebuffer-con0-type</key>
<data>
AAgAAA==
</data>
<key>framebuffer-stolenmem</key>
<data>
AAAwAQ==
</data>
</dict>
</dict>
...
VD: mình đã kích hoạt thành công 1 màn hình ở con0, và mình đang cần thêm 1 màn hình nữa thì chỉ cần giữ nguyên patch của con0 rồi thay BusID tiếp cho đến khi 1 trong 2 con1 và con2 hoạt động là được.
Nếu bạn xài thêm màn thứ 2, 3 nữa thì các bạn cũng làm tiếp như vậy thôi.
Chúc các bạn thành công!
Nguồn: hackintosh.vn
Để tìm hiểu thêm về Hackintosh. Hãy tham gia group HSVN - Hackintosh Vietnam của chúng tôi.
Last updated