AppleHDA: 3 phương pháp tối ưu hóa âm thanh cho Hackintosh [10.11 Updated]

Kho kext appleHDA và 3 phương pháp để sử dụng, tối ưu hóa âm thanh trên hackintosh

AppleHDA.kext là driver quản lý âm thanh trong hệ điều hành Mac OS X. So với VoodooHDA thì AppleHDA hoàn toàn vượt trội trong việc đem đến chất lượng âm thanh cũng như đảm bảo tính ổn định cho hệ thống.

Hiện nay, phần lớn các codec sound phổ thông cho các dòng laptop/desktop đều đã được patch và các bạn có thể tìm thấy dễ dàng trên các forum trong cũng như ngoài nước. Bài viết này của mình không ngoài mục đích cung cấp cho các bạn cách tiếp cận các kext đã được patch sẵn đó, hướng dẫn sử dụng kext giúp các bạn tiết kiệm phần nào thời gian và công sức.

Mình xin chân thành cảm ơn Mirone, Vusun123, Pokenguyen, Bcc9, RehabMan cùng rất nhiều các cao thủ khác, những người đã patch kext cũng như đóng góp công sức để việc patch AppleHDA trở nên dễ dàng hơn!

Chào mừng các bạn đến với bài viết:

AppleHDA: 3 phương pháp tối ưu hóa âm thanh cho Hackintosh


Bài hướng dẫn gồm 2 phần chính như sau:

I. Tổng hợp các kext AppleHDA đã được patch sẵn.
II. Hướng dẫn sử dụng.
III. Kiểm tra tình trạng kext sau cài đặt.

I. Tổng hợp các kext AppleHDA đã được patch sẵn.


Hackintosh Vietnam Tool

Niềm tự hào của hackintosher Việt Nam là đây. Tool tổng hợp rất nhiều kext AppleHDA từ nhiều nguồn khác nhau, trong đó phần lớn các kext cho laptop do anh Sơn Huỳnh (Vusun123) patch.
Link:http://www.insanelymac.com/forum/files/file/210-hackintosh-vietnam-ultimate-aio-tool/

Kho AppleHDA cho Yosemite của Mirone

Một trong những cao thủ của làng Hackintosh thế giới, chuyên về patch AppleHDA. Mirone đã patch được rất nhiều kext cho cả laptop và desktop. Nhằm tôn trọng bản quyền tác giả, mình sẽ post link trực tiếp kho AppleHDA của Mirone chứ không re-up lại.
Link: https://github.com/Mirone

Kho AppleHDA của Toleda

Toleda cũng là một trong những người chơi Hackintosh rất giỏi. Kho AppleHDA của Toleda chủ yếu là dành cho các codec của Realtek (mã ALC XXX) dùng trên Desktop.
Các codecs hỗ trợ: ALC 269, ALC 283, ALC 885, ALC 887, ALC 889, ALC 892, ALC 898, ALC 1150.
Link: https://github.com/toleda/audio_RealtekALC

Chú ý: Kext AppleHDA của Toleda được cài bằng lệnh, mình sẽ hướng dẫn cách cài những kext này riêng.

Một số kext do mình tự patch

Trong quá trình support cho group, mình có hỗ trợ một số bạn patch AppleHDA, số lượng kext tuy không nhiều nhưng mình đều đã test cẩn thận. Đa số các kext mình patch cho Yosemite 10.10 trở lên, tuy nhiên, do sơ ý, một số kext mình quên không ghi lại phiên bản OS nên có thể khi các bạn cài vào sẽ không có sound (dù làm đúng hướng dẫn). Nếu rơi vào tình trạng như vậy, các bạn đọc bài này để biết cách cập nhật lại kext.

Update 07/04/2016: Dành riêng cho những ai cài El Capitan 10.11.4, vì mình không còn Mac để chỉnh sửa kext nữa nên các bạn nào dùng kext của mình vui lòng đọc bài nàybài này để biết cách repatch kext nhé.
Update 20/10/2015: Kext ngừng update vô thời hạn do mình có việc bận nên tạm thời nghỉ chơi Hack. Các bạn có thể tham khảo bài này để có thể tự re-patch kext cho mình :).
Update 02/10/2015: Cập nhật tất cả các kext lên 10.11. Các version cũ hơn, vui lòng tìm tại ĐÂY.

Chú ý: Các kext ALC mình đều sử dụng layout 28 để patch.

II. Hướng dẫn sử dụng kext

Update 02/10/2015: 


  • Đối với OS X El Capitan 10.11, các bạn chỉnh lại config.plist tại Rt Variables để BootConfig là 0x28 và CsrActiveConfig là 0x67.
  • Cập nhật Clover bootloader lên phiên bản mới nhất.

1. Xác định tên codec dựa vào DeviceID


Các codec của Realtek thường có mã ALC XXX có thể được xác định dễ dàng thông qua DeviceID/CodecID trên Windows/Mac.
Trên Windows


Trên Mac
Dùng app DPCI Manager để xác định DeviceID/Codec ID của sound card.


Qua Codecdump


2. Xác định layout của kext


Khi các bạn down kext từ các nguồn trên về, tác giả đều có đính kèm những file text cung cấp các thông tin cơ bản về kext trong đó có layout.
Hackintosh Vietnam Tool: thông tin về layout được để trong phần mô tả bằng tiếng Anh.
Mirone: thông tin về layout được để trong file README/LEIA-ME.rtf.
Kext mình patch: thông tin về layout được để trong Resources\Kext Info.

Trong trường hợp bạn down kext từ một nguồn nào đó về nhưng tác giả lại không đề cập đến layout sử dụng, các bạn có thể biết được layout bằng cách vào:

AppleHDA.kext\Contents\PlugIns\AppleHDAHardwareConfigDriver.kext\Contents\info.plist.

Mở file Info.plist bằng PlistEdit Pro và tìm kiếm như hình dưới đây:

Lưu ý: Các layout được sử dụng phổ biến hiện này là 3, 4, 5, 7, 12 và 28.

3. Inject layout


Trên một hệ thống Mac Hack, muốn có âm thanh không phải cứ patch kext xong là có ngay. Bạn cần inject layout cho kext, hiểu đơn giản là cung cấp những thông tin cơ bản để máy nhận biết chip audio. Dưới đây, mình sẽ hướng dẫn 3 cách inject layout cho AppleHDA, trong đó, mình khuyến khích các bạn sử dụng cách thứ nhất là inject qua DSDT (sử dụng MacIASL); cách 2 và cách 3 về lý thuyết là được tuy nhiên mình chưa từng làm thử nên sẽ không thể hỗ trợ nhiều nếu các bạn sử dụng những cách này. Ngoài ra, cách 2 và cách 3 thông thường chỉ áp dụng cho những máy nào mà DSDT không có Device (HDEF).

Inject layout qua DSDT.
Trong MacIASL, thêm method _DSM vào Device (HDEF) có nội dung như sau:

Method (_DSM, 4, NotSerialized)
{
If (LEqual (Arg2, Zero))
{
Return (Buffer (One)
{
0x03
})
}

Return (Package (0x06)
{
"layout-id",
Buffer (0x04)
{
0x1C, 0x00, 0x00, 0x00
},

"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
},

"PinConfigurations",
Buffer (Zero) {}
})
}

Trong đoạn code trên thì phần quan trọng nhất là layout-id (chỗ mình in đậm và bôi đỏ). Tùy thuộc vào layout của kext mà các bạn sửa cho phù hợp. Layout có thể được điền vào dưới dạng hệ thập phân (hệ cơ số 10) hoặc hệ thập lục phân (hệ cơ số 16) đều được, tuy nhiên mình thường dùng hệ thập lục phân vì nó chuẩn theo ngôn ngữ chung của DSDT. Dưới đây là các layout thường được dùng cho AppleHDA:



Inject layout qua config.plist cho những ai sử dụng Clover bootloader
Mở config.plist bằng Clover Configurator, chuyển sang tab Devices và chỉnh như hình:


Inject layout qua chameleon.boot.plist cho những ai sử dụng Chameleon bootloader.
Mở org.chameleon.boot.plist bằng Chameleon Wizard và chỉnh như hình. Ngoài ra, khi cài bootloader cần chọn cài thêm module HDAEnabler nữa.


3. Cài kext và DSDT


Cài Kext
Dùng một trong hai app Kext Utility hoặc Kext Wizard để cài kext:
+ Kext Utility: nhập pass rồi kéo thả file kext vào rồi đợi.
+ Kext Wizard: xem hình.

Cài DSDT:
Sau khi đã add layout-id vào DSDT, các bạn lưu lại file dưới định dạng .aml vào copy như sau:
+ Clover: EFI\Clover\ACPI\Patched\DSDT.aml.
+ Chameleon: Mac Volume\Extra\DSDT.aml.

Chú ý: Tham khảo Guide for Newbie (phần 5) để biết thêm về cách patch DSDT. Trong nhiều trường hợp, bạn sẽ cần phải patch thêm cả HPET và IRQ thì mới lên audio.

HƯỚNG DẪN CÀI CÁC KEXT CỦA TOLEDA BẰNG LỆNH


Yêu cầu:
- Máy hiện đang cài các OS X 10.8 trở lên, dưới 10.8 không được hỗ trợ.
- Nếu đang dùng 10.11 El Capitan, rootless=1 là bắt buộc phải có trong boot-args, để BooterConfig 0x28 CsrActiveConfig 0x67.
- Nếu đang dùng 10.10.X Yosemite, kext-dev-mode=1 là bắt buộc phải có trong boot-args.

Cài đặt Kext:
- Tải về file audio_realtekALC-110.command (chọn View Raw để down)
- Giải nén và click đúp chuột vào file >> nhập password.
- Xác nhận tên codec ALC XXX (chỉ áp dụng cho các codec 885, 887, 888, 889, 892, 898, 1150).
- Xác nhận có bật audio HDMI cho card HD4600 hay không: gõ Y (Yes) hoặc N (No).
- Kiểm tra lại trong System\Libaray\Extensions xem kext đã được patch hay chưa.
- Khởi động lại và kiểm tra tình trạng các input/output.

III. Kiểm tra tình trạng kext sau cài đặt

Việc đầu tiên sau khi cài đặt là các bạn khởi động lại máy. Sau khi khởi động lại, sẽ xảy ra một trong hai trường hợp sau:
- Máy có âm thanh: nếu như vậy thì có thể nói là bạn đã thành công phần nào. Tiếp sau đó, bạn vào System Preferences/Sound và kiểm tra tình trạng nhận các thiết bị trong thẻ Input và Output.
- Máy không có âm thanh: restart lại từ 1-2 lần nữa để máy tiếp nhận đầy đủ thông tin của kext và DSDT. Nếu sau 1-2 lần restart mà vẫn chưa có, bạn kiểm tra lại layout và tình trạng load của kext như hình dưới, trong trường hợp có vấn đề, kiểm tra lại các bước trên xem mình đã làm đúng hết chưa.
Cuối cùng, nếu làm đi làm lại vẫn không được thì đã đến lúc bạn tự patch kext cho mình.


Chúc các bạn thành công!
~~~~~~~~~~~~~~~~~~~~THE END~~~~~~~~~~~~~~~~~~~~~~
AppleHDA.kext có thể được coi như là một chương trình quản lý âm thanh trong hệ điều hành Mac OS X, nó cho phép bạn bật/tắt hoặc tăng/giảm âm lượng, thu âm hoặc làm những thứ khác liên quan đến âm thanh. Nếu bạn mong muốn có những trải nghiệm thực thụ hệ điều hành táo khuyết thì AppleHDA là không thể thiếu.

Hiện nay, phần lớn các codec sound phổ thông cho các dòng laptop/desktop đều đã được patch và các bạn có thể tìm thấy dễ dàng trên các forum trong cũng như ngoài nước. Bài viết này của mình không ngoài mục đích cung cấp cho các bạn cách tiếp cận các kext đã được patch sẵn đó, hướng dẫn sử dụng kext giúp các bạn tiết kiệm phần nào thời gian và công sức.

Mình xin chân thành cảm ơn Mirone, Vusun123, Pokenguyen, Bcc9, RehabMan cùng rất nhiều các cao thủ khác, những người đã patch kext cũng như đóng góp công sức để việc patch AppleHDA trở nên dễ dàng hơn!

Bài hướng dẫn gồm 2 phần chính như sau:
I. Tổng hợp các kext AppleHDA đã được patch sẵn.
II. Hướng dẫn sử dụng.
III. Kiểm tra tình trạng kext sau cài đặt.

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

I. Tổng hợp các kext AppleHDA đã được patch sẵn.

  • Hackintosh Vietnam Tool
Niềm tự hào của hackintosher Việt Nam là đây. Tool tổng hợp rất nhiều kext AppleHDA từ nhiều nguồn khác nhau, trong đó phần lớn các kext cho laptop do anh Sơn Huỳnh (Vusun123) patch.
Link:http://www.insanelymac.com/forum/files/file/210-hackintosh-vietnam-ultimate-aio-tool/
  • Kho AppleHDA cho Yosemite của Mirone
Một trong những cao thủ của làng Hackintosh thế giới, chuyên về patch AppleHDA. Mirone đã patch được rất nhiều kext cho cả laptop và desktop. Nhằm tôn trọng bản quyền tác giả, mình sẽ post link trực tiếp kho AppleHDA của Mirone chứ không re-up lại. 
Link: https://github.com/Mirone

  • Kho AppleHDA của Toleda
Toleda cũng là một trong những người chơi Hackintosh rất giỏi. Kho AppleHDA của Toleda chủ yếu là dành cho các codec của Realtek (mã ALC XXX) dùng trên Desktop.
Các codecs hỗ trợ: ALC 269, ALC 283, ALC 885, ALC 887, ALC 889, ALC 892, ALC 898, ALC 1150.
Link: https://github.com/toleda/audio_RealtekALC

Kext AppleHDA của Toleda được cài bằng lệnh, mình sẽ hướng dẫn cách cài những kext này riêng.


  • Một số kext do mình tự patch
Trong quá trình support cho group, mình có hỗ trợ một số bạn patch AppleHDA, số lượng kext tuy không nhiều nhưng mình đều đã test cẩn thận. Đa số các kext mình patch cho Yosemite 10.10 trở lên, tuy nhiên, do sơ ý, một số kext mình quên không ghi lại phiên bản OS nên có thể khi các bạn cài vào sẽ không có sound (dù làm đúng hướng dẫn). Nếu rơi vào tình trạng như vậy, các bạn đọc bài này để biết cách cập nhật lại kext.
ALC 233 - Asus TP550L series
ALC 233 - Sony Vaio Fit SVF15A13SGB
ALC 233 - Asus X550L series (Mic not work)
ALC 269VC - Sony Vaio SVE15133CVW
ALC 269VB - Acer Aspire V3-571 series
ALC 269 - Asus K43E
ALC 270 - Asus X45CC series
ALC 275 - Dell XPS 15 series
ALC 282 - Dell Inspiron 3421/3521 series
ALC 283 - Acer Aspire E5-572G (LineIn not work)
ALC 662 laptop
ALC 663 - Asus N56JN
Conexant 20590
IDT92HD87B1/3 - Dell Inspiron N4050

Chú ý: Các kext ALC mình đều sử dụng layout 28 để patch.

-----------------------------------------------------------------------------------------------

II. Hướng dẫn sử dụng kext

1. Xác định tên codec dựa vào DeviceID

Các codec của Realtek thường có mã ALC XXX có thể được xác định dễ dàng thông qua DeviceID/CodecID trên Windows/Mac.
  • Trên Windows

  • Trên Mac
Dùng app DPCI Manager để xác định DeviceID/Codec ID của sound card.

  • Qua Codecdump

2. Xác định layout của kext

Khi các bạn down kext từ các nguồn trên về, tác giả đều có đính kèm những file text cung cấp các thông tin cơ bản về kext trong đó có layout.
  • Hackintosh Vietnam Tool: thông tin về layout được để trong phần mô tả bằng tiếng Anh.
  • Mirone: thông tin về layout được để trong file README/LEIA-ME.rtf.
  • Kext mình patch: thông tin về layout được để trong Resources\Kext Info.

Trong trường hợp bạn down kext từ một nguồn nào đó về nhưng tác giả lại không đề cập đến layout sử dụng, các bạn có thể biết được layout bằng cách vào:

AppleHDA.kext\Contents\PlugIns\AppleHDAHardwareConfigDriver.kext\Contents\info.plist.

Mở file Info.plist bằng PlistEdit Pro và tìm kiếm như hình dưới đây:
Lưu ý: Các layout được sử dụng phổ biến hiện này là 3, 4, 5, 7, 12 và 28.

3. Inject layout 

Trên một hệ thống Mac Hack, muốn có âm thanh không phải cứ patch kext xong là có ngay. Bạn cần inject layout cho kext, hiểu đơn giản là cung cấp những thông tin cơ bản để máy nhận biết chip audio. Dưới đây, mình sẽ hướng dẫn 3 cách inject layout cho AppleHDA, trong đó, mình khuyến khích các bạn sử dụng cách thứ nhất là inject qua DSDT (sử dụng MacIASL); cách 2 và cách 3 về lý thuyết là được tuy nhiên mình chưa từng làm thử nên sẽ không thể hỗ trợ nhiều nếu các bạn sử dụng những cách này. Ngoài ra, cách 2 và cách 3 thông thường chỉ áp dụng cho những máy nào mà DSDT không có Device (HDEF).

  • Inject layout qua DSDT.
Trong MacIASL, thêm method _DSM vào Device (HDEF) có nội dung như sau:


Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x03
                    })
                }

                Return (Package (0x06)
                {
                    "layout-id", 
                    Buffer (0x04)
                    {
                        0x1C, 0x00, 0x00, 0x00
                    }, 

                    "hda-gfx", 
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }, 

                    "PinConfigurations", 
                    Buffer (Zero) {}
                })
            }

Trong đoạn code trên thì phần quan trọng nhất là layout-id (chỗ mình in đậm và bôi đỏ). Tùy thuộc vào layout của kext mà các bạn sửa cho phù hợp. Layout có thể được điền vào dưới dạng hệ thập phân (hệ cơ số 10) hoặc hệ thập lục phân (hệ cơ số 16) đều được, tuy nhiên mình thường dùng hệ thập lục phân vì nó chuẩn theo ngôn ngữ chung của DSDT. Dưới đây là các layout thường được dùng cho AppleHDA:




  • Inject layout qua config.plist cho những ai sử dụng Clover bootloader
Mở config.plist bằng Clover Configurator, chuyển sang tab Devices và chỉnh như hình:


  • Inject layout qua chameleon.boot.plist cho những ai sử dụng Chameleon bootloader.
Mở org.chameleon.boot.plist bằng Chameleon Wizard và chỉnh như hình. Ngoài ra, khi cài bootloader cần chọn cài thêm module HDAEnabler nữa.


3. Cài kext và DSDT

  • Cài Kext
Dùng một trong hai app Kext Utility hoặc Kext Wizard để cài kext:
+ Kext Utility: nhập pass rồi kéo thả file kext vào rồi đợi.
+ Kext Wizard: xem hình.


  • Cài DSDT:
Sau khi đã add layout-id vào DSDT, các bạn lưu lại file dưới định dạng .aml vào copy như sau:
+ Clover: EFI\Clover\ACPI\Patched\DSDT.aml.
+ Chameleon: Mac Volume\Extra\DSDT.aml.

Chú ý: Tham khảo Guide for Newbie (phần 5) để biết thêm về cách patch DSDT. Trong nhiều trường hợp, bạn sẽ cần phải patch thêm cả HPETIRQ thì mới lên audio.



-----------------------------------------------------------------------------------------------



HƯỚNG DẪN CÀI CÁC KEXT CỦA TOLEDA BẰNG LỆNH

Yêu cầu:

- Máy hiện đang cài các OS X 10.8 trở lên, dưới 10.8 không được hỗ trợ.
- Nếu đang dùng 10.11 El Capitan, rootless=1 là bắt buộc phải có trong boot-args.
- Nếu đang dùng 10.10.X Yosemite, kext-dev-mode=1 là bắt buộc phải có trong boot-args.

Cài đặt Kext:

- Tải về file audio_realtekALC-110.command (chọn View Raw để down)
- Giải nén và click đúp chuột vào file >> nhập password.
- Xác nhận tên codec ALC XXX (chỉ áp dụng cho các codec 885, 887, 888, 889, 892, 898, 1150).
- Xác nhận có bật audio HDMI cho card HD4600 hay không: gõ Y (Yes) hoặc N (No).
- Kiểm tra lại trong System\Libaray\Extensions xem kext đã được patch hay chưa.
- Khởi động lại và kiểm tra tình trạng các input/output.

-----------------------------------------------------------------------------------------------
III. Kiểm tra tình trạng kext sau cài đặt
Việc đầu tiên sau khi cài đặt là các bạn khởi động lại máy. Sau khi khởi động lại, sẽ xảy ra một trong hai trường hợp sau:
- Máy có âm thanh: nếu như vậy thì có thể nói là bạn đã thành công phần nào. Tiếp sau đó, bạn vào System Preferences/Sound và kiểm tra tình trạng nhận các thiết bị trong thẻ Input và Output.



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~THE END~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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)