# Fix DRM support

## Testing Hardware Acceleration and Decoding <a href="#testing-hardware-acceleration-and-decoding" id="testing-hardware-acceleration-and-decoding"></a>

B1: Download hackintool [tại đây](https://github.com/benbaker76/Hackintool/releases)

B2: Ở tab đầu tiên chú ý vào mục `VDA Decoder` nếu hiển thị `Fully Supported` thì chúc mừng bạn. Bạn có thể đi tới bước tiếp theo

<figure><img src="/files/Bx6WEWv5QfwkHSCh9UzA" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Nếu hiện ra faild thì bạn sẽ cần check lại những phần sau

* Chắc rằng GPU của bạn nằm trong viện support
* Đảm bảo SmBios của các bạn phù hợp với phần cứng
  * Không sử dụng Smbios mac mini trên desktop vì nó sử dụng phần cứng mobile
* Chắc rằng IGPU của bạn được enable và được patch đúng cách&#x20;
  * Tham khảo chi tiết [tại đây](/gpu/patch-igpu.md)
  * Chỉ khi thiết bị của bạn không dùng DGPU
* Cần tránh các patch rename không cần thiết&#x20;
  * change GFX0 to IGPU
  * change PEG0 to GFX0
  * change HECI to IMEI
  * Xem chi tiết [tại đây](https://advance.heavietnam.com/general/convert-bootloader)
* Đảm bảo rằng Lilu và WhateverGreen được load
  * Chắc rằng bạn không sử dụng các kext patch đồ hoạ cũ&#x20;
    * IntelGraphicsFixup.kext
    * NvidiaGraphicsFixup.kext
    * Shiki.kext
  * Xem chi tiết cách kiểm tra bên dưới
  * Để fix thì bạn có 2 phương pháp
    * Kiểm tra xem kext đã nằm trong thư mục load kext chưa&#x20;
      * `EFI --> OC --> Kext` hoặc `EFI --> Clover --> Kext --> Other`
    * Update LiLu và WhateverGreen lên version mới nhất
      {% endhint %}

<details>

<summary>Kiểm tra Kext load</summary>

Để kiểm tra xem LiLu và WhateverGreen có được load hay không hãy làm như sau

B1: Mở Terminal và gõ&#x20;

```
kextstat | grep -E "Lilu|WhateverGreen"
```

B2: Nếu nó báo không tìm thấy thì kext chưa được load và ngược lại

</details>

## Testting DRM

{% hint style="info" %}
Trước tiên chúng ta sẽ cần tìm hiểu các loại DRM
{% endhint %}

* FairPlay 1.x: DRM được dựa trên software. Hữu dụng cho các Mac Legacy
  * Cách dễ nhất đễ test nó là dùng xem một phim trên itunes tải [tại đây](https://drive.google.com/file/d/12pQ5FFpdHdGOVV6jvbqEq2wmkpMKxsOF/view)
  * Video sẽ phát trên mọi cấu hình nếu WhateverGreen được cài đặt&#x20;
    * Tuy nhiên nếu hệ thống chỉ có igpu thì video sẽ chỉ phát trong khoảng 3-5s đầu và báo lỗi HDCP không được hỗ trợ
* FairPlay 2.x/3.x: DRM dựa trên hardware. Có trong Netflix và Amazon Prime
  * Sẽ có một vài cách để các bạn có thể kiểm tra nó
    * Phát một video trên Netflix hoặc Amazon Prime
    * phát trên Amazon Prime đoạn trailer: [Spider-Man: Far From Home](https://www.amazon.com/Spider-Man-Far-Home-Tom-Holland/dp/B07TP6D1DP)
      * Bản thân của đoạn trailer trên không sử dụng DRM. Nhưng Amazon Prime vẫn sẽ kiểm tra nó trước khi phát
  * Yêu cầu DGPU AMD từ Polaris và mới hơn
* FairPlay 4.x: DRM hỗn hợp có trên AppleTV+
  * B1: Mở app TV&#x20;
    * Chọn theo đường dẫn TV+ -> Free Apple TV+ Premieres
  * B2: Nhấp vào bất kì phim nào đều có thể kiểm tra được&#x20;
    * Cần có account Icloud
  * Yêu cầu AMD GPU từ Polaris trở lên

> Nếu mọi thứ đều hoạt động trong các bài test trên thì bạn không cần làm gì nữa

## Fixing DRM

### Catalina trở xuống

B1: Thêm boot-arg `shikigva=x` vào `EFI --> Config.plist --> NVRAM --> Boot-arg`

B2: Thay đổi giá trị của `shikigva` theo bảng dưới đây

| Configuration   | Mode           | iTunes Trailers | iTunes Movies | TV+ | Prime Trailers | Prime/Netflix | IQSV |
| --------------- | -------------- | --------------- | ------------- | --- | -------------- | ------------- | ---- |
| AMD+IGPU, IM/MM | `shikigva=16`  | SW1             | SW2           | HW4 | HW             | NO            | OK   |
| AMD+IGPU, IM/MM | `shikigva=80`  | SW1             | SW2           | HW4 | HW3            | HW3           | OK   |
| AMD, IMP/MP     |                | SW1             | SW2           | HW4 | HW3            | HW3           | NO   |
| AMD, IMP/MP     | `shikigva=128` | HW1             | HW2           | HW4 | HW3            | HW3           | NO   |
| NV+IGPU, IM/MM  |                | SW1             | SW2           | NO  | HW             | NO            | OK   |
| NV, IMP/MP      | `shikigva=256` | SW1             | SW2           | SW3 | HW             | NO            | NO   |
| IGPU, IM/MM     |                | SW1             | NO            | NO  | HW             | NO            | OK   |

<details>

<summary>Giải thích các kí hiệu</summary>

* SW - Giải mã unencrypted thông quan phần mềm, hoạt động với mọi model
* HW - Giải mã unencrypted thông quan phần cứng, hoạt động với mọi GPU tương thích
* SW1 - software FairPlay 1.0 decoder (CoreFP)
* SW2 - software FairPlay 1.0 decoder (CoreFP), yêu cầu HDCP
* SW3 - software FairPlay 4.0 decoder (CoreLSKD), yêu cầu HDCP và không IGPU
* HW1 - hardware FairPlay 1.0 decoder (CoreFP), yêu cầu có AMD GPU tương thích
* HW2 - hardware FairPlay 1.0 decoder (CoreFP), yêu cầu HDCP và AMD GPU tương thích
* HW3 - hardware FairPlay 2.0/3.0 decoder (CoreLSKDMSE), yêu cầu HDCP và AMD GPU tương thích
* HW4 - hardware FairPlay 4.0 decoder (CoreLSKD), yêu cầu HDCP và AMD GPU tương thích
* IM/MM - iMac/Macmini models dùng với IGPU, IGPU phải đảm bảo đã được patch
* IMP/MP - iMacPro/MacPro models đảm bảo rằng model của bạn không có IGPU.

</details>

{% hint style="info" %}
Nếu như bạn có nhiều GPU thì bạn add flag như thế sẽ áp dụng cho tất cả GPU vậy để chỉ áp dụng cho 1 GPU duy nhất bạn sẽ tiến hành add vào `device properties` dòng sau
{% endhint %}

<details>

<summary>Add device properties</summary>

* B1: Xác định Device Path bằng tool [gfxutil](https://github.com/acidanthera/gfxutil/releases) hoặc bằng [hackintool](https://github.com/benbaker76/Hackintool/releases)
  * Nếu bạn dùng gfxutil thì sử dụng câu lệnh này `path/to/gfxutil -f GFX0`
    * `GFX0`: Là DGPU
    * `IGPU:` Là IGPU
  * Hoặc xác định device thông qua device manager --> Location path xem chi tiết [tại đây](https://install.heavietnam.com/general/cach-xac-dinh-phan-cung)
* B2: add theo đường dẫn sau `EFI --> Config.plist --> Device Properties --> Add --> Device path vừa lấy được --> shikigva  --> Vaule`

![](/files/tft3uBnwFsojGyryrj0h)

</details>

> Như vậy lại xong rồi

### BigSur trở lên

B1: Thêm boot-arg `unfairgva=x` vào `EFI --> Config.plist --> NVRAM --> Boot-arg`

B2: Thay đổi giá trị của `unfairgva`theo bảng dưới đây

| Mode          | Chức năng                                                                                                                |
| ------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `unfairgva=1` | Enable DRM Trên CPU cũ                                                                                                   |
| `unfairgva=2` | Bỏ qua yêu cầu HDCP                                                                                                      |
| `unfairgva=4` | Sử dụng board ID của iMacPro1,1 để kích hoạt DRM. Tương tự cách hoạt động của **shikigva**, hoạt động AppleTV/iTunes DRM |

{% hint style="info" %}
Ngoài ra ta cũng sẽ có các mode khác bằng các công các giá trị của các mode lại với nhau xem ở phần dưới
{% endhint %}

<details>

<summary>Các giá trị khác</summary>

* `unfairgva=3`  Kích hoạt DRM với những CPUID cũ + Bỏ qua yêu cầu HDCP
  * Nó là `unfairgva=1`  + `unfairgva=2`&#x20;
* `unfairgva=5`  Enable DRM Trên CPU cũ + Sử dụng board ID của iMacPro1,1 để kích hoạt DRM. Tương tự cách hoạt động của **shikigva**, hoạt động AppleTV/iTunes DRM
  * Nó chính là `unfairgva=1`  + `unfairgva=4`
* &#x20;`unfairgva=6` Bỏ qua yêu cầu HDCP + Sử dụng board ID của iMacPro1,1 để kích hoạt DRM. Tương tự cách hoạt động của **shikigva**, hoạt động AppleTV/iTunes DRM
  * Nó chính là `unfairgva=2`  + `unfairgva=4`
* `unfairgva=7` Enable DRM Trên CPU cũ + Bỏ qua yêu cầu HDCP + Sử dụng board ID của iMacPro1,1 để kích hoạt DRM. Tương tự cách hoạt động của **shikigva**, hoạt động AppleTV/iTunes DRM
  * Nó chính là `unfairgva=1` + `unfairgva=2` + `unfairgva=4`

</details>

{% hint style="info" %}
Nếu như bạn có nhiều GPU thì bạn add flag như thế sẽ áp dụng cho tất cả GPU vậy để chỉ áp dụng cho 1 GPU duy nhất bạn sẽ tiến hành add vào `device properties` dòng sau
{% endhint %}

<details>

<summary>Add device properties</summary>

* B1: Xác định Device Path bằng tool [gfxutil](https://github.com/acidanthera/gfxutil/releases) hoặc bằng [hackintool](https://github.com/benbaker76/Hackintool/releases)
  * Nếu bạn dùng gfxutil thì sử dụng câu lệnh này `path/to/gfxutil -f GFX0`
    * `GFX0`: Là DGPU
    * `IGPU:` Là IGPU
  * Hoặc xác định device thông qua `device manager --> Location path` xem chi tiết [tại đây](https://install.heavietnam.com/general/cach-xac-dinh-phan-cung)
* B2: add theo đường dẫn sau `EFI --> Config.plist --> Device Properties --> Add --> Device path vừa lấy được --> unfairgva --> Vaule`

![](/files/6wr1nFt7xKshTcdfuPtD)

</details>

> Source tham khảo: [https://dortania.github.io/OpenCore-Post-Install/universal/drm.html](https://dortania.github.io/OpenCore-Post-Install/universal/drm.html#fixing-drm) | <https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.Chart.md> | <https://lzhoang2601.github.io/post-install/fixing-drm>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://basic.heavietnam.com/gpu/fix-drm-support.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
