Tình trạng
Không mở trả lời sau này.
DSDT, SSDT: Patch DSDT pin dựa theo các patch có sẵn

Yêu cầu:
- Trích xuất và biên dịch ngược các file DSDT, SSDT
- Cấu hình MacIASL và sửa hết các lỗi

- Mở file DSDT.dsl, chọn nút Patch > Kéo thanh bên trái tìm đến mục 4.0 Battery Patches, sẽ có 1 list các laptop đã được patch bởi RehabMan.
1_zpsexlkyseg.png

- Chọn patch nào gần giống với laptop của mình nhất (cùng hiệu, cùng dòng). Patch nào khi chọn càng có nhiều Changes thì sẽ càng tương thích. Bấm Apply.
- Bấm Compile để check lỗi, lỗi thường gặp là thiếu hàm B1B2 sau khi đã chia ra.

Ví dụ: lỗi ^^EC0.BSVO not accessible
Xem trong patch thì BSVO đã được chia thành BVO0 và BVO1
Mã:
into scope label _SB.PCI0.LPCB.EC0 code_regex BSVO,\s+16 replace_matched begin BVO0,8,BVO1,8 end;

bạn tìm giá trị BSVO trong dsdt và thay nó bằng B1B2(BVO0,BVO1), lưu ý gắn thêm scope (nếu có)
Ví dụ ^^EC0.BSVO -> B1B2(^^EC0.BVO0,^^EC0.BVO1)

- Một số máy không cần patch dsdt pin, nhưng vẫn không hiện được pin là do trong máy có nhiều thiết bị BAT (BAT0, BAT1, BAT2,...). Bạn cần tắt hết các BAT phụ không dùng đến, giữ lại BAT chính (BAT0) bằng cách apply patch sau:
Mã:
# Disable BAT1 and BAT2 devices
into method label _STA parent_label BAT1 replace_content begin Return (Zero) end;
into method label _STA parent_label BAT2 replace_content begin Return (Zero) end;
- Apply patch [7.11] Fix Mutex with non-zero SyncLevel.

- Download và cài đặt ACPIBatteryManager mới nhất tại đây: https://bitbucket.org/RehabMan/os-x-acpi-battery-driver/downloads hoặc dùng Hackintosh Vietnam Tool để cài.
 
Last edited by a moderator:
Clover Config: Tinh chỉnh các mục trên màn hình Clover.

Các mục (entry) hệ điều hành trên màn hình Clover có thể được dấu, sửa tên bằng cách thiết lập file cấu hình config.plist.

Bước 1: Xác định UUID nhận dạng của phân vùng chứa entry bằng cách mở file /Library/Logs/CloverEFI/boot.log (file này được tạo ra nếu bạn có chọn Install RC scripts to target partition khi cài Clover). Tìm đến mục các Volume, đối chiếu với phân vùng hiện tại trên ổ đĩa bằng cách dùng lệnh sau trên terminal:
Mã:
diskutil list
Hoặc đơn giản là ghi nhớ lại dòng "Boot Windows fromLegacy HD3", "Boot OS X fromMacintosh" trên màn hình Clover để tìm tên phân vùng chứa entry.
Xác định UUID của phân vùng, ghi nhớ lại.
rZHfRF5.png


Bước 2: Dùng Clover Configurator mở file config.plist, vào thẻ GUI. Nếu muốn dấu toàn bộ các entry Legacy (Boot ...... from Legacy HD ...), các bạn chọn Custom trong Scan, và bỏ chọn Legacy.

Để sửa từng entry, chọn + ở phần Custom Entries (đối với các entry UEFI như Windows UEFI, Linux UEFI, OS X), hoặc Custom Legacy (đối với các entry Legacy như Windows Legacy, Linux Legacy):
  • Volume: Điền UUID của phân vùng chứa entry ở bước 1.
  • Path: Nếu phân vùng chứa nhiều entry thì cần xác định chính xác đường dẫn (ngăn cách bởi dấu \).
  • Title/FullTitle: Đánh dấu check để chuyển qua FullTitle, gõ tên của Entry muốn hiện.
  • Hidden: Dấu entry khỏi màn hình Clover.
  • Disabled: Hoàn toàn loại bỏ entry này.
  • InjectKexts: Tự động inject kext trong /EFI/Clover/kexts/ cho entry.
  • NoCache: Không dùng cache cho entry.
  • Type: Xác định hệ điều hành của entry.
Lưu ý:
  • Phải xác định đúng UUID của phân vùng chứa entry. Ví dụ phân vùng chứa entry Windows UEFI và Linux UEFI là ổ EFI (vì file boot \EFI\Microsoft\Boot\bootmgfw.efi nằm ở EFI, không phải trong phân vùng Windows, tương tự với Linux), phân vùng chứa entry OS X là phân vùng OS X (chứa file \System\Library\CoreServices\boot.efi).
  • Nếu ô Volume để trống thì mặc định Clover sẽ dựa vào trùng khớp Type để xác định entry, và ngược lại.
 
Last edited:
Lỗi boot0:error khi khởi động đối với Chameleon

Đây là lỗi hay gặp nhất sau khi cài xong các Legacy bootloader như Chameleon, trên đĩa cứng dùng Advanced format 4. Để khắc phục:

- Download boot1h.zip, giải nén và copy boot1h vào USB bộ cài OS X
- Boot vào bộ cài và mở Disk Ultility (Utilities > Disk Utility) lên và Unmount ổ Mac đã cài (quan trọng).
- Tắt Disk Utility, mở Ternimal (Utilities > Terminal), gõ
Mã:
diskutil list
- Trong cửa sổ sẽ hiện thông tin các phân vùng trên HDD đang có.Xem IDENTIFIER của phân vùng cài MAC OS mình là gì: disk0s1, disk0s2.......ghi nhớ cái này.
- Gõ các lệnh sau (bạn thay identifer bằng identifer phân vùng của bạn disk0s1,disk0s2....gì đó lúc nãy đã ghi lại)
Mã:
cd /
dd if=boot1h of=/dev/identifer
Ví dụ:
Mã:
dd if=boot1h of=/dev/disk0s2
- Reboot.
 
Last edited by a moderator:
  • Like
Reactions: prowar_phonex
Lỗi không boot được vào máy do Card đồ hoạ

Nếu khi khởi động bị đứng ở các dòng Bluetooth hoặc Network, tức là máy bạn có trục trặc với card đồ hoạ, các bạn có thể làm theo các bước sau để khắc phục tạm thời:

1/ Xem lại config/bootflag:

Đồ hoạ không hoạt động có thể do bootflag (với Chameleon) hoặc file config.plist (với Clover) bị sai, các bạn kiểm tra lại.

2/ Boot vào Safe Mode:

Với Chameleon: Thêm -x vào bootflag.
Với Clover: Ấn spacebar và chọn Boot to safe mode.

3/ Xoá kext đồ hoạ:

Bạn có thể tạm thời loại bỏ các kext đồ hoạ để có thể boot vào hệ điều hành.

Nếu bạn có Windows hay Linux, vào /System/Library/Extensions/ và di chuyển các file sau ra thư mục khác:

Driver AMD (cho máy có card AMD hoặc Intel HD + AMD): AMD*.kext
Driver nVidia (cho máy có card nVidia hoặc Intel HD + nVidia): NVDA*.kext, GeForce*.kext
Driver Intel (chỉ dùng nếu như làm 2 cách trên đều không được): AppleIntelHD*.kext

Nếu bạn không có hệ điều hành khác, boot vào bộ cài > Terminal và gõ lệnh sau:
Mã:
cd /Volumes/
ls (hiện danh sách các phân vùng trên máy)
cd "Tên phân vùng Mac"
cd System/Library/Extensions/
mkdir /Backup
cp -rf AMD* /Backup
rm -rf AMD* (Nếu muốn xóa kext AMD)
cp -rf NVDA* /Backup
rm -rf NVDA* (Nếu muốn xóa kext nVidia)
cp -rf GeForce* /Backup
rm -rf GeForce* (Nếu muốn xóa kext nVidia)
cp -rf AppleIntelHD* /Backup
rm -rf AppleIntelHD* (Nếu muốn xóa kext Intel)
Sau khi vào được OS X, bạn nên patch dsdt để inject đúng thông tin cho card đồ hoạ, hoặc disable card rời bằng DSDT/SSDT với các hệ thống AMD Switchable Graphics/nVidia Optimus để ngăn lỗi này.

Nếu máy bạn sau khi cài lại các kext đã xoá mà vẫn vào được thì các bạn đã thành công!
Tác giả: Pokenguyen
 
Last edited:
Một số lỗi hay gặp khi khởi động
1) Still waiting for root device
429578_128287924021217_261998389_n-jpg.1033765

Nguyên nhân:
  • Cắm USB boot vào cổng 3.0 mà chưa có GenericUSBXHCI.kext trong thư mục /Extra/Extensions (với Chameleon ) /Clover/Kexts/Other ( với Clover) của USB
  • SATA Mode trong BIOS chưa được set về AHCI
  • Máy đang ở chế độ RAID không được Apple support

Cách xử lý:
  • Thêm GenericUSBXHCI.kext vào thư mục /Extra/Extensions (với Chameleon ) /Clover/Kexts/Other ( với Clover) của USB.
  • Thêm AHCIInjector.kext đối với các máy dùng RAID
  • Vào BIOS, set SATA Mode về AHCI
2) SMCReadKeyActionError:
dscn20098ona2qd9y5_zps0fe8a64c.jpg


Nguyên nhân: vt-d đang được bật trong BIOS

Cách xử lý:
  • Disable vt-d trong BIOS
  • Nếu không thể disable trong BIOS, boot kèm tham số dart=0
3) LỗI PState Stepper Error trên một số dòng CPU IvyBridge

Trên một số laptop IvyBridge, nếu sử dụng guide speedstep ở trên thì sẽ bị lỗi PState Stepper Error, dù cho đã cấu hình đúng:
SMBIOS IvyBridge + SSDT từ SSDTPrgen + AppleACPIPlatform gốc + set DropSSDT=True, Generate = False.

Lỗi này nguyên nhân do SSDT cho CPU. Bạn có thể vượt qua bằng cách xóa file ssdt.aml trong Extra, vào OS X:
  • Tạo SMBIOS IvyBridge hoặc Haswell
  • Tạo SSDT bằng SSDTPrgen (có thể tạo trong HVT)
  • Cài AppleACPIPlatform gốc
  • Chép mach_kernel gốc vào ổ Mac, và dùng HVT để patch (nếu dùng Chameleon) hoặc set KernelPM trong config.plist (nếu dùng Clover).
  • Thêm "-xcpm" vào bootflag khi khởi động (org.chameleon.boot.plist với Chameleon hoặc config.plist với Clover).
Tác giả: vusun123 & pokenguyen
 
Last edited by a moderator:
Touchpad, bàn phím không hoạt động sau một thời gian sử dụng

Sau một thời gian sử dụng, bỗng dưng máy bạn gặp trục trặc với touchpad và bàn phím: không hoạt động, touchpad bị giật khi di chuyển, bàn phím bị mất một vài phím, dù bạn đã xài đúng kext và trước đây vẫn hoạt động bình thường. Lỗi này rất có thể do EC (Embedded Controller) bị lỗi.

EC là thiết bị trong mainboard có nhiệm vụ quản lý touchpad, bàn phím và một số thiết bị khác. Thỉnh thoảng EC có thể bị lỗi do nhiều nguyên nhân như shock điện, sai dsdt, bạn phải rút hết điện khỏi EC để buộc nó reset. Các bước như sau:
  • Tắt máy.
  • Rút hết nguồn điện (dây AC, pin) ra khỏi máy.
  • Ấn giữ nút power trong 30 giây.
  • Lắp nguồn điện lại và khởi động máy.
Riêng đối với laptop sử dụng kext Elan Touchpad thì khi bị đơ bàn phím các bạn ấn phím ESC là được.
Tác giả: pokenguyen
 
Last edited by a moderator:
Khắc phục lỗi mất âm thanh sau khi Sleep

Sau khi đã patch AppleHDA.kext để máy nhận âm thanh thì một số máy sẽ bị mất âm thanh ( có thể chỉ mất loa ngoài, còn tai nghe vẫn hoạt động ), vấn đề hay gặp với các codec Realtek ALC 2xx. Để khắc phục lỗi này :

Bước 1: Sử dụng Ubuntu hoặc bất cứ OS hệ Linux/Unix để dump codec
Boot vào Ubuntu/Linux, mở Terminal gõ:
Mã:
cat /proc/asound/card0/codec#1 > ~/Desktop/codec_dump.txt
Hoặc
Mã:
cat /proc/asound/card0/codec#0 > ~/Desktop/codec_dump.txt
Save lại vào USB hoặc phân vùng nào đó để sử dụng cho OS X

Bước 2: Sau khi đã dump file codec từ Linux. Các bạn mở file codec_dump.txt, tìm kiếm các giá trị sau các khóa sau:

"Address"
Ví dụ: Ở đây ta có giá trị 0:

Mã:
Codec:Realtek ALC269VB
Address:0

"Speaker Playback Switch" và "Headphone Playback Switch": lấy mã hex giữa Node và [Pin complex]. Sau đó đổi giá trị hex này sang dec tại đây. Nếu không tìm được thì chọn giá trị là 0.

Ví dụ: Ở đây ta có mã 0x14 với Speaker Playback Switch:

Mã:
Node0x14[PinComplex] wcaps 0x40018d:StereoAmp-Out
Control: name="Speaker Playback Switch", index=0, device=0

Bước 3: Tải file kext EAPDfix ( hoặc những ai sử dụng kext Elan Touchpad thì có thể sửa trực tiếp trong info.plist của ApplePS2ElanTouchpad.kext ) . Mở file info.plist trong kext và chỉnh sửa các giá trị sau :
• Codec Address - Thay giá trị Address ở trên.
• AudioNodes->Speaker - nhập giá trị decimal của Speaker
• AudioNodes->Headphone - nhập giá trị decimal của Headphone
Ví dụ:

Mã:
<key>Codec Address</key>
<integer>0</integer><key>Headphones</key>
<integer>33</integer>
<key>Speaker</key>
<integer>20</integer>

Bước 4: Tiến hành cài kext bằng Kext Wizard hoặc Kext Utility.

Tác giả: EMlyDinEsH, dịch và bổ sung bởi Zyanoo
 
Last edited by a moderator:
Mọi thứ cần biết về NVRAM

NVRAM là gì?

Khái niệm NVRAM hơi xa lạ với các máy tính PC nhưng thật ra nó rất phổ biến trên các dòng máy Mac. NVRAM là một vùng bộ nhớ trong máy, không bị mất đi sau khi khởi động lại (khác với RAM). NVRAM thường được dùng để lưu các biến và giá trị tổng quát như: độ sáng, volume, tên máy, id của Find My Mac,... Trên Windows và Linux thì các giá trị này thường không lưu vào nvram mà được lưu trên đĩa cứng, do đa số các PC đều không có NVRAM. Tuy nhiên, OS X tận dụng tối đa NVRAM để phục vụ một số tính năng như iMessage, Facetime, boot device,...

NVRAM trên PC

NVRAM cũng như UEFI hiện đang được thêm vào trên các dòng máy PC từ sau này, và một số hệ điều hành Windows, Linux cũng áp dụng nó. Đơn giản nhất là các hệ điều hành Windows UEFI dùng nvram để kiểm tra xem SecureBoot trong UEFI có được bật hay không.

Tuy nhiên, mọi thứ không diễn ra suôn sẻ trên thế giới PC. Vào giai đoạn đầu của bước chuyển Legacy BIOS -> UEFI, nhiều máy đã bị trục trặc nghiêm trọng bởi NVRAM không ổn định. Đáng chú ý nhất là nhiều máy Samsung bị brick ngưng hoạt động do việc ghi NVRAM bị lỗi phải CMOS reset, thậm chí có thể dẫn đến hư firmware. Các hãng khác cũng bắt đầu dè chừng và trong các bản cập nhật BIOS mới, họ có thể tắt NVRAM nếu có phát hiện mối nguy hiểm nào.

Cách test NVRAM

Để test xem NVRAM có hoạt động hay không, bạn vào terminal của OS X và gõ lệnh:
Mã:
sudo nvram MyVar=TestValue
Sau đó gõ lệnh sau để xem NVRAM hiện thời:
Mã:
nvram -p
Bạn sẽ thấy dòng
Mã:
MyVar TestValue
Nếu sau khi bạn khởi động lại, vào terminal dùng lệnh nvram -p mà vẫn thấy dòng trên thì Nvram của bạn đã hoạt động.

NVRAM và Hackintosh

1/ Chameleon

Do kiến trúc đặc thù của Chameleon bootloader nên hầu như tất cả các efi-runtime của hệ thống đều không được Chameleon giữ lại trước khi khởi động OS X, điều này cũng có nghĩa NVRAM sẽ không hoạt động trên máy cho dù máy tính bạn đã được bật NVRAM.

Để khắc phục tình trạng này, FileNVRAM module đã được tạo ra để giả lập NVRAM cho Chameleon. Bằng việc tích hợp vào nhân của OS X một module giả lập FileNVRAM, các tính năng yêu cầu NVRAM sẽ hoạt động bình thường. Module FileNVRAM sẽ được chạy khi bạn khởi động OS X, lấy thông tin từ /Extra/nvramxxxxxxxx.plist và tải các biến vào NVRAM ảo, đồng thời tải kext FileNVRAM vào hệ thống. Mọi thao tác với NVRAM của OS X sẽ diễn ra bình thường thông qua FileNVRAM, và nội dung sẽ được lưu trên đĩa cứng.

2/ Clover UEFI

Khác với Chameleon, Clover tuân theo các chuẩn Apple hơn nên có thể sử dụng NVRAM của hệ thống (nếu có).

Để test xem bạn có Native NVRAM không, vào /EFI/Clover/Driver64UEFI/ và xoá EmuVariableUefi-64.efi, sau đó khởi động lại. Thực hiện các bước test NVRAM ở trên, nếu nó hoạt động thì máy bạn có hỗ trợ Native NVRAM và không cần dùng EmuVariableUefi-64.efi.

Nếu không có EmuVariableUefi-64.efi và NVRAM không hoạt động thì máy bạn đã tắt NVRAM, bạn cần phải dùng EmuVariableUefi-64.efi.

Cơ chế của EmuVariableUefi-64.efi là tự động load file nvram.plist mới nhất trong các ổ đĩa HFS+/FAT32 và giả lập NVRAM cho OS X. Tuy nhiên driver này không tự động lưu dữ liệu trong NVRAM vào file nvram.plist, nên cần có một trong các thủ thuật sau:

RC Script

Đây là cách được dùng bởi các bộ cài Clover (đến bản 2709 vẫn dùng). Sử dụng tính năng của OS X là tự động load /etc/rc.local khi khởi động, và /etc/rc.shutdown.local khi tắt máy, bộ cài Clover thêm các lệnh lưu log file vào rc.local và lệnh lưu nvram.plist vào rc.shutdown.local.

Thật ra RC Script đã được khai tử từ thời Leopard (10.5), nhưng do may mắn nó vẫn hoạt động đến Mavericks (10.9). Không may là nó chính thức biến mất ở Yosemite (10.10), nên hiện tại nhiều bạn dùng bộ cài Clover cũ bị mất các biến NVRAM sau khi khởi động lại máy, đó là do lệnh save nvram.plist không còn được thực thi khi tắt máy nữa.

LoginHook/LogoutHook

Để thay thế tạm thời cho RC Script, một số bạn dùng LoginHook/LogoutHook thay cho rc.local/rc.shutdown.local. LoginHook sẽ tự động chạy lệnh khi login, và logouthook sẽ chạy lệnh khi logout.

Tuy giải quyết được tạm thời việc save NVRAM nhưng LoginHook/LogoutHook cũng có một số khuyết điểm. Các lệnh sẽ được chạy khi login/logout chứ không phải khi khởi động/tắt máy. Một điều quan trọng nữa là cách này đã bị khai tử từ thời....Tiger (10.4), nên việc ra đi chỉ còn là vấn đề thời gian.

Launchd

Đây là cách chính thức của Apple dành cho việc chạy lệnh khi khởi động/tắt máy, và cũng là cách mà các bộ cài Clover phiên bản 2712 trở về sau dùng đến để tránh trường hợp bị die bất tử.

Tác giả: pokenguyen
 
Last edited:
DSDT, SSDT: Tất cả về SSDT

Như đã giới thiệu trong bài cơ bản về DSDT/SSDT, SSDT (Secondary System Description Table) là các bảng đặc tả hệ thống phụ cho DSDT, mô tả một số thiết bị phụ. Việc chia ra này giúp các hãng có thể quản lý DSDT tốt hơn, đồng thời có thể chia sẻ SSDT giữ nhiều máy tương tự. SSDT theo máy thường gồm các bảng sau (màu đỏ là tên của scope/device có thể tìm thấy trong ssdt):
- quản lý SATA \_SB.PCI0.SATA
- quản lý nhiệt độ PTID
- quản lý CPU \_PR.CPU
- quản lý Intel HD - PCI0.GFX0 hoặc PCI0.VID
- quản lý đồ họa rời - có nhiều tên, thường là PEGP hoặc DGFX,...

Để sửa đổi các bảng này, các bạn cần trích xuất và biên dịch tất cả DSDT/SSDT, sửa file *.dsl và save lại thành *.aml. Để load các bảng SSDT vào máy, các bạn cần đặt tên theo thứ tự SSDT.aml, SSDT-1.aml, SSDT-2.aml,... và đặt vào đúng vị trí của từng bootloader (chung với DSDT.aml).

Drop OEM SSDT

Tính năng này phát sinh từ việc các bảng SSDT quản lý CPU gốc của hệ thống (vốn dùng cho nhiều CPU) đa số trở nên vô dụng với OS X, buộc người dùng phải tạo các bảng SSDT dành cho CPU được tối ưu hoá cho OS X. Tuy nhiên, nếu vừa load SSDT tối ưu, vừa load các bảng SSDT gốc cho CPU có thể dẫn đến xung đột, làm CPU không hoạt động chính xác.

Từ đó, Drop OEM SSDT ra đời để dọn sạch (drop) SSDT CPU gốc lẫn các bảng SSDT khác có trong BIOS/UEFI theo phương châm giết nhầm còn hơn bỏ sót.

Tất nhiên sẽ có các bảng SSDT gốc không liên quan CPU vẫn bị loại bỏ, may mắn là hầu hết các bảng này không quan trọng (bằng chứng là đa số vẫn chạy với DropSSDT=true).

SSDT quản lý CPU

Các bootloader như Chameleon, Clover hỗ trợ tạo ra một bảng SSDT điều khiển CPU hợp chuẩn OS X bằng cách set GeneratePStates/GenerateCStates=True.

Tuy nhiên, chỉ có script SSDTPrgen của PikerAlpha được xem là chuẩn và đầy đủ nhất cho OS X, và luôn được cập nhật liên tục. Các bạn có thể tạo file SSDT.aml bằng SSDTPrgen bằng cách chọn Tools > SSDT Generator trong Hackintosh Vietnam Tool.

Lưu ý:
  • SSDTPrgen chỉ hỗ trợ các dòng Core i của SandyBridge/IvyBridge/Haswell và Xeon. Các CPU khác phải dùng Generate của Chameleon/Clover.
  • Không nên dùng SSDT.aml kèm với Generate của bootloader, có thể gây xung đột giữa 2 bảng.
  • Nên dùng tính năng Drop OEM SSDT của bootloader để tránh xung đột giữa các bảng.
SSDT quản lý Intel HD (laptop)

Đa số các card onboard Intel HD đều được định nghĩa trong DSDT, chỉ riêng 1 số trường hợp (đặc biệt là các dòng Haswell) có riêng SSDT để quản lý.

Để kiểm tra xem Intel HD của bạn ở file nào, các bạn cần tìm 1 trong các mục sau:
Mã:
Device (GFX0)
Device (VID)
Name (_ADR, 0x00020000)
và lưu ý Intel HD luôn nằm ngay trong scope PCI0.

Ví dụ trường hợp SSDT cho Intel HD 4400 nằm trong file ssdt7.dsl
PXUJYMe.png


Với các trường hợp này, nếu bạn muốn patch độ sáng phạn phải compile và nạp ssdt chứa Intel HD vào bootloader. Nếu có sửa đổi tên GFX0 thành IGPU thì phải thực hiện trên tất cả các file DSDT/SSDT.

SSDT quản lý card đồ hoạ rời (laptop)

Thường card đồ họa rời có tên DGFX, PEGP và chứa các hàm _OFF _ON, ví dụ:
nYbqiRq.png
 
Last edited by a moderator:
DSDT, SSDT: Cách tắt card đồ họa ngoài trên laptop

Chỉ áp dụng với máy có cả đồ họa ngoài (AMD/NVIDIA) và Intel HD, đồng thời có chế độ tự chuyển card ngoài/onboard với nVidia Optimus/AMD Switchable Graphics.

Bước 1: Trích xuất tất cả DSDT/SSDT gốc và biên dịch ngược thành *.dsl

Bước 2:Xác định các DSDT, SSDT chứa đồ họa onboard (nếu có) và đồ họa rời.

Bước 3: Nếu có sửa tên GFX0->IGPU thì phải sửa trên tất cả các file DSDT/SSDT.

Bước 4: Tìm hàm _INI của card đồ họa rời (nằm trên DSDT hoặc SSDT), thêm lệnh _OFF() vào cuối hàm.

liRlcrG.png


Nếu card rời không có hàm _INI thì bạn gọi lệnh _OFF trong hàm _SB.PCI0._INI của DSDT, lưu ý trong trường hợp này cần phải ghi đầy đủ đường dẫn, và thêm External nếu như hàm _OFF không nằm trong DSDT.

IFGVMBK.png


Bước 5: Lưu các file SSDT chứa đồ họa onboard (nếu có) và đồ họa rời thành .aml, đưa vào bootloader (đặt tên SSDT.aml, SSDT-1.aml, SSDT-2.am,...)

Bước 6: Khởi động lại và chạy chương trình Utilities > System Information > Graphics/Display, nếu chỉ có card Intel HD thì bạn đã thành công.

Tác giả: pokenguyen
 
Last edited by a moderator:
DSDT, SSDT: Patch full độ sáng cho HD3000, 4000, 4400, 4600

Yêu cầu:
- Trích xuất và biên dịch ngược các file DSDT, SSDT
- Cấu hình MacIASL và sửa hết các lỗi
- Đổi tên GFX0 cho card onboard thành IGPU

- Mở file DSDT.dsl hoặc SSDT*.dsl chứa card Intel HD, chọn nút Patch > Chọn mục 2.10 Brightness fix (HD3000/HD4000) hoặc 2.11 Brightness (Haswell) tùy vào máy của bạn. Apply.
1_zpsexlkyseg.png

- Bấm Compile để check lỗi, lỗi thường gặp là không tìm thấy hàm, do bạn chưa đổi tên tất cả GFX0 của card onboard, hoặc thiết bị GFX0 không nằm trong DSDT (chủ yếu trên máy Haswell), bạn cần tìm file SSDT.dsl chứa GFX0 đổi tên và làm lại các bước.

- Biên dịch ra file DSDT.aml, hoặc SSDT-*.aml (* bắt đầu từ 1) đặt đúng thư mục của bootloader.

- Cài RehabMan's ACPIBacklight: https://bitbucket.org/RehabMan/os-x-acpi-backlight/downloads hoặc dùng Hackintosh Vietnam Tool để cài.

Lưu ý: ACPIBacklight dùng nvram để lưu giá trị độ sáng khi tắt máy, nên bạn cần có nvram module để giá trị được lưu sau khi restart.

- Chameleon: Dùng FileNVRAM
- Clover UEFI: Khi cài đặt phải chọn EmuVariableUefi-64 và Install RC scripts on target volume

Tác giả: pokenguyen
 
Last edited by a moderator:
  • Like
Reactions: trinhaluc95
Clover Config: Patch AppleHDA on-the-fly

Phương pháp này giúp chúng ta không cần phải patch lại AppleHDA sau mỗi lần update OS X.
Yêu cầu:
  • Sử dụng Clover Bootloader
  • Đang dùng kext AppleHDA đã được patch, không dùng VoodooHDA
Bước 1: Download bcc9's script modified by RehabMan tại đây, giải nén ra desktop.

Vào terminal, gõ lệnh sau:
Mã:
cd ~/Desktop/patch-hda
./patch-hda.pl -x 111d7605
LƯU Ý: Bạn phải thay 111d7605 thành audio codec id của bạn.
Trên màn hình xuất hiện như sau:
HR8kPCj.png

Mở config.plist bằng TextEdit, copy các đoạn mã được tạo vào phần KernelAndKextPatches > KextsToPatch:

hWtsISD.png


Lưu file config.plist
Bước 2: Download file DummyHDA tại đây. Copy LayoutX.xml.zlib và Platforms.xml.zlib trong thư mục AppleHDA.kext/Contents/Resources/ đã được patch trước đó vào thư mục DummyHDA.kext/Contents/Resources/
Bước 3: Mở file Info.plist trong thư mục AppleHDA.kext/Contents/Plugins/AppleHDAHardwareConfigDriver.kext/Contents/ (của file AppleHDA đã được patch) . Copy giá trị của mục
Mã:
IOKitPersonalities/HDA Hardware Config Resource/HDAConfigDefault
vào mục
Mã:
IOKitPersonalities/HDA Hardware Config Resource/HDAConfigDefault
của file Info.plist trong DummyHDA.kext/Contents/
ThIaDqc.png


Bước 4: Cài DummyHDA.kext đã được sửa và AppleHDA.kext gốc vào S/L/E, repair permission và rebuild cache rồi reboot để test.
Update: Một số bạn làm y hệt như trên nhưng không thành công là do kext AppleHDAHardwareConfigDriver.kext không load được. Mình sẽ hướng dẫn các bạn sửa như sau:

B0: Máy của bạn đã được patch AppleHDA.kext
B1: Tải LegacyHDA.kext ở đây
B2: Làm theo các bước từ 1 đến 2 như trên. Bao gồm copy layoutplatformsvào thư mục Resources; sửa lại Config.plist để Clover tự động patch AppleHDA.
B3: Replace file Info.plist đã patch trong /AppleHDA.kext/Contents/Plugins/AppleHDAHardwareConfigDriver.kext/Contents/vào /LegacyHDA.kext/Contents/Plugins/AppleHDAHardwareConfigDriver.kext/Contents/
B4
: Cài Legacy.kext bằng KextUtility

Tác giả: pokenguyen, Tuanpekoe & vusun123
 
Last edited by a moderator:
Tình trạng
Không mở trả lời sau này.