# Vô hiệu hóa card màn hình rời không được hỗ trợ (NUC, Laptop và AIO) bằng (SSDT-dGPU-Off/NoHybGfx)

Với laptop; NUC hoặc AIO, chúng ta có thể "giấu" card rời (dGPU) khỏi tầm mắt của macOS bằng tham số khởi động (boot-arg) đơn giản là -wegnoegpu bằng WhateverGreen. Nhưng có một vấn đề nhỏ: card rời lúc này vẫn đang được cấp điện và âm thầm ăn hết điện khiến pin của bạn tụt dần dần mà bạn không hề hay biết. Chúng ta sẽ cùng tìm hiểu 2 phương pháp để tắt nguồn hoàn toàn card rời trên laptop:

Lưu ý: Bước này không bắt buộc trong lúc cài đặt, nhưng cực kỳ khuyến khích thực hiện sau khi cài xong (post-install) để tối ưu thời lượng pin.

# Phương pháp Optimus

Cơ chế của cách này là gọi phương thức .off có sẵn trên các dòng card đồ họa Optimus. Đây là cách chuẩn bài để tắt card rời, nhưng một số dòng máy (đặc biệt là Lenovo) có thể gặp tình trạng card tự động "thức dậy" sau đó. Dù vậy, phương pháp này vẫn hoạt động tốt cho đa số người dùng:

Để bắt đầu, bạn tải tệp chưa biên dịch SSDT-dGPU-Off.dsl (opens new window).

Tiếp theo bạn cần khởi động vào Windows, truy cập theo hướng dẫn sau để tìm "tên khai sinh" của card rời:

Device Manager (Trình quản lý thiết bị) -> Display Adapters -> dGPU -> Properties -> Details > BIOS device name
  • Lưu ý rằng một số card màn hình sẽ hiện địa chỉ ACPI của nó dưới mục "BIOS device name"

Sau khi có đường dẫn ACPI của card, địa chỉ thông thường sẽ là:

  • Với card màn hình NVIDIA: \_SB.PCI0.PEG0.PEGP
  • Với card màn hình AMD: \_SB.PCI0.PEGP.DGFX

Credit to 1Revenger1 for the image

Sau đó bạn cần thay đổi đường dẫn ACPI trong tệp SSDT mẫu sao cho khớp với máy mình ở hai phần chính:

External(_SB.PCI0.PEG0.PEGP._OFF, MethodObj)
If (CondRefOf(\_SB.PCI0.PEG0.PEGP._OFF)) { \_SB.PCI0.PEG0.PEGP._OFF() }

Sau khi sửa xong, bạn có thể biên dịch tệp và bỏ nó vào trong EFI của mình

# Phương pháp Bumblebee

Trên một số dòng máy, lệnh gọi .off đơn giản là không đủ để "giữ chân" con card đồ họa rời ở trạng thái tắt, đó là lúc chúng ta cần xài tới phương pháp mạnh hơn là Bumblebee. Cái SSDT này sẽ ép card của bạn rơi vào trạng thái D3 (D3 state) — đây là trạng thái tiêu thụ điện năng thấp nhất mà một thiết bị có thể hỗ trợ trong ACPI. (Cảm ơn Maemo vì bản chuyển đổi gốc này).
Trong mọi trường hợp, mình khuyên bạn nên thử với phương pháp Optimus trước, nếu không có tác dụng thì mới cần chuyển sang phương pháp này.

Để bắt đầu, bạn tải tệp chưa biên dịch SSDT-NoHybGfx.dsl (opens new window)

Tiếp theo bạn cần khởi động vào Windows, truy cập theo hướng dẫn sau để tìm "tên khai sinh" của card rời:

Device Manager (Trình quản lý thiết bị) -> Display Adapters -> dGPU -> Properties -> Details > BIOS device name
  • Lưu ý rằng một số card màn hình sẽ hiện địa chỉ ACPI của nó dưới mục "BIOS device name"

Sau khi có đường dẫn ACPI của card, địa chỉ thông thường sẽ là:

  • Với card màn hình NVIDIA: \_SB.PCI0.PEG0.PEGP
  • Với card màn hình AMD: \_SB.PCI0.PEGP.DGFX

Sau đó bạn cần thay đổi đường dẫn ACPI trong tệp SSDT mẫu sao cho khớp với máy mình ở hai phần chính:

External (_SB_.PCI0.PEG0.PEGP._DSM, MethodObj)    // Đường dẫn dGPU của bạn
External (_SB_.PCI0.PEG0.PEGP._PS3, MethodObj)    // Đường dẫn dGPU của bạn
If ((CondRefOf (\_SB.PCI0.PEG0.PEGP._DSM) && CondRefOf (\_SB.PCI0.PEG0.PEGP._PS3)))
 // Lệnh yêu cầu tắt Card
 \_SB.PCI0.PEG0.PEGP._DSM (ToUUID ("a486d8f8-0bda-471b-a72b-6042a6b5bee0"), 0x0100, 0x1A, Buffer (0x04)
 // Thực hiện tắt Card
\_SB.PCI0.PEG0.PEGP._PS3 ()

Sau khi điều chỉnh xong, hãy chuyển sang bước biên dịch.

# Bạn đã sẵn sàng để biên dịch SSDT!