ACPI
Last updated
Last updated
Phần ACPI cung cấp nhiều tùy chọn để sửa ACPI của hệ thống nhằm tương thích với macOS. Đây là giao diện config.plist khi mở bằng Clover Configurator:
Mình sẽ chia thành các phần nhỏ để cho dễ hiểu hơn.
Đây là phần phụ của ACPI
, bạn có thể thêm các rename (binary renames) để thay thế văn bản(ký tự, chữ số và biểu tượng) bên trong DSDT
bằng mã nhị phân, để tránh xung đột với macOS hoặc để làm cho một số thiết bị / tính năng hoạt động.
Nhìn vào phần rename đầu tiên, change EHC1 to EH01
,nó bao gồm Find
giá trị là 45484331
và Replace
giá trị là 45483031
, có nghĩa là chuyển EHC1
thành EH01
.
The TgtBridge
là một trường / chức năng bên trong ACPI > DSDT > Patches
. Nhằm giới hạn phạm vi ảnh hưởng của các bản vá trong một phần / khu vực được xác định trước của DSDT.
Ví dụ: renaming the method _STA
to _XSTA
trong GPI0
:
NOTE: TgtBridge Bug (fixed since Clover r5123.1)
Trước bản 5123.1, Clover's thay thế cả ngoài khu vực chỉ định của TgtBridge
trong SSDT của OEM, dẫn đến nhiều devices được kích hoạt ngoài ý muốn.
RenameDevices
là phương pháp thay thế văn bản(ký tự, chữ số và biểu tượng) bên trong DSDT
thông qua đường dẫn ACPI. Những thay đổi này chỉ áp dụng cho Devices được chỉ định nên an toàn hơn Patches
.
Để sử dụng, bạn cần xuất DSDT nguyên bản và mở bằng maciASL. Ví dụ, tôi tìm kiếm EHC1:
EHC1 được tìm thấy trong \SB_PCI0_EHC1
của DSDT
. Sửa như hình chúng ta được kết quả bên dưới:
Ngoài DeviceProperties
, còn có 1 phương pháp định danh Device bằng Method (_DSM
) trong DSDT
gọi là DTGP
để thêm các thông số tùy chỉnh.
_DSM
là 1 method thông dụng, được tích hợp vào macOS từ bản 10.5. Nó chứa một mảng mô tả thiết bị và một lệnh gọi phương thức DTGP
chung của các devices. Nếu thiếu DTGP
,các DSDT
đã sửa đổi sẽ không hoạt động ổn định.
Trên một số chipset cần bật tùy chọn này để quản lý nguồn của PCI.
Thay thế DeviceID
bằng một DeviceID
được hỗ trợ. Tích chọn nếu chưa khai báo Devices trong DSDT.
Sửa lỗi sleep và độ sáng do xác định sai hệ thống.
Tạo 1 số bản vá lỗi cho card màn hình không phải của Intel. Thêm thuộc tính và device nếu thiếu. Áp dụng FakeID nếu có thông qua _DSM
. Thêm các thuộc tính tùy chỉnh. Thêm HDAU
device để phát âm thanh qua HDMI.
Thêm thuộc tính "fwhub
" vào Firewire controller nếu có.
Chỉnh sửa mô tả của card âm thanh trong DSDT
để trình điều khiển AppleHDA gốc hoạt động. Thực hiện Renaming AZAL
to HDEF
, thêm layout-id
và PinConfiguration
. Ngày nay đã lỗi thời vì AppleALC.kext
đã xử lý.
Bật sửa lỗi cho HPET (High Precision Event Timer). Được sử dụng để sửa lỗi của AppleIntelCPUPowerManagement.kext trên các hệ thống AWARD BIOS cũ. Đồng thời cung cấp các bản sửa lỗi : FIX_RTC_20000, FIX_TMR_40000.
Sửa lỗi panic trong bản macOS 10.6.1, gây ra bởi AppleIntelPIIXATA.kext
. Không còn phù hợp với các bản mới hơn.
Sửa chức năng Nút nguồn, giữ nút này trong vài giây sẽ mở ra cửa sổ hộp thoại với tùy chọn Reset, Sleep, hoặc Shutdown.
Thêm thuộc tính "built-in" cho card mạng.
Khắc phục 1 số lỗi của SATA, loại bỏ màu vàng của các biểu tượng đĩa trong hệ thống bằng cách mô phỏng ICH6. Tương tự AppleAHCIport.kext
.
Thêm System Management Bus Controller. Sửa lỗi sleep trong 1 số trường hợp.
Thêm điều kiện vào method_PTS
(prepare to sleep). Cần thiết cho 1 số mainboard ASUS và các hãng khác. nếu HaltEnabler
= true
, thì bản vá này không cần thiết nữa.
Sửa lỗi USB đối với XHCI
sử dụng IOUSBFamily.kext
.
Thêm HDAU
device vào DSDT
để phù hợp với đầu ra HDMI trên GPU ATI hoặc Nvidia vì không có sẵn trên DSDT gốc. Thêm thuộc tính hda-gfx = onboard-1
or onboard-2
nếu thích hợp:
1
nếu UseIntelHDMI = false
2
nếu có thiết bị Intel ở cổng 1.
Bắt buộc đối với Sandy Bridge CPU dùng main board 7 series và Ivy Bridge CPUs dùng mainboard 6 series.
Thêm PNLF
(Backlight) để kiểm soát độ sáng màn hình. Sửa lỗi sleep bao gồm dòng desktop.
Nên sử dụng SSDT-PNLF.aml
để thay thế.
Loại bỏ các thiết bị đĩa mềm, CRT và DVI không sử dụng. Bắt buộc để chạy IntelX3100 trên máy tính xách tay Dell.
Khắc phục lỗi không tải AppleLPC.kext trên các chipset không được cung cấp cho macOS(ví dụ ICH9).
Một số DSDT có thể có device, method hoặc biến có tên ACST
, nhưng tên này cũng được macOS 10.8+ sử dụng để điều khiển C-States!
Tùy chọn này sẽ đổi tên ACST
trong DSDT thành OCST
để tránh xung đột. Nhưng hãy kiểm tra DSDT của bạn trước: tìm kiếm ACST
và kiểm tra xem nó có tham chiếu đến Device AC
và Method _PSR (_PSR: PowerSource)
hay không.
Sửa thiết bị device ADP1
(nguồn điện), để máy tính xách tay ở chế độ ngủ chính xác - cắm hoặc rút phích cắm.
Tuong tự FixDarwin
, nhưng dành cho Windows 7.
Bản vá dành riêng cho card đồ họa Intel.
Tìm tất cả các Mutex objects và thay thế giá trị của SyncLevel
bằng 0
để sửa lỗi về PIN. Bản vá này được thêm bới Rehabman.
Ví dụ, với Lenovo u430 mutexes được khai báo như sau:
Mutex (MSMI, 0x07)
Để tương thích với macOS, ta cần đổi thành:
Mutex (MSMI, 0)
Đây là 1 bản vá gây tranh cãi. Chỉ sử dụng khi bạn hiểu về nó.
Cố định vùng địa chỉ OperationRegion
(GNVS, SystemMemory, 0xDE6A5E18, 0x01CD) để fix lỗi sleep và các lỗi liên quan khác.
Đây là bản vá bắt buộc và không gây hại. Để ngăn việc xóa CMOS
, bạn cần để độ dài là 2
, nhưng sẽ xuất hiện cụm từ giống như "…only single bank…"
trong Kernel Log.
Tôi không biết thông báo này là gì nhưng có thể loại bỏ nếu độ dài được đặt thành 8 bytes bằng cách Fix Rtc8Allowed
:
true
- độ dài của vùng vẫn là 8 bytes.
false
- độ dài là 2 bytes.
Theo vit9696, độ dài của vùng vẫn phải là 8
cho chế độ ngủ đông(hibernation).
Sửa lỗi liên quan đến chế độ sleep bằng cách sửa các method _S3D
Loại bỏ _TMR
vì không được sử dụng trong Mac.
Thêm Return(Package(0))
vào trong method _WAK
nếu bị thiếu. Bản vá này an toàn và khuyến khích dùng.
Phần này dành cho việc kích hoạt/sửa/tối ưu CPU Power Management. Nên dùng ssdtPRGen hoặc SSDTTime để tạo các SSDT
chuyên dụng thay thế.
Giá trị này xuất hiện trong máy Mac thực, đối với iMac là khoảng 200, đối với MacPro là khoảng 10. iMac được điều chỉnh bởi P-stats, MacPros được điều chỉnh bởi C-stats. Nó cũng phụ thuộc vào chipset có đáp ứng được lệnh D-state từ MacOS hay không. Nên để trống và mọi thứ sẽ hoạt động an toàn.
Để Speedstep hoạt động chính xác, cần sao chép trạng thái ban đầu của bảng P-states. Cần thiết khi sử dụng CPU Intel thế hệ thứ 3 (Tên mã IvyBridge).
Loại bỏ các bảng gốc để tránh xung đột.
Nếu muốn tránh hoàn toàn việc vá các bản SSDT, hay đặt các bảng gốc với các chỉnh sửa nhỏ trong thư mục EFI/OEM/xxx/ACPI/patched/
và loại bỏ các bản chưa được patch. Tuy nhiên, nên sử dụng phương pháp Drop có chọn lọc đã đề cập ở trên.
Phần phụ cho Generate CStates
. Chỉ định CStates bạn muốn bật hoặc tạo.
Trong bản Clover mới, nhóm tham số này được kết hợp thành một phần, PluginType
bây giờ chỉ có true
or false
. Tùy chọn PluginType
(có menu thả xuống) đã lỗi thời tuy nhiên vẫn tương thích ngược!
Các tham số APLF
và APSN
có thể có ảnh hưởng tới speedstep nhưng chỉ dành cho người biết về nó.
Note: Bởi vì APSN/APLF
là một phần của Generate PStates
, chúng hoạt động nếu Generate PStates
=true
.
Generate CStates
có các thông số C2, C4, C6, Latency được đề cập trong phần CPU. Cũng có thể chỉ định những cái trong phần SSDT.
IMPORTANT: Không cần dùng Generate Options
nếu đã có SSDT-PM.aml
/SSDT-PLUG.aml
Đối với các CPU Haswell và mới hơn, bạn nên đặt thành 1
, đối với các CPU cũ hơn là 0
. Key này cùng với key Generate → PluginType
giúp bạn có thể tạo bảng SSDT chỉ chứa PluginType
, nhưng không có P-States
nếu không hỗ trợ.
Quy định số nhân CPU tối thiểu. Bản thân nó mặc định là 16 và thích chạy ở 1600, nhưng bạn nên đặt xuống 800 hoặc 700.
Không có tác dụng và không nên sử dụng.
Vô hiệu hóa việc trích xuất các SSDT khi sử dụng F4
trong menu Clover.
Xóa mã định danh ở cuối tên tệp trong ACPI khi xuất SSDT bằng F4
trong menu Clover.
Giới hạn tốc độ tối đa của CPU. 0 là lớn nhất, 1 là thấp 1 bậc. Nếu để trống thì CPU sẽ chạy ở mức tối thiểu.
dùng để lựa chọn trong các bảng _CST
được tạo:
Giảm điện áp hoạt động của CPU. Các giá trị nằm trong khoảng 0 đến 9. Giá trị càng cao, điện áp càng giảm. Chỉ áp dụng cho các CPU Intel thuộc họ Penryn
Hợp nhất các thay đổi của DSDT
và SSDT
trong Clover/ACPI/patched
với các bảng ACPI có sẵn.
Với tính năng này, khi bạn nhét các file patch đã sửa vào thư mục Clover/ACPI/patched
là Clover sẽ load.
ASPM (Active-state power management) là một cơ chế quản lý năng lượng cho các thiết bị PCI Expres để tiết kiệm năng lượng, Nó thường được sử dụng trên máy tính xách tay để kéo dài tuổi thọ PIN.
Với các chipset non-native thì nên bật patch này để tắt ASPM.
FixHeaders
sẽ kiểm tra tiêu đề của DSDT và các bảng ACPI, loại bỏ các ký tự Trung Quốc khỏi tiêu đề bảng vì macOS không thể xử lý chúng và gây lỗi. Vấn đề này đã được khắc phục trong macOS Mojave, nhưng ở High Sierra, bạn vẫn cần nó.
The MCFG
(Memory Mapped Configuration Table) mô tả vị trí của không gian cấu hình PCI Express, và bảng này sẽ xuất hiện trong phần triển khai chương trình cơ sở tuân thủ đặc điểm kỹ thuật này phiên bản 3.0 (hoặc mới hơn). Hữu ích khi dùng SMBIOS MacBook và MacBookPro. Tác giả của bản vá là vit9696.
Nếu FixMCFG được bật, bảng MCFG sẽ được sửa. Tuy nhiên, bạn cũng có thể loại bỏ bảng này với tính năng "Drop Tables".
Bản vá này là để khắc phục sự cố shutdown/sleep. Bản sửa lỗi được đưa vào trước khi chạy fie boot.efi, xóa SLP_SMI_EN trước khi khởi động macOS. Nó khá an toàn trên các hệ thống của Intel..
Một số hệ thống chỉ có thể được khởi động bằng tham số nhân cpus=1
hoặc với một kernel đã được vá (Lapic NMI). Bản vá APIC sẽ sửa các bảng MADT
(Bảng mô tả nhiều APIC) bị thiếu phần NMI.
Hai tham số này để sửa lỗi restart. Chúng có sẵn trong FADT
, nhưng thỉnh thoảng bị thiếu.
Các biến có trong sẽ được sử dụng FACP
nếu đặt giá trị là 0x0
/0x0. Nếu để
trống thì giá trị 0x64
/0xFE
được sử dụng, có nghĩa restart qua PS2 Controller, hoặc sử dụng 0x0CF9 / 0x06(qua Bus PCI-được dùng trên máy Mac), hoặc dùng 0x92
/0x01
.
Tham số này ảnh hưởng đến cấu hình công suất đã chọn, thông số này sẽ được ghi vào bảng FADT và thay đổi nó thành cấu hình 3. Logic như saus:
PM=1
- Desktop , nguồn điện lưới
PM=2
- Notebook, nguồn điện lưới hoặc pin
PM=3
- Server, được cung cấp bởi SmartUPS, macOS cũng hỗ trợ
Clover sẽ chọn giữa 1
and 2
dựa trên cấu hình SMBIOS. Nếu chọn SMBIOS là MacMini và bật smartUPS=Yes
thì cấu hình 3
sẽ được chọn .
Liệt kê các bảng bị loại khi tải. Ví dụ DMAR
, thường bị loại bỏ vì macOS không tương thích công nghệ VT-d. Các bảng khác sẽ bị loại bỏ sẽ là MATS (khắc phục sự cố với High Sierra) hoặc MCFG.
Bỏ qua các SSDT trong mục CLOVER/ACPI/patched
.
Tạo danh sách SSDT trong CLOVER/ ACPI/patched
để chạy theo thứ tự. Chỉ các SSDT trong bảng này mới được load.
Nên bật FixHeaders
để hạn chế lỗi không tương thích với tên file.
Bật Nhật ký gỡ lỗi sẽ được lưu trữ trong EFI/CLOVER/misc/debug.log
. Việc kích hoạt tính năng này sẽ làm chậm quá trình khởi động nên chỉ sử dụng khi cần thiết.
Xem ở phần "Fixes [2]" → "FixRTC".
Đã bị xóa từ bản r5116!
Bản vá FixShutdown
chỉ hoạt động ở trạng thái nguồn 5 (shutdown). Nếu muốn mở rộng bản vá này sang trạng thái 3 và 4 thì bật SuspendOverride
.
Fix lỗi sleep nhưng quạt vẫn chạy.
Khai báo DSDT sau khi sửa nếu tên khác với DSDT.aml
.