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ã cpuB2: Search mã đó và vào trang
intel arkB3: Nhìn vào mục
Tần số TDP-down có thể cấu hìnhhoặcTDP-down Frequency
B4: Các bạn sẽ tiến hành chuyển nó về dạng
MHzbằng công thức sauTDP-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
17thànhhexB6: Ta sẽ tiến hành nhập
11và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ínhLFMta sẽ tiến hành chia 2 con số này raHoặ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 MHzmà ta sẽ đổi từ hành trăm tức là đổi số9
Ta được
0x09là giá trị hex củaLFM.Ở đâ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 đa0x40-0x7F: Hiệu suất cân bằng0x80-0xBF: Công suất cân bằng0xC0-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.amlCPUFriendDataProvider.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
Chỉ gen 3
B1: Chỉnh sử config Root ⇒ Kernel ⇒ Quirks enable những mục sau
AppleCpuPmCfgLockAppleXcpmCfgLockAppleXcpmExtraMsrs
Đố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
SSDTPrgenvới lệnh sau
Lưu ý
Đối với clover các bạn chỉ cần enable Kernel XCPM lên là được
Còn lại thì tương tự OC

Cách 2: ssdtPRgen
Cho cả gen 2 và gen 3
B1: Các bạn chỉnh CpuPm và Cpu0Ist ở trong ACPI -> Delete như sau
All
Boolean
YES
Comment
String
Drop CpuPm
Enabled
Boolean
YES
OemTableId
Data
437075506d000000
TableLength
Number
0
TableSignature
Data
53534454
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.amlTạ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à AMDRyzenCPUPowerManagement và SMCAMDProcessor
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ếnDo đó phải được load sau
AMDRyzenCPUPowerManagement.kext.
B1: Đảm bảo Lilu.kext và VirtualSMC.kext ở bản mới nhất
B2: Tải kext AMDRyzenCPUPowerManagement.kext và SMCAMDProcessor.kext
B3: Thêm kext vào EFI -> OC -> Kext
Hoặc
EFI -> Clover -> Kext -> OthersOC 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
Chú ý
Đến thời điểm này Intel Power Gadget đã không còn được cập nhật nữa
Các bạn có thể sử dụng phần mềm khác như istatus menu
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é
Ngoài ra với gen 3 enable xcpm để chắc chắn bạn hãy check method int của SSDT-PM

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 00000000Cpuid1Mask:
FFFFFFFF 00000000 00000000 00000000
Broadwell-E:
Kernel -> Emulate:Cpuid1Data:
D4060300 00000000 00000000 00000000Cpuid1Mask:
FFFFFFFF 00000000 00000000 00000000
Gen 3 đổ xuống
Ngoài phần max bạn cũng nên check những phần khác đối chiếu chúng với windows để chắc chắn rằng mọi đã hoạt độ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