Fix power management

Patch power manager là 1 patch khá quan trọng với laptop, pc có thể không patch. Nó giúp các mẫu laptop có thể tiết kiện điện năng, không quá nóng và đặc biệt là nó còn giúp fix sleep. Vậy patch power manager làm như thế nào?

Lý thuyết chi tiết

Bảng này được trích lại từ nguồn https://vnohackintosh.com/docs/post-install/fixing-power-management

XCPM và macOS

OS X Mountain Lion 10.8.5 ra đời đi kèm với việc đưa CPU Intel Haswell vào real mac.

Cùng thời điểm đó, Apple chuyển CPU Power Management từ AppleIntelCPUPowerManagement.kext qua Kernel cho CPU Haswell và sau đó là các CPU mới hơn. Công nghệ này gọi là XCPM (Xnu CPU Power Management).

Hiểu đơn giản là macOS tự quản lý power, và tính năng này chỉ hỗ trợ CPU Haswell trở lên.

CFG-Lock (MSR 0xE2 register)

Tôi đề cập CFG-Lock trong phần config và bios, sau đây là lý do tại sao phải tắt nó đi:

Trong các máy real mac, Apple không khoá MSR 0xE2 register (tức cho phép ghi vào register này). Còn trong các mainboard cho CPU Intel thì có thể mặc định bị khoá (không tìm thấy CFG-LOCK trong bios nghĩa là mặc định khoá), đa số laptop đều bị khoá. Khi macOS Kernel cố ghi vào register này nhưng nó bị khoá mất rồi thì sẽ gây Kernel Panic. Giải pháp khi không tắt được CFG-LOCK là patch AppleIntelCPUPowerManagement.kext lẫn Kernel để tránh ghi vào MSR 0xE2 register.

May mắn là CLOVER và OPENCORE đều hỗ trợ patch tự động vấn đề này.

Đối với OC thì đó là AppleXcpmCfgLock trong Config > Kernel > Quirks.

Do đó nếu máy bạn tắt được CFG-LOCK trong bios thì hãy bỏ quirk này đi!

Còn một cách nữa đó là mod bios để tắt CFG-LOCK

Chi tiết về các mod bios xem tại đây

Gen 4 trở lên

Chuẩn bị

B1: Tải SSDT-plug và bỏ nó vào EFI ==> OC ==> ACPI

Hoặc EFI ==> Clover ==> ACPI ==> patched

B2: Tải kext cpu friend

B3: Tải tool CPUFriendFriend

Tiến hành

B1: Chạy tool CPUFriendFriend lên

B2: Ta có mục Low Frequency Mode tức là xung thấp nhất của cpu khi máy ở chế độ tĩnh

Không làm việc

Có 3 cách để tính LFM

  • Tra cứu thông tin cpu

    • B1: Các bạn sẽ mở hackintool vào mục system ==> system info ==> CPU để tìm mã cpu

    • B2: Search mã đó và vào trang intel ark

    • B3: Nhìn vào mục Tần số TDP-down có thể cấu hình hoặc TDP-down Frequency

    • B4: Các bạn sẽ tiến hành chuyển nó về dạng MHz bằng công thức sau

      • TDP-down*1000=1.7*1000=1700

    • B5: Bạn sẽ chuyển đổi các chứ số hàng trăm thành hex tức chuyển 17 thành hex

    • B6: Ta sẽ tiến hành nhập 11 vào terminal

  • Manual

    • B1: Các bạn sẽ mở hackintool vào mục system ==> system info ==> CPU để tìm tần số xung tối đa của CPU

    • Ở đây ta có xung tối đa của CPU này là 1,8 GHz. Để tính LFM ta sẽ tiến hành chia 2 con số này ra

      • Hoặc bao nhiêu tùy thích nhưng mình khuyên nên chia 2

      • Và tính theo công thức sau:

        • MAX/2*1000 = 1,8/2*1000=900 MHz

    • B2: Ta sẽ đổi LFM vừa tìm được ra hex nhưng không phải đổi con số 900 MHz mà ta sẽ đổi từ hành trăm tức là đổi số 9

    • Ta được 0x09 là giá trị hex của LFM.

      • Ở đây ta sẽ tiên hành bỏ 0x đi và nhập giá trị vào terminal

  • Tra cứu theo danh sách LFM sau

    • Laptop gen 5 trở lên chọn LFM là 08

    • Desktop gen 5 trở lên chọn LFM là 0A

    • Haswell/Broadwell HEDT/Server (tức X99) chọn LFM là 0D

    • Skylake+ HEDT/Server chọn LFM là 0C

Đến đây nếu các bạn là SMbios Broadwell trở xuống thì trực tiếp tới bước 6 nếu là SMbios Skylake trở lên thì tiếp tục bước 3

B3: Tính toán EPP.

Khả năng tăng tốc xung CPU

Energy Performance Preference

Các bạn chọn theo bảng sau:

  • 0x00-0x3F: Hiệu suất tối đa

  • 0x40-0x7F: Hiệu suất cân bằng

  • 0x80-0xBF: Công suất cân bằng

  • 0xC0-0xFF: Tiết kiêm điện năng tối đa

Giải thích 1 chút:

Với 00 nó sẽ ép cpu của bạn tăng tốc càng nhanh càn tốt

Còn với FF thì nó sẽ tăng tốc 1 cách từ từ

B4: Chọn Performance Bias tức là hiệu suất tổng thể của CPU.

Ở mục này các bạn cần dựa cào trải nghiệm để lựa chọn giá trị phù hợp nhất

B5: Enable features các bạn gõ y

B6: Các bạn sẽ dump được 1 folder Results.

Ở folder này các bạn sẽ chú ý các mục

  • SSDT-data.aml

  • CPUFriendDataProvider.kext

Ta có thể sử dụng chỉ SSDT-data.aml hoặc sử dụng CPUFriendDataProvider.kext + SSDT-PLUG.aml

B7: Thêm kext CPUFriend vào EFI ==> OC ==> kext

Hoặc EFI ==> Clover ==> Kext

B8: Snaps nếu opencore và reboot

Nếu là Clover chỉ cần reboot

Gen 3 đổ xuống

Cách 1: Enable XCPM

B1: Chỉnh sử config Root ⇒ Kernel ⇒ Quirks enable những mục sau

  • AppleCpuPmCfgLock

  • AppleXcpmCfgLock

  • AppleXcpmExtraMsrs

Đối với gen 3 đang dùng các smbios có hỗ trợ xcpm

Tức smbios haswell

Thì bạn chỉ cần enable quirks và không cần add patch

B2: Tải file patched về tại đây

B3: Các bạn sẽ copy mục 0 của file patched vào config của các bạn

Tới đây thì các bạn sẽ có thể patch như gen 4 trở lên

Hoặc dừng SSDTPrgen với lệnh sau

sudo [kéo SSDTPrgen vào] -x 1

Cách 2: ssdtPRgen

Cho cả gen 2 và gen 3

B1: Các bạn chỉnh CpuPmCpu0Ist ở trong ACPI -> Delete như sau

KEY
TYPE
VALUE

All

Boolean

YES

Comment

String

Drop CpuPm

Enabled

Boolean

YES

OemTableId

Data

437075506d000000

TableLength

Number

0

TableSignature

Data

53534454

KEY
TYPE
VALUE

All

Boolean

YES

Comment

String

Drop Cpu0Ist

Enabled

Boolean

YES

OemTableId

Data

4370753049737400

TableLength

Number

0

TableSignature

Data

53534454

B2: Save reboot

B3: Tải ssdtPRgen

B4: Kéo file ssdtPRGen.sh vào terminal và nhấn enter

Sau khi chạy xong bạn sẽ nhận được file SSDT.aml

Tại đường dẫn /Users/your-name>/Library/ssdtPRGen/

B5: Copy nó vào EFI ==> OC ==> ACPI

Hoặc EFI ==> Clover ==> ACPI ==> Patched

B7: Rename nó thành SSDT-PM.aml

B8: Thêm SSDT-PM.aml vào EFI -> OC -> Kext

Hoặc EFI -> Clover -> Kext -> Others

Snapshot nếu là OpenCore

B8: Save và reboot

AMD Power manager

Căn bản MacOS không hỗ trợ XCPM cho AMD

Tuy nhiên cộng đồng những người dùng AMD đã tạo ra kext SMCAMDProcessor

Chi tiết

Kext SMCAMDProcessor có 2 kext là AMDRyzenCPUPowerManagementSMCAMDProcessor

  • AMDRyzenCPUPowerManagement.kext

    • Để quản lý tất cả các tính năng liên quan đến năng lượng.

    • Kext này cũng cần thiết nếu bạn muốn sử dụng AMD Power Gadget.

  • SMCAMDProcessor.kext

    • Để xuất các dữ liệu đọc được tới VirtualSMC

      • Giúp các ứng dụng macOS như iStat hiển thị dữ liệu cảm biến.

    • Kext này phụ thuộc vào AMDRyzenCPUPowerManagement.kext để thu thập dữ liệu cảm biến

      • Do đó phải được load sau AMDRyzenCPUPowerManagement.kext.

B1: Đảm bảo Lilu.kextVirtualSMC.kext ở bản mới nhất

B2: Tải kext AMDRyzenCPUPowerManagement.kextSMCAMDProcessor.kext

B3: Thêm kext vào EFI -> OC -> Kext

Hoặc EFI -> Clover -> Kext -> Others

OC Snapshot nếu là OpenCore

B4: Đảm bảo rằng kext AMDRyzenCPUPowerManagement.kext được load trước SMCAMDProcessor.kext trong Config.plist

Xem chi tiết về thứ tự load kext tại đây

B5: Save lại và reboot

B6: Tải AMD Power Gadget và mở lên sử dụng

Như vâỵ là đã xong rồi hãy tận hưởng tôi 😄

Check Power manager

Gen 4 trở lên

Hoặc với các máy gen 3 đã enable XCPM thì hoàn toàn có thể check theo cách này

B1: Tải ioreg về

B2: Mở ioreg lên và tìm kiếm AppleACPICPU

B3: Tiến hành tắt tìm kiếm để hiện đầy đủ thông tin

Ở đây nếu có X86PlatformPlugin trong tree tức là power manager của bạn đã hoạt đông

Nếu nó không có như ảnh dưới thì có nghĩa là chưa hoạt động

Gen 3 đổ xuống

Đối với các CPU gen 3 đổ xuống thì apple đã loại bỏ xcpm ra khỏi macos ở sierra

Gen 3 vẫn có thể enable lên được

Nên chúng ta sẽ cần dùng cách sau đây

B1: Tải Intel Power Gadget

B2: Mở lên và chú ý vào mục MAX

B3: Mở hackintool lên chú ý vào phần system ==> system info ==> CPU

B4: Check xung ở cả 2 phần xem có bằng nhau không nếu bằng thì bạn đã patch power manager thành công nếu không bằng thì bạn hãy patch lại nhé

Lưu ý

X99

XCPM căn bản không được hỗ trợ cho Haswell-E và Broadwell-E

Vì vậy chúng ta cần fake cpu id

  • Haswell-E

    • Kernel -> Emulate:

      • Cpuid1Data: C3060300 00000000 00000000 00000000

      • Cpuid1Mask: FFFFFFFF 00000000 00000000 00000000

  • Broadwell-E:

    • Kernel -> Emulate:

      • Cpuid1Data: D4060300 00000000 00000000 00000000

      • Cpuid1Mask: FFFFFFFF 00000000 00000000 00000000

Gen 3 đổ xuống

Source tham khảo: [GUIDE] X86PlatformPlugin (XCPM) für Ivy Bridge CPUs unter Catalina und Big Sur aktivieren – Anleitungen und Builds – Hackintosh-Forum – Deine Anlaufstelle für Hackintosh & mehr… | Optimizing Power Management | OpenCore Post-Install (dortania.github.io) | https://vnohackintosh.com/docs/post-install/fixing-power-management#amd-cpu-power-management

Last updated