> For the complete documentation index, see [llms.txt](https://basic.heavietnam.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://basic.heavietnam.com/gpu/fix-drm-support.md).

# 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="https://272971286-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FauskGAp5wYbI1xQWn4YZ%2Fuploads%2FL0TyRkBsKN10M9d3xiUM%2Fimage.png?alt=media&amp;token=23b0aecc-b610-42e8-8a93-9b80eabe2abd" 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`

![](https://272971286-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FauskGAp5wYbI1xQWn4YZ%2Fuploads%2Fgj2YP3t8Sqyw1SG1qN5d%2Fimage.png?alt=media\&token=d15c7789-4af0-4b22-a718-0e21c4ac698e)

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

![](https://272971286-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FauskGAp5wYbI1xQWn4YZ%2Fuploads%2F1kwxtVwXzUju4k9B9eA2%2Fimage.png?alt=media\&token=53005b2d-349d-4257-804e-bd52f7be7351)

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