Hướng dẫn RE-PATCH AppleHDA.kext sau khi cập nhật OS X

Để có âm thanh trở lại sau mỗi lần update osx
Nếu đã từng dùng qua nhiều phiên bản OS X hack thì bạn sẽ không ngac nhiên khi nhận ra mỗi lần cập nhật lên một version mới, AppleHDA lại không hoạt động. Điều này rất dễ hiểu thôi, build mới thì kext mới, kext mới cài đè vào kext cũ nên kext đã patch không có tác dụng. 

Để khắc phục tình trạng này, bạn có thể cài đè lại kext patch cho phiên bản trước đó (roll back kext), tuy nhiên không phải lúc nào cách này cũng được. Việc roll back kext chỉ phát huy tác dụng trong trường hợp Apple không thay đổi binary của kext, nếu nó bị thay đổi ở một số chỗ nào đó thì dù bạn có cài lại bao nhiêu lần AppleHDA thì cái icon sound bé bé xinh xinh nó vẫn mờ.

Vì vậy, hôm nay mình viết bài hướng dẫn Re-patch kext AppleHDA, nhằm giúp các bạn khắc phục được vấn đề mất âm thanh sau mỗi lần cập nhật OS X. Như mình đã đề cập bên trên, việc âm thanh mất chủ yếu là do binary của kext bị thay đổi nên nói là re-patch cho oách thôi chứ thực ra là patch lại mỗi cái binary, các thứ khác chỉ việc copy paste lại là được. Cách làm đơn giản lém!

Yêu cầu:
  • AppleHDA đã hoạt động trên một version OS X nào đó từ 10.8 trở về sau và hiện các bạn vẫn còn giữ lại kext đó.
  • Hiểu và nắm bắt được một số thông tin cơ bản của AppleHDA.
  • Biết cách thao tác và sử dụng một số app trên OS X.
  • Công cụ: PlistEdit Pro (Dùng thử thôi cũng được) và patch-hda.zip.

Các bước: Xác định layout >> Chỉnh sửa info.plist >> Copy lại layout và platform >> Patch lại binary >> Cài kext.
Bonus: Patch AppleHDA on the fly - Update thoải mái không lo mất âm thanh.

Bước 1: Xác định layout (Bỏ qua nếu đã biết).

Layout dùng cho AppleHDA thường được inject qua DSDT/Bootloaders. Điều may mắn là những file này hoàn toàn không bị thay đổi khi cập nhật OS X, vậy nên, ở phiên bản cũ layout như thế nào thì phiên bản mới layout nó vẫn như thế.
Để xác định layout, bạn vào System Information >> Audio >> High Definition Audio >> Layout.



Bước 2: Chỉnh sửa info.plist.

  • Copy kext AppleHDA mới cập nhật từ System\Library\Extensions ra Desktop hoặc nơi nào đó khác để tiện chỉnh sửa.
  • Dùng app PlistEdit Pro mở 2 file info.plist của 2 kext AppleHDA (đã patch và chưa) tại đường dẫn: 
AppleHDA.kext\Contennts\Plugins\AppleHDAHardwareConfigDriver.kext\Contents\Info.plist\IOKitPersonalities/HDAConfigDefault.

  • Đến đây, kiểm tra tất cả các keys trong đó xem key nào có layout trùng với layout ở trên thì copy tất cả các giá trị trong đó sang Info.plist của kext mới.
  • Các keys còn lại các bạn có thể để lại hoặc không nhưng tốt hơn hết là xóa chúng đi, tránh việc trùng lặp layout.

Update 07/04/2016: Đối với El Capitan 10.11.4, các bạn làm thêm một bước theo guide này nha.

Bước 3: Copy các file layout và platform sang kext mới.
  • Thao tác trên kext AppleHDA cũ: vào AppleHDA.kext/Contents/Resources copy 2 file Platforms.xml.zlibLayoutX.xml.zlib (X là số layout tương ứng với layoutID trong Info.plist).
  • Thao tác trên kext AppleHDA mới: vào AppleHDA.kext\Contents\Resources, paste 2 file vừa copy bên trên.
Bước 4: Patch binary.
  • Giải nén và copy thư mục patch-hda ra ngoài Desktop.
  • Trong Terminal, gõ lệnh như sau:

cd ~/desktop/patch-hda
./patch-hda.pl 10ec0282 (Thay 10ec0282 bằng DeviceID card sound của máy bạn).

  • Đợi một lúc cho đến khi nào nó báo patch successfully như trong hình, nhập mật khẩu admin nếu được yêu cầu (mật khẩu sẽ không hiện lên màn hình).

  • Vào System\Library\Extensions\AppleHDA.kext\Contents\MacOS, copy file AppleHDA paste đè vào thư mục MacOS tương ứng của kext ngoài Desktop.

Bước 5: Xong xuôi tất cả ta cài kext thôi ^_^.

******************************************************************

Bonus: Patch AppleHDA on the fly - Update thoải mái không lo mất âm thanh

Credit: RehabMan, bcc9, Pokenguyen.

Cách trên mình hướng dẫn là fix được âm thanh sau khi update OS X nhưng cứ mỗi lần update là mỗi lần phải patch lại. Tuy nhiên, các cao thủ của làng Hackintosh thế giới đã nghĩ ra cách làm sao để có thể update OS X thoải mái mà âm thanh không bị ảnh hưởng, đó là sử dụng một kext dummy chứa những thông tin chỉnh sửa của kext, loại kext này hoàn toàn không bị mất hay bị thay thế sau quá trình cập nhật, cùng với đó là tận dụng tính năng patch on the fly của bootloader Clover để patch binary cho kext.

Yêu cầu:
  • AppleHDA đã hoạt động trên OS X bất kỳ từ 10.8 trở về sau.
  • Hiểu và nắm bắt một số thông tin cơ bản của kext.
  • Biết cách thao tác và sử dụng một số app trong Mac OS.
  • Công cụ: patch-hda.zip, DummyHDA.kext, PlistEdit Pro.

Bước 1: Patch binary bằng Clover.

  • Down, giải nén và copy thư mục patch-hda ra ngoài Desktop.
  • Trong Terminal, gõ:
cd ~/desktop/patch-hda
./patch-hda.pl -x 10ec0282 (Thay 10ec0282 bằng DeviceID card sound của máy bạn).

  • Mở config.plist bằng TextEdit rồi copy đoạn code trong Terminal vào phần Kexts to Patches.

Bước 2: Copy một số file cần thiết.

  • Vào AppleHDA.kext\Contennts\Plugins\AppleHDAHardwareConfigDriver.kext\Contents\Info.plist\IOKitPersonalities/HDAConfigDefault, copy tất cả các giá trị trong đó dán vào DummyHDA.kext\Contents\Info.plist\IOKitPersonalities/HDAConfigResources\HDAConfigDefault.
  • Vào AppleHDA.kext\Contents\Resources, copy file Platforms.xml.zlib và file LayoutX.xml.plist tương ứng với layout của kext cũ rồi dán vào DummyHDA.kext\Contents\Resources.
  • Vào AppleHDA.kext\Contents\MacOS, copy file AppleHDA trong đó rồi dán vào DummyHDA.kext\Contents\MacOS.

Bước 3: Cài kext.

  • Restore lại kext AppleHDA gốc của máy, nếu bạn không còn giữ thì có thể extract từ bộ cài ra.
  • Dùng Kext Wizard hoặc Kext Utility cài DummyHDA.kext.

Popular posts from this blog

[Hướng dẫn] Sử dụng Clover Configurator tạo file config.plist cho uEFI Clover Bootloader

[Guide for Newbie] Hướng dẫn patch DSDT/SSDT cho máy hackintosh (Phần 5)

[Guide for newbie] Hướng dẫn cài Mac OS X trên UEFI (Phần 3)