# 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**](https://github.com/CloverHackyColor/CloverBootloader/releases): 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**](https://github.com/acidanthera/opencorepkg/releases): 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`&#x20;

#### 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:

| **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.

![](https://blogger.googleusercontent.com/img/a/AVvXsEhGoA1136oqFLNUIX7G4sSUSYu4TRVGuqq_jCzF_jGc6c5iKaE5CakPyHoMNqWPMZn2CRmOHtELPc72rCXv6AdMnRcwe58BeeGg__D5MN3lT49JAFPCMDxw065W9zJiKMYEDTyqHb2UuPiqgqc2vorgznXAIZu5q9EeSuV2YN2IIjHmrqM2NX0JAB4B=s16000)

## **II**. Framebuffer patch <a href="#framebuffer-patch" id="framebuffer-patch"></a>

Để 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.

![](https://1597505441-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRGsezcNxWc7bH07iBWuD%2Fuploads%2F6JtMMvtwp4mHvod191NE%2Fbios.png?alt=media\&token=45f03346-9898-4288-b6f2-c9dfbb8310c6)

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](https://github.com/acidanthera/lilu/releases) và [Whatevergreen](https://github.com/acidanthera/whatevergreen/releases) 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**&#x20;

`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:&#x20;

\+ 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:&#x20;

\+ 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:&#x20;

\+ 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 <a href="#connector-types-patch" id="connector-types-patch"></a>

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>`

&#x20;   `<key>Add</key>`

&#x20;   `<dict>`

&#x20;        `<key>PciRoot(0x0)/Pci(0x1b,0x0)</key>`

&#x20;        `<dict>`

&#x20;             `<key>layout-id</key>`

&#x20;             `<data>`

&#x20;             `AQAAAA==`

&#x20;             `</data>`

&#x20;        `</dict>`

&#x20;   `</dict>`

&#x20;   `<key>Delete</key>`

&#x20;   `<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>`

&#x20;   `<key>Add</key>`

&#x20;   `<dict>`

&#x20;        `<key>PciRoot(0x0)/Pci(0x1b,0x0)</key>`

&#x20;        `<dict>`

&#x20;             `<key>layout-id</key>`

&#x20;             `<data>`

&#x20;             `AQAAAA==`

&#x20;             `</data>`

&#x20;        `</dict>`

&#x20;        `<key>PciRoot(0x0)/Pci(0x2,0x0)</key>`

&#x20;        `</dict>`

&#x20;              `<key>AAPL,ig-platform-id</key>`

&#x20;              `<data>`

&#x20;              `</data>`

&#x20;              `<key>device-id</key>`

&#x20;              `<data>`

&#x20;              `</data>`

&#x20;        `</dict>`

&#x20;   `</dict>`

&#x20;   `<key>Delete</key>`

&#x20;   `<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==`&#x20;

`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>`

&#x20;    `<key>layout-id</key>`

&#x20;    `<data>`

&#x20;    `AQAAAA==`

&#x20;    `</data>`

&#x20;    `</dict>`

&#x20;    `<key>PciRoot(0x0)/Pci(0x2,0x0)</key>`

&#x20;    `<dict>`

&#x20;    `<key>AAPL,ig-platform-id</key>`

&#x20;    `<data>`

&#x20;    `BwCbPg==`

&#x20;    `</data>`

&#x20;    `<key>device-id</key>`

&#x20;    `<data>`

&#x20;    `mz4AAA==`

&#x20;    `</data>`

&#x20;    `<key>framebuffer-patch-enable</key>`

&#x20;    `<data>`

&#x20;    `AQAAAA==`

&#x20;    `</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>`

&#x20;    `<key>AAPL,ig-platform-id</key>`

&#x20;    `<data>`

&#x20;    `BwCbPg==`

&#x20;    `</data>`

&#x20;    `<key>device-id</key>`

&#x20;    `<data>`

&#x20;    `mz4AAA==`

&#x20;    `</data>`

&#x20;    `<key>framebuffer-patch-enable</key>`

&#x20;    `<data>`

&#x20;    `AQAAAA==`

&#x20;    `</data>`

&#x20;    `<key>framebuffer-con0-enable</key>`

&#x20;    `<data>`

&#x20;    `AQAAAA==`

&#x20;    `</data>`

&#x20;    `<key>framebuffer-con0-type</key>`

&#x20;    `<data>`

&#x20;    `AAgAAA==`

&#x20;    `</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>`

&#x20;    `<key>AAPL,ig-platform-id</key>`

&#x20;    `<data>`

&#x20;    `BwCbPg==`

&#x20;    `</data>`

&#x20;    `<key>device-id</key>`

&#x20;    `<data>`

&#x20;    `mz4AAA==`

&#x20;    `</data>`

&#x20;    `<key>framebuffer-patch-enable</key>`

&#x20;    `<data>`

&#x20;    `AQAAAA==`

&#x20;    `</data>`

&#x20;    `<key>framebuffer-con0-enable</key>`

&#x20;    `<data>`

&#x20;    `AQAAAA==`

&#x20;    `</data>`

&#x20;    `<key>framebuffer-con0-type</key>`

&#x20;    `<data>`

&#x20;    `AAgAAA==`

&#x20;    `</data>`

&#x20;    `</data>`

&#x20;    `<key>framebuffer-con0-enable</key>`

&#x20;    `<data>`

&#x20;    `AQAAAA==`

&#x20;    `</data>`

&#x20;    `<key>framebuffer-con0-flags</key>`

&#x20;    `<data>`

&#x20;    `xwMAAA==`

&#x20;    `</data>`

&#x20;    `<key>framebuffer-con0-index</key>`

&#x20;    `<data>`

&#x20;    `AgAAAA==`

&#x20;    `</data>`

&#x20;    `<key>framebuffer-con0-pipe</key>`

&#x20;    `<data>`

&#x20;    `CgAAAA==`

&#x20;    `</data>`

&#x20;    `<key>framebuffer-con0-type</key>`

&#x20;    `<data>`

&#x20;    `AAgAAA==`

&#x20;    `</data>`

&#x20;    `<key>framebuffer-stolenmem</key>`

&#x20;    `<data>`

&#x20;    `AAAwAQ==`

&#x20;    `</data>`

&#x20;    `</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.&#x20;

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**](https://www.blogger.com/blog/post/edit/4279130490210269116/7657476220484260986?hl=vi) **của chúng tôi.**
