📖
Installing Guide
HomeBasic GuideAdvance GuideGPU BuyerWIFI BuyeriOS
  • General
    • Giới thiệu
    • Kiến thức cơ bản
    • Cách xác định phần cứng
    • Tìm hiểu chung về phần cứng
    • Tìm hiểu về kext
    • Tìm hiểu chi tiết về config.plist
    • Boot Arguments
  • Bắt đầu với ACPI
    • SSDT recomend
    • SSDT-Time built SSDT
    • Fix System Clocks on HEDT
    • Fix RTC Manual
  • Tạo bộ cài
    • Download image
    • Restore method
    • Offline method
    • Online method
    • Use disk flash offline image
    • OpenCore Legacy
  • Build EFI
    • Create EFI
    • Build EFI with OpCore-Simplify
    • Build EFI with HeaVN OC Builder
  • Config Desktop
    • Yonah, Conroe and Penryn
    • Lynnfield and Clarkdale
    • Sandy Bridge
    • Ivy Bridge
    • Haswell and Broadwell
    • Skylake
    • Kaby Lake
    • Coffee Lake
    • Comet Lake
    • Rocket Lake/Alder Lake/Raptor Lake
    • AMD Bulldozer(15h) và Jaguar(16h)
    • AMD Ryzen và Threadripper(17h and 19h)
  • Config laptop
    • Clarksfield and Arrandale
    • Sandy Bridge
    • Ivy Bridge
    • Haswell
    • Broadwell
    • Skylake
    • Kaby Lake & Amber Lake Y
    • Coffee Lake and Whiskey Lake
    • Coffee Lake Plus and Comet Lake
    • Icelake
    • AMD Ryzen
  • CONFIG INTEL HEDT
    • Nehalem and Westmare
    • Sandy and Ivy Bridge-E
    • Haswell-E
    • Broadwell-E
    • Skylake-X/W and Cascade Lake-X/W
  • ISSUE
    • Tìm hiểu quá trình cài đặt
    • Boot Issue
    • Kernel issue
    • Userspace Issue
    • Issue Propertree
    • Issue BigSur
    • [EB|#LOG:EXITBS:START]
    • Fixing KASLR
  • Basic Guide
  • Advance Guide
Powered by GitBook
On this page
  • Chuẩn bị:
  • Xác định vấn đề:
  • Tìm ACPI Path:
  • Edit SSDT:
  1. Bắt đầu với ACPI

Fix System Clocks on HEDT

PreviousSSDT-Time built SSDTNextFix RTC Manual

Last updated 1 year ago

Chuẩn bị:

  • Dump DSDT theo hướng dẫn .

  • .

  • .

Xác định vấn đề:

Các bạn cần xác định vấn đề của mình có thật sự cần dùng SSDT-RTC0 hay không.

B1: Mở SSDT ra và ấn tổ hợp phím Command + F và gõ từ khóa PNP0B00 nhìn vào dòng _CRS.

Chúng ta có:

                Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                {
                    IO (Decode16,
                        0x0070,             // Range Minimum 1
                        0x0070,             // Range Maximum 1
                        0x01,               // Alignment 1
                        0x02,               // Length 1
                       )
                    IO (Decode16,
                        0x0074,             // Range Minimum 2
                        0x0074,             // Range Maximum 2
                        0x01,               // Alignment 2
                        0x04,               // Length 2
                       )
                    IRQNoFlags ()
                        {8}
                })

Các bạn để ý vào các dòng IRQNoFlags (số vùng bao phủ) và 2 dòng IO (Decode16, chúng ta có rtc bao phủ 8 vùng là 0x70 (0x007 chính là 0x70 do được viết bằng hex), 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77 ta có:

  • Dòng io đầu tiên:

    • Bắt đầu ở 0x70.

    • Bao gồm 2 vùng.

    • Chứa 0x70, 0x71.

  • Dòng io thứ hai:

    • Bắt đầu ở 0x74.

    • Bao gồm 4 vùng.

    • Chứa 0x74, 0x75, 0x76, 0x77.

Thiếu 0x72 và 0x73.

Ta cần sửa phạm vi ở dòng io đầu tiên thành 4.

Tìm ACPI Path:

B1: Mở DSDT lên và ấn Command + F

B2: Search các từ khóa sau:

  • PNP0B00 : Dùng để tìm tên của Device RTC.

  • Name (_ADR, 0x001F0000): Dùng để tìm LPC Path (LowPinCount Path).

  • PNP0A08: Dùng để tìm PCI Path

    • có thể có nhiều kết quả cùng xuất hiện hãy chọn cái đầu tiên.

Bây giờ chúng ta có các Path của ACPI là rtc,lpc,pci0

Edit SSDT:

B1: Mở SSDT-RTC0 vừa tải ở bước chuẩn bị lên và sửa lại các Path như sau:

//Path mặc định sẽ là

PC00.LPC0.RTC

//chúng ta cần sửa lại là

PCI0.LPC.RTC 

B2: Rename trong SSDT:

//Trước khi rename

External (_SB_.PC00.LPC0, DeviceObj) <- Rename 

External (_SB_.PC00.LPC0.RTC_, DeviceObj) <- Rename 

Scope (_SB.PC00.LPC0) <- Rename

//Sau khi rename

External (_SB_.PCI0.LPC, DeviceObj) <- Renamed

Scope (_SB.PCI0.LPC.RTC) <- Renamed

Scope (_SB.PCI0.LPC) <- Renamed

B3: Tiếp theo search device(ACPI000E) ( hoặc ACPI000E ) Nếu DSDT của bạn có dòng này thì

  /* <- xóa nó trong ssdt
  Scope (RTC)
        {
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (_OSI ("Darwin"))
                {
                    Return (Zero)
                }
                Else
                {
                    Return (0x0F)
                }
            }
        }
  */ <- xóa nó trong ssdt

// Nếu không có thì xóa luôn phần ghi chú này trong ssdt

B4: Chúng ta có phần này:

            Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
            {
                IO (Decode16,
                    0x0070,             // Range Minimum 1
                    0x0070,             // Range Maximum 1
                    0x01,               // Alignment 1
                    0x04,               // Length 1      (Expanded to include 0x72 and 0x73)
                    )
                IO (Decode16,
                    0x0074,             // Range Minimum 2
                    0x0074,             // Range Maximum 2
                    0x01,               // Alignment 2
                    0x04,               // Length 2
                    )
                IRQNoFlags ()
                    {8}
            })
// Sửa các giá trị theo phân tích ở bước xác định vấn đề ở đây mình đã sửa dòng io đầu tiên có phạm vi giá trị là 0x04

Chúng ta có:

B6: Bỏ file SSDT vừa sửa vào EFI ==> OC ==> ACPI và Snapshot lại

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

B7: Restart và tận hưởng thôi

RTC Pathing
LPC Pathing
PCI Pathing

B5: Save lại dưới dạng file aml theo hướng dẫn .

Lưu ý: Source tham khảo: |

Fixing System Clocks on HEDT: Manual | Getting Started With ACPI (dortania.github.io)
OpenCorePkg/SSDT-RTC0-RANGE.dsl at master · acidanthera/OpenCorePkg (github.com)
Maciasl
SSDT-RTC0-RANGE
tại đây
tại đây