Patch DSDT Phần 1

Dump DSDT

Windows

Recommend

B1: Down ssdt-time từ nguồn sau

B2: Bấm phím 8 sau đó enter

B3: Lấy dsdt từ thư mục của ssdt-time

Lưu ý: Nếu các bạn dual boot với win qua opencore thì dsdt sau khi dump sẽ mất đi sự thuần khiết

sinh ra nhiều lỗi hơn

Winpe

Method Using Rw everything

B1: Tải rw-evrything

B2: Các bạn tiến hành cài đặt và mở app

B3: Sau đó các bạn chọn vào menu Access ⇒ ACPI Tables ⇒ dsdt

B4: Sau đó các bạn bấm save và chọn nơi lưu

B5: Tiếp các bạn đổi tên file từ đuôi .bin ⇒ .aml

B6: Sau đó boot về mac và tận hưởng thôi

Method Acpidump.exe

B1: Tải acpidump.exe

B2 : Mở cmd ra

B3: [ kéo acpidump.exe vào ] -b -n DSDT -z

B4: Đổi extension của dsdt từ .dat ⇒ .aml

Macos

Method acpidump.efi

B1: Tải acpidum.efi từ nguồn sau đó bỏ nó vào mục EFI-tool rồi snapshot config

B2: Tại giao diện boot chọn acpidum.efi

B3: Dùng open‌sell.efi dán đoạn sau vào openshell.efi

Viết từng dòng không dán toàn bộ

fs0: // replace with proper drive

dir  // to verify this is the right directory

cd EFI\OC\Tools

EFI\OC\Tools> acpidump.efi -b -n DSDT -z

Khi dán toàn bộ vào nó sẽ có dạng là

shell> fs0: // replace with proper drive

fs0:\> dir  // to verify this is the right directory

   Directory of fs0:\

   01/01/01 3:30p EFI

fs0:\> cd EFI\OC\Tools

fs0:\EFI\OC\Tools> acpidump.efi -b -n DSDT -z

Lưu ý : Sau khi dump xong nó sẽ nằm ở mục EFI ⇒ OC ⇒ tool dưới dạng file .dat hãy rename nó lại thành file .aml

Method SysReport Quirk

Recommend

B1: Các bạn cần tạo 1 bộ efi debug như sau:

  • Thay thế các mục sau vào efi đang sử dụng

    • bootX64.efi

    • drivers

    • opencore.efi

B2: Mở config lên snaps lại và tìm như hình

B3: Boot lại vào ổ cứng

B4: Các bạn sẽ thấy xuất hiện mục SysReport ⇒ ACPI

Sau khi làm xong các bạn sẽ được như hình

Method Using Hackintool

B1: Các bạn mở hackintool mục utilities

B3: Chọn nơi lưu

Sau khi chọn xong sẽ được như hình

B4: Mở folder chọn lưu ở bước 2 ra và copy file dsdt.aml ra nơi mà bạn muốn như của mình nó sẽ là ở desktop

Method patchmatic

B1: Tải patchmatic

B2: Nhập lệnh sau vào terminal

cd + [ kéo folder muốn lưu ssdt vào ] [kéo patchmatic vào ] -extract

Sau khi làm xong các bạn sẽ được như hình

B3: Mở folder vừa chọn ở bước 2 sẽ được như hình

Method clover

Recommend

B1: Tải efi clover ở đây

B2: Cho efi vừa tải vào usb hoặc 1 phân vùng trên ổ cứng

Được format với chuẩn fat32

B3: Boot vào efi vừa tải

B4: Ngay giao diện boot các bạn ấn F4

Hoặc Fn +F4

B5: Boot lại vào macos các bạn vào efi clover mục ACPI ⇒ origin

B6: Các bạn sẽ được như hình

Lưu ý: Ở macos mình đưa ra khá nhiều cách dump nhưng theo cảm nhận của mình thì cách dump bằng clover là chuẩn và trực quan nhất

Linux

Recommend

Method Using Terminal

B1: Mở terminal

nhấn ALT + T

B2: Gõ lệnh

Cd + [ tên nơi các bạn muốn lưu file ]
sudo apt update
sudo apt install acpidump
sudo acpidump > acpidump.out
sudo acpixtract -a acpidump.out

B3: Sau khi nhập các lệnh trên thì terminal sẽ dump tất cả các file acpi ra ngoài nơi mà các bạn chỉ định ở đây các bạn sẽ tìm file dsdt và đổi tên file từ đuôi .dat ⇒ .aml

Method Using ssdt-time

B1: Tải ssdt-time

B2: Chọn phím 4

B3: ssdt sẽ được dump tự động vào mục Results

Lưu ý: Mình khuyến khích các bạn dùng sysreport và tính năng dump của clover

Vậy khi nào thì dùng patchmatic? Dùng patchmatic sẽ apply tất cả các hotpatch vào dsdt vì vậy sẽ mất đi bản chất gốc của dsdt nó sẽ sinh ra 1 số lỗi còn nếu các máy dùng patchmatic để dump dsdt mà không có error thì cứ dùng patchmatic để dump

Nhưng hãy nhớ rằng ko chỉ riêng patchmatic mà bất cứ công cụ nào dump DSDT trong MacOS

Biên dịch dsdt

AML to DSL

B1: Tải maciasl

B2: Chọn show package contents ⇒ contents ⇒ macos

B3: Copy file iasl62 vào thư mục lưu dsdt

Như của mình là extract

B4: Copy đoạn code sau vào bộ nhớ tạm

Command +c

External(MDBG, MethodObj, 1)

External(_GPE.MMTB, MethodObj, 0)

External(_SB.PCI0.LPCB.H_EC.ECWT, MethodObj, 2)

External(_SB.PCI0.LPCB.H_EC.ECRD, MethodObj, 1)

External(_SB.PCI0.LPCB.H_EC.ECMD, MethodObj, 1)

External(_SB.PCI0.PEG0.PEGP.SGPO, MethodObj, 2)

External(_SB.PCI0.GFX0.DD02._BCM, MethodObj, 1)

External(_SB.PCI0.SAT0.SDSM, MethodObj, 4)

External(_GPE.VHOV, MethodObj, 3)

External(_SB.PCI0.XHC.RHUB.TPLD, MethodObj, 2)

B5: Gõ lệnh sau và terminal

Sau khi làm xong sẽ được như hình

cd + [ kéo folder lưu dsdt vào ]
pbpaste>refs.txt

B6: Gõ lệnh sau vào terminal

[ kéo file iasl62 vào ] -da -dl -fe refs.txt DSDT.aml SSDT*.aml

Lưu ý: Ở đây mình hướng dẫn biên dịch file dsdt với refs.txt sẽ giúp giảm các lỗi phổ biến. Nếu bạn nào cảm thấy không thích refs.txt thì các bạn nhập code sau vào terminal

[ kéo file iasl62 vào ] -da -dl *.aml

Lưu ý 2: Nếu các bạn cần biên dịch 1 file ssdt nào đó hoặc dsdt mà muốn dùng refs.txt thì dùng code trên sẽ ta sẽ bị lỗi vì code trên áp dụng khi bạn có 2 file dsdt và ssdt cần biên dịch nếu chỉ biên dịch 1 file ta nhập code sau

Ở đây đang nói là dùng phương pháp refs.txt

  • SSDT: [ kéo file iasl62 vào ] -da -dl -fe refs.txt SSDT*.aml

  • DSDT: [ kéo file iasl62 vào ] -da -dl -fe refs.txt DSDT.aml

DSL to AML

B1: Ấn complie

B2: Chọn File -> Save as

B3: Sửa file formart lại thành ACPI Machine language Binary

B4: Ấn save

Biên dịch DSDT và SSDT ở Windows

Biên dịch từ .aml sang .dsl

B1: Các bạn tải tool Xiasl

B2: Giải nén và chạy Xiasl.exe

B3: Chọn File -> Open và chọn file .aml mà bạn muốn biên dịch

Sau khi ấn Open thì file đã được biên dịch rồi đấy

Tiếp theo ta sẽ biên dịch ngược lại từ .dsl sang .aml

Biên dịch từ .dslsang .aml

B1: Các bạn tải tool Xiasl

B2: Giải nén và chạy Xiasl.exe

B3: Chọn File -> Open và chọn file .dslmà bạn muốn biên dịch

B4: Nhấn Complie để tiến hành biên dịch

Và như vậy là xong rồi. Các file sau khi biên dịch từ .aml sang .dsl hoặc ngược lại đều nằm cùng folder với file gốc trước khi biên dịch

Last updated