Lever 5: Hướng dẫn Patch DSDT cho máy Hackintosh:
Tôi có thể dùng DSDT của máy khác không (đỡ phải patch)?
Câu trả lời là có nhưng chỉ với những máy có cùng chung mainboard. Thường thì không khuyến cáo sử dụng DSDT của máy khác vì bản thân mỗi máy ACPI có thể hơi khác nhau nên có thể sinh ra một số bug làm cho máy chạy không ổn định. Nếu không lười hãy tự tạo DSDT cho riêng mình và sử dụng!Làm sao để lấy được file DSDT của máy mình?
DSDT có thể dump được từ Windows, Mac hay Linux; nhưng thuận lợi và nhanh chóng nhất ta nên tận dụng chức năng này của CloverỞ các phiên bản mới gần đây của Clover có nhiều cải tiến khá thú vị như "test DSDT patching with F5". Cơ bản thì chức năng này giúp patch DSDT tự động, mình đã thử và nhận thấy tính năng này khá hay. Nếu nó hoàn thiện thì các công đoạn patch DSDT của các bạn sẽ đỡ cực hơn rất nhiều.
Cách dùng chức năng Auto Patch DSDT của Clover
Luôn cập nhật Clover phiên bản mới nhất cho máy khi sử dụng tính năng này vì nó vẫn ở giai đoạn beta. Trước khi nhấn F5 ở ngoài màn hình boot của Clover, bạn vào Option để thêm những gói patch bạn muốn cho máy bạn (có thể thử nhiều lần để tìm cái nào tối ưu nhất cho máy bạn)
Sau khi nhấn F5, bạn vào Mac OS truy cập vào thư mục Origin như ở hình phía trên, đặt lại tên DSDT*.aml lại thành DSDT.aml và ném vào thư mục Patched để kiểm tra xem nó có hoạt động tốt với máy bạn hay không. Nếu có thành phần nào chưa ổn thì dịch ngược lại thành file DSDT.dsl để fix tiếp và lưu thành DSDT.aml để sử dụng như hướng dẫn bên dưới
-----------------------------
DSDT dump trên Clover của máy mình gần như không phải patch thêm gì nhiều, xong nó lại gặp một lỗi là không fix được tăng giảm độ sáng màn hình bằng các gói patch trong kho patch của RehabMan??? Vì vậy DSDT mình đang dùng là bản dump từ linux!
Cách dump DSDT từ linux:
Khởi động vào Ubuntu hoặc chạy Ubuntu live trên USB. Bật Terminal và Copy/Paste rồi Enter từng lệnh sau:
cd ~/Desktop
sudo apt-get update
sudo apt-get install acpidump
sudo acpidump -b -t DSDT -o dsdt.aml
Sau đó vào thư mục home của linux để lấy DSDT.aml và lưu trữ lại để thực hiện công đoạn tiếp theoCó DSDT rồi giờ ta làm gì?
DSDT khi được dump sẽ có đuôi *.aml nhưng khi patch ta cần biên dịch nó về đuôi *.dsl (Sau khi patch xong ta lại lưu về *.aml để sử dụng)Copy các file DSDT, SSDT đã dump ở trên vào một folder tên là Patch đặt ngoài Desktop sau đó mở terminal và Copy/Paste/Enter các lệnh sau:
cd ~/Desktop/Patch
iasl -da -dl *.aml
Hoặc thử lệnh này (cái nào sau khi dịch ngược mà nhấn compile ít lỗi hơn thì dùng cái đó)
cd ~/Desktop/Patch
iasl -e *.aml -d *.aml
Lưu ý: thư mục Patch chỉ chứa DSDT và các file SSDT, không được để cùng các file nào khác
Tất cả các file đuôi *.aml sẽ được nhân bản thành các file cùng tên với đuôi *.dsl ta bắt đầu làm việc với các file này. Click đúp vào file dsdt.dsl (mặc định sẽ được mở bằng MacIASL) và làm theo hình:
Thiết lập MacIASL về ACPI 5.0
Cách thêm kho patch online vào MacIASL:
Kho Patch Online hữu ích:
- Rehabman DSDT Patches:
http://raw.github.com/RehabMan/Laptop-DSDT-Patch/master - HP Probook patch:
http://raw.github.com/RehabMan/HP-ProBook-4x30s-DSDT-Patch/master - PCbeta dxxs dsdt Patches:
http://raw.github.com/Yuki-Judai/dxxs-DSDT-Patch/master - MacMan Gigabyte:
http://www.tonymac86.com/DSDT/ - Toleda Audio HDMI HD4600/Haswell/8 Series:
http://raw.github.com/toleda/audio_hdmi_8series/master - Toleda Airport PCle Half Mini:
http://raw.github.com/toleda/audio_ALCInjection/master - Toleda Audio Realtek ALC injection
http://raw.github.com/toleda/audio_ALCInjection/master - Toleda Audio HDMI UEFI Audio dsdt edits - Desktop/Laptop/Intel NUC
http://raw.github.com/toleda/audio_hdmi_uefi/master - Toleda Audio HDMI HD4000/Ivy Bridge/7 Series
http://raw.github.com/toleda/audio_hdmi_hd4000/master - Toleda Audio HDMI HD3000/Sandy Bridge/6 Series
http://raw.github.com/toleda/audio_hdmi_hd3000/master - Toleda Audio HDMI 5 Series
http://raw.github.com/toleda/audio_hdmi_5series/master
Ngoài ra còn kho patch khác khá hữu ích là PJALM's DSDT Patches (nguồn)
- ASUS: All-in-one patches for ASUS motherboards
http://maciasl.sourceforge.net/pjalm/asus/ - MSI: All-in-one patches for MSI motherboards
http://maciasl.sourceforge.net/pjalm/msi/ - Zotac: All-in-one patches for Zotac motherboards
http://maciasl.sourceforge.net/pjalm/zotac/ - Gigabyte: All-in-one patches for Gigabyte motherboards
http://maciasl.sourceforge.net/pjalm/gigabyte/ - ASRock: All-in-one patches for ASRock motherboards
http://maciasl.sourceforge.net/pjalm/asrock/ - Graphics: Patches for Intel HD and AMD/nVidia graphic cards
http://maciasl.sourceforge.net/pjalm/graphics/ - Intel Series 6: Intel Series 6 Patches for SATA, USB, SMBUS, IGPU, GbE and general fixes
http://maciasl.sourceforge.net/pjalm/intel6/ - Intel Series 7: Intel Series 7 Patches for SATA, USB, SMBUS, IGPU, GbE and general fixes
http://maciasl.sourceforge.net/pjalm/intel7/ - Intel Series 8: Intel Series 8 Patches for SATA, USB and general fixes
http://maciasl.sourceforge.net/pjalm/intel8/ - Intel Series 9: Intel Series 9 Patches for SATA, USB and general fixes
http://maciasl.sourceforge.net/pjalm/intel9/ - General: General patches for Shutdown, HDEF, USB3, SATA and LAN
http://maciasl.sourceforge.net/pjalm/general/
Làm quen một chút đến giao diện của công cụ MacIASL
Khu vực 1: Chứa các gói patch được tác giả liên tục cập nhật trên server, khi click đúp vào gói lập tức các code trong gói patch sẽ xuất hiện tại khu vực 2
Khu vực 2: Hiển thị nội dung của gói patch
Khu vực 3: Hiện thị sự thay đổi khi áp dụng gói patch trên máy bạn (nhấn Apply để hoàn tất)
Cách thêm kho Patch Offline:
Thường có một vấn đề khá nhỏ nhưng hơi phiền phức của hầu hết mọi người khi cài xong mac OS là máy không có wifi cũng đồng nghĩa với không có internet (trừ khi bạn dùng mạng dây). Vậy sao không thể sử dụng kho patch online được!? May mắn là anh Pokenguyen đã có dự phòng trường hợp này. Sau khi bạn cài MacIASL trong kho tool của HVT trên Desktop sẽ có thư mục chứa các gói patch Offline của RehabMan tên là DSDT PatchesBạn chỉ cần tìm đến file *.txt chứa code cần patch cho máy bạn:
Giới thiệu chi tiết về kho patch của RehabMan
RahabMan là một Moderator của tonymacx86.com rất nổi tiếng trong cộng đồng hackintosh với nhiều bài viết chất lượng. Thông qua việc support nhiệt tình cho member và tham gia các dự án khác nhau. Anh đã và đang xây dựng một kho patch tự động giúp ích rất nhiều cho cộng đồng.Trong gói patch của RehabMan bao gồm 2 phần:
Patch cơ bản:
- Various Syntax Error Fixes: được bắt đầu bằng ký hiệu [syn]. Công dụng của nó là fix các lỗi phổ biến của DSDT/SSDT sau khi biên dịch để có được bản DSDT/SSDT sạch trước khi patch. Hoặc dùng để sửa lỗi sau khi patch.
- System Patches: được bắt đầu bằng ký hiệu [sys]. Là các gói patch giúp fix lỗi cơ bản của một máy hackintosh (lỗi này thường phổ biến trên hầu hết các máy). Thí dụ như:
Nếu như chíp máy bạn đang dùng là Haswell CPU/8-series nên sử dụng gói patch Haswell LPC để giúp Mac OS có thể load được AppleLPC.kext - USB (ECHI) Patches: được bắt đầu bằng ký hiệu [usb]
Nếu bạn sử dụng kext của USB 3.0 trong công cụ HVT do pokenguyen tổng hợp thì bạn không được sử dụng gói [usb] 7-series USB3 Multiplex. Bạn chỉ dùng gói patch này khi dùng kext gốc của Mac là AppleUSBXHCI.kext. Thường khá ít máy có thể áp dụng gói patch này ví dụ như Lenovo u310/u410.
[usb] 6-series USB và [usb] 7-series/8-series USB được sử dụng rộng rãi cho hầu hết các máy, patch này sử dụng kèm với GenericUSBXCHI.kext trong gói HVT của pokenguyen. Tùy cấu hình máy mà bạn chọn cho đúng. Ví dụ như các dòng chip từ Ivy trở về sau đều sử dụng [usb] 7-series/8-series USB
Nếu sử dụng Yosemite bạn nên dùng GenericUSBXHCI.kext riêng cho phiên bản hệ điều hành này, ngoài ra bạn cần phải thêm lệnh -gux_defer_usb2 trên kernel flag của Clover (việc này bạn có thể làm thông qua chỉnh sửa config.plist)
- Audio: có duy nhất 1 gói patch là [audio] Audio Layout 12. Luôn sử dụng kèm theo [sys] IRQ Fix khi sử dụng patch này. Tùy khi cài kext AppleHDA nó yêu cầu áp dụng Layout nào thì bạn thay đổi số 12 thành số tương ứng mà nó yêu cầu (đa số các máy đều dùng layout 12)
- Battery Patches: gói patch giúp nhận đúng phần trăm của pin được bắt đầu bằng ký hiệu [bat]. Có thể một số máy không cần patch pin máy vẫn có thể nhận được. Đây là gói patch tùy chọn (không bắt buộc)
- Intel Graphics Patches: gói patch giúp máy nhận đúng card onboard (full QE/CI) và fix thanh tăng giảm độ sáng được mượt mà. Được bắt đầu bằng ký hiệu [igpu]
- Disable Nvidia/Radeon: gói patch giúp tắt card rời, sử dụng card onboard để máy tiêu thụ điện năng và giúp máy mát hơn. Được bắt đầu bằng ký hiệu [gfx0]. Thường khuyên nên disable card rời thông qua SSDT
- Fan control/temperature/LID status Patches: gói patch giúp điều khiển quạt để quản lý nhiệt độ của máy. Được bắt đầu bằng ký hiệu [misc]
- Luôn áp dụng Patch DTGP: DTGP là thành phần của Method _DSM dùng để nhận diện phần cứng của Mac OS. Thường thì DSDT gốc đã có chứa Method này nhưng ta cần remove hết nó rồi áp dụng Menthod DTGP mới đã chỉnh sửa. Patch này có sẵn trong kho Patch online của MacIASL.
Luôn backup file DSDT trước khi tiến hành patch
Làm việc với mấy dòng code không phải lúc nào bạn cũng có thể chắc chắn không có lỗi xảy ra cả, luôn copy dự phòng DSDT là một cách hiệu quả và đừng coi thường việc này vì nó có thể khiến bạn mất thời gian vô ích.Bạn nên giữ lại DSDT.dsl đã lưu lại thiết lập sau khi đã fix hết lỗi và một bản sao của nó sau khi patch thành công để sau này cần patch thêm ta patch tiếp từ bản sao này và lưu về DSDT.aml để sử dụng.
Check lỗi của DSDT/SSDT bằng MacIASL:
Khi check lỗi sẽ hiện ra bảng Compiler Summary khi click vào từng dòng thông báo lỗi nó sẽ chỉ cho bạn đến vị trí lỗi.Sửa lỗi của DSDT/SSDT sau khi biên dịch
Khi gặp thông báo lỗi với newbie thì câu hỏi trong đầu luôn là: "fix nó thế nào?" Thật nực cười nhưng hãy tận dụng anh Google. Bạn chọn vào dòng thông báo lỗi trên bảng Compiler Summary nhấn tổ hợp phím Alt + C để sao chép tên lỗi và tìm nó với cụm từHow to fix ...
Để phạm vi tìm kiếm cho nhiều kết quả bạn nên chỉ giữ lại tên thông báo chính bỏ hết các nội dung miêu tả vị trí hay mở ngoặc đóng ngoặc, thí dụ đối với máy mình
How to fix ResoureTag larger than Field
Fix mấy thứ linh tinh liên quan đến code luôn đòi hỏi kiên nhẫn, nhiều lúc phải thử nhiều cách mới tìm ra cái nào là tối ưu nhất, nên nói patch DSDT khó là khó ở chỗ này. Các cảnh báo Errors phải được sửa hết trước khi patch DSDT còn Warnings bạn có thể fix sau cũng không sao
Một số quy tắc:
- Luôn sử dụng các patch Various Syntax Error Fixes của RehabMan để fix DSDT/SSDT trước. Những lỗi còn sót lại tiếp tục khắc phục bằng tay!
- Lời khuyên nên remove tất cả _DSM methods (của DSDT và SSDT) trước khi áp dụng các gói patch
Fix Errors và Warnings (DSDT) của một số trường hợp
Warning Result is not used, possible operator timeout will be missed Trước khi fix | Sau khi fix |
---|---|
Acquire (MUT0, 0x0FFF) | Acquire (MUT0, 0xFFFF) |
Warning Not all control paths return a value (_DSM) hay Warning Reserved method must return a value (Integer/String/Buffer/Package/Reference required for _DSM) ta sửa bằng cách thêm lệnh Return (zero) trước dấu "}" cuối cùng của một method
Trước khi fix | Sau khi fix |
---|---|
Method (_DSM, 4, Serialized) { Name (DRET, Buffer (0x04) { ........... } } | Method (_DSM, 4, Serialized) { Name (DRET, Buffer (0x04) { ........... } Return (Zero) } |
Warning Not all control paths return a value (_HID) hay Warning Reserved method must return a value (Integer/String required for _HID).
Trước khi fix | Sau khi fix |
---|---|
Method (_HID, 0, NotSerialized) { If (TCMF) {} Else { Return (0x310CD041) } } | Method (_HID, 0, NotSerialized) { If (TCMF) { Return (Zero) } Else { Return (0x310CD041) } } |
Một số lỗi khi gặp thông báo lỗi thí dụ như cảnh báo về return ta click vào nó để biết vị trí, tiến hành xóa nó sẽ fix được lỗi.
Ngoài ra nếu gặp cảnh báo Warning như Dell Vostro 3560 của mình thì fix như phía dưới
Patch DSDT sau khi DSDT đã fix sạch errors và warning
Làm sao biết được cái nào cần để patch? Đó là câu hỏi chung của newbieCâu trả lời là: xem máy bạn thiếu chức năng gì hoặc chức năng gì chưa hoạt động tốt thì patch cái đó
Thực ra trong gói patch của RehabMan đã chứa đầy đủ những thành phần quan trọng cần cho một máy hackintosh, ta chỉ việc chọn cho đúng. Nếu lười tìm hiểu chức năng của từng patch thì cứ áp dụng các gói patch từ trên xuống của RehabMan, cái nào không có cho máy bạn ta ghi nhớ nó và khắc phục sau bằng cách sử dụng các kho Patch khác hoặc những cách Patch khác dành riêng cho máy bạn được share trên diễn đàn.
Trước khi áp dụng gói patch nào bạn nên đọc miêu tả của nó xem dùng khi nào, cho máy nào...? Nếu không rõ thì cứ thử patch và compile (miễn sao khi bỏ vào clover không gây lỗi cho máy là được)
Tôi muốn patch cho âm thanh, màn hình... vậy sao xác định được vị trí của nó trong đống code của DSDT?
DSDT lưu lại địa chỉ của phần cứng nên việc của ta là xác định đúng tên gì dành cho phần cứng gì. Dưới đây là bảng danh sách tên phần cứng thường gặp trên DSDT:
Tên phần cứng
|
Tên thường gặp trên DSDT
|
---|---|
PCI Bus (hay PCI Root) | PCI0 |
ACPI Lid | LID0 |
ACPI Power Button | PWRB |
ACPI Sleep Button | SLPB |
AC Adapter | ADP1 |
Battery | BAT0 |
Backlight panel | PNLF |
SMC Control | SMC |
Embedded Controller | EC |
HPET (High precision event timer) | HPET |
RTC (Real time clock) | RTC |
PIC (Programmable Interrupt Controller) | IPIC |
TMR (System Timer) | TIMR |
DMA (Direct memory access controller) | DMAC |
Numeric data processor | MATH |
Firmware Hub Device | FWHD |
LPC (Low pin count) | LPCB |
PCI Express Root Port x | RP0x |
SMBUS Controller | SBUS |
High Definition Audio Controller | HDEF |
HDMI Audio Controller | HDAU |
SATA AHCI Controller | SATA |
Integrated Graphics | IGPU |
Discrete Graphics | GFX0 |
PCI Bridge | PCIB |
Display Output | DDxx |
USB UHCI/EHCI | UHCx, EHCx |
Một vài ví dụ patch DSDT
Các path DSDT trong gói patch của RehabMan đã được chuyển về dạng code tự động, nghĩa là bạn chỉ cần copy/paste nó vào khu vực 2 của tool MacIASL khi nhấn nút patch (đã giới thiệu phía trên) là nó sẽ tự động dò tìm đến địa chỉ của thiết bị và patch nó. Thường thì các patch được chia sẻ trên diễn đàn là các patch thuần nên ta cần dò nó qua khung search trên MacIASL và dán nó trực tiếp vào khu vực code
- PWRB, SLPB: Khi ta nhấn nút nguồn trên máy Mac sẽ xuất hiện bảng shut down, restart hay sleep nhưng một số máy nút này không có tác dụng, cách fix sẽ là:
Bước 1: Thay HID thành CID trong Device (PWRB)Trước khi fix Sau khi fix Device (PWRB)
{
Name (_HID, EisaId ("PNP0C0C"))
Method (_STA, 0, NotSerialized)
{
Return (0x0B)
}
}Device (PWRB)
{
Name (_CID, EisaId ("PNP0C0C"))
Method (_STA, 0, NotSerialized)
{
Return (0x0B)
}
}
Bước 2: Thêm Device (SLPB) vào sau Device (PWRB)Trước khi fix Sau khi fix Device (PWRB)
{
...
}Device (PWRB)
{
...
}
Device (SLPB)
{
Name (_HID, EisaId ("PNP0C0E"))
Name (_STA, 0x0B)
} - HPET: Nguyên nhân gây lỗi không nhận HPET dẫn đến Kernel Panic khi load AppleIntelCPUPowerManagement.kext là do lỗi giá trị của _STA (Status) và _CRS (Current Resource Settings). Lỗi này đã có code fix tự động trong kho patch của RehabMan ( [sys] HPET fix )
- RTC: Lỗi RTC hay gặp trên các mainboard Gigabyte, cụ thể là khi boot vào Mac OS, AppleRTC.kext khi xử lí dữ liệu RTC sẽ gây lỗi cho CMOS, dẫn đến khi khởi động lại sẽ Reset CMOS. Lỗi này đã có code fix tự động trong kho patch của RehabMan ( [sys] RTC fix )
- PIC, TMR: trong một số trường hợp fix PIC, TMR sẽ giúp màn hình tự giảm độ sáng khi chuyển sang dùng pin hoặc ở trạng thái nghỉ, cách fix:
Bước 1: Xóa IRQNoFlags trong IPIC và TIMR
Bước 2: Sửa method _CRS của TIMR để luôn trả về giá trị ATT6 (tương tự fix HPET)Trước khi fix Sau khi fix Device (PIC)
{
Name (_HID, EisaId ("PNP0000"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0020, // Range Minimum
0x0020, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00A0, // Range Minimum
0x00A0, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IRQNoFlags ()
{2}
})
}Device (PIC)
{
Name (_HID, EisaId ("PNP0000"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0020, // Range Minimum
0x0020, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00A0, // Range Minimum
0x00A0, // Range Maximum
0x01, // Alignment
0x02, // Length
)
/* Xoa IRQNoFlags */
})
}Device (TMR)
{
Name (_HID, EisaId ("PNP0100"))
Name (ATT5, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x00, // Alignment
0x04, // Length
)
IRQNoFlags ()
{0}
})
Name (ATT6, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x00, // Alignment
0x04, // Length
)
})
Method (_CRS, 0, NotSerialized)
{
If (LGreaterEqual (OSFX, 0x03))
{
If (HPTF)
{
Return (ATT6)
}
Else
{
Return (ATT5)
}
}
Else
{
Return (ATT5)
}
}
}Device (TMR)
{
Name (_HID, EisaId ("PNP0100"))
Name (ATT5, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x00, // Alignment
0x04, // Length
)
/* Xoa IRQNoFlags */
})
Name (ATT6, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x00, // Alignment
0x04, // Length
)
})
Method (_CRS, 0, NotSerialized)
{
Return (ATT6)
}
} - Backlight: Fix backlight sẽ giúp Mac OS điều khiển được độ sáng màn hình (thay đổi độ sáng trong System Preferences / Display). Thực hiện fix bằng cách thêm Device (PNLF) vào Scope (_SB) (có thể thêm sau Device (PWRB)). Fix này đã có ở trong kho patch của RehabMan
- Adapter: Fix này giúp AppleACPIACAdapter nhận diện được bộ sạc laptop (AC adapter), tức là Mac OS sẽ biết được rằng bạn có cắm bộ sạc hay không. Fix này không thật sự cần thiết khi xài VoodooBattery.kext vì VoodooBattery.kext có thể nhận bộ sạc. Fix này đã có ở trong kho patch của RehabMan ( [sys] AC Adapter fix )
- LPC: LPC là bộ phận trong Chipset có nhiệm vụ quản lí năng lượng của các Device trong máy tính, trong đó có CPU. Việc nhận LPC sẽ giúp Mac OS quản lí năng lượng tốt hơn, đặc biệt là quản lí C-State của CPU cho phép CPU chuyển về các trạng thái thấp năng lượng (và cũng góp phần giảm nhiệt độ của CPU)
AppleLPC.kext là kext nhận LPC trong Mac OS. Tuy nhiên kext này không hỗ trợ hết các chip LPC mà chỉ hỗ trợ một số lượng hữu hạn LPC tương ứng với các dòng Chipset mà máy Mac sử dụng. Lỗi này thường gặp trên hệ thống sử dụng chip Haswell
Fix này đã có ở trong kho patch của RehabMan ( [sys] Haswell LPC ) - SATA: Một số máy gặp tình trạng các port SATA bị nhận nhầm thành External (Gắn ngoài) thay vì Internal (Gắn trong), dẫn đến các phân vùng của ổ cứng gắn trong hiện biểu tượng màu vàng cam của ổ cứng gắn ngoài
Fix lỗi này bằng cách inject device-id SATA vào DSDT và đổi tên các Device tương ứng với các port SATA theo chuẩn DSDT của Mac, dẫn đến các port được nhận là Internal - HDEF: Đây là patch cho âm thanh, gói patch này đã có trên kho patch của RehabMan
- SMBUS: SMBUS (System Management Bus) là một kênh truyền tốc độ thấp dùng để truyền các thông tin cơ bản (thông tin thiết bị, trạng thái, các chỉ lệnh, lỗi, ...) từ bo mạch chủ tới các thiết bị. Thực hiện fix SMBUS giúp AppleSMBUS nhận và điều khiển được SMBUS Controller. Gói fix này đã có trong kho patch của RegabMan ( [sys] SMBUS fix )
Đây là danh sách các patch cơ bản dành cho hầu hết các máy
[Sys] Fix _WAK Arg0 v2
[Sys] HPET Fix
[Sys] SMBUS Fix
[Sys] IRQ Fix
[Sys] RTC Fix
[Sys] OS Check Fix
[Sys] Fix Mutex with non-zero SyncLevel
[Sys] Fix PNOT/PPNT
[Sys] Add IMEI
Đây là những gói patch mình áp dụng lên DSDT của Dell Vostro 3560
[Audio] Audio Layout 12
[Igpu] Brightness fix (HD3000/HD4000)
[Igpu] HD4000 High Resolution
[Igpu] Rename GFX0 to IGPU
[Misc] Poll for LID changes
[Misc] remove _PRW from LID
[Sys] Fix TNOT Error
[Sys] AC Adapter Fix
[Sys] Add IMEI
[Sys] Add MCHC
[Sys] Fix Mutex with non-zero SyncLevel
[Sys] Fix PNOT/PPNT
[Sys] HPET fix
[Sys] IRQ fix
[Sys] OS check fix (windows 8)
[Sys] Shutdown Fix 2
[Sys] SMBUS fix
[usb] 7-series/8-series USB
[usb] USB3 _PRW(0x0D) and rename XHC to XHC1
Lưu DSDT về đuôi *.aml, tiến hành xác định và patch SSDT để hoàn thiện
Đôi chút về chức năng của SSDT
Nói một cách đơn giản thì SSDT là các bảng đặc tả hệ thống phụ cho DSDT, mô tả một số thiết bị phụ giúp hãng sản xuất phần cứng dễ quản lý và cập nhật thiết bị. Không như DSDT có rất nhiều khoá, trái lại SSDT có khá ít nên ta dễ dàng xác định được nó đang miêu tả về thành phần gì
Tên Scope | Ý nghĩa |
---|---|
_SB (System Bus) | Scope chính, chứa tất cả các Device trong hệ thống |
PTID | Thường thì vô dụng đối với Mac. Nó liên quan đến tốc độ quạt, nhiệt độ hay system status |
_PR (Processor) | Chứa các Processor (nhân CPU) và các method liên quan đến Processor (như _PSS, _CST, ...) |
_GPE (General Purpose Events) | Chứa các method GPE dùng để quản lí các event của hệ thống |
_TZ (Thermal Zone) | Chứa các ThermalZone |
PCI0.GFX0 hoặc PCI0.VID | Quản lý Intel HD |
PEGP hoặc DGFX, ... | Quản lý đồ họa rời |
Trên máy mình có 7 cái SSDT thông qua tên khóa mình xác định được SSDT nào đang mô tả thiết bị nào
Lưu ý: Nếu bạn đang sử dụng hệ thống máy tính sử dụng các dòng Core i của SandyBridge/IvyBridge/Haswell hay Xeon thì bạn nên sử dụng SSDTPrgen để tạo ra SSDT.aml giúp quản lý CPU thay vì dùng các SSDT gốc. 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. (đồng nghĩa với việc ta loại tất cả các SSDT quản lý CPU ở phía trên - như máy mình thì chỉ giữ lại SSDT1 và SSDT4). SSDT quản lý CPU là nhân tố để máy có Speedstep - Speedstep không cần phải nhiều hay trải dài từng step một, chỉ cần khi kiểm tra máy bạn có khoảng 5 cái trở lên là ổn.
Cách tắt card rời Nvidia/Radeon:
Bản thân Mac OS không hỗ trợ các thiết bị phần cứng không phải của Mac nên có patch giúp máy nhận được card rời thì nó cũng không thể phát huy được hết sức mạnh của mình do thiếu phần mềm đi theo để tối ưu hiệu suất. Ta nên tắt nó, chỉ cần tận dụng card onboard sẽ giúp máy tiêu thụ ít điện năng hơn và mát hơn. Bạn có thể tắt nó ở DSDT hoặc SSDTĐối với DSDT:
Ta tiến hành backup DSDT đã patch trước đó. Bản DSDT yêu cầu trước đó phải rename trước để tránh lỗi khi patch
ban đầu ta sử dụng gói patch này trước:
[gfx0] Disable from _REG (DSDT)
Sau khi patch ta thử dùng nó, nếu trong quá trình shutting down hay restarting có xuất hiện lỗi thì bạn dùng lại bản DSDT backup từ trước và tiến hành patch gói này để sử dụng:
[gfx0] Disable/Enable on _WAK/_PTS (DSDT)
Đối với SSDT:
Tiến hành rename thiết bị, fix hết các lỗi liên quan tương tự DSDT. Sau đó áp dụng 2 gói patch dành cho SSDT:
[gfx0] Cleanup/Fix Errors (SSDT)
[gfx0] Disable from _INI (SSDT)
Đối với các SSDT còn lại
Fix hết lỗi và gom cùng DSDT bỏ vào Clover theo đúng đường dẫn, các SSDT cần được đặt tên theo thứ tự SSDT.aml, SSDT-1.aml, SSDT-2.aml,...Làm gì khi không thể vào Mac OS được do đặt DSDT (patch sai) vào Clover?
Một số trường hợp, do vô ý đặt DSDT & SSDT patch còn lỗi vào Clover, hay thử nghiệm cách patch mới khiến máy không thể khởi động được vào Mac OS. Cách khắc phục là ta truy cập vào phân vùng EFI để xóa DSDT & SSDT (bị lỗi), rồi lại boot vào Mac OS để tiến hành fix lại.Trên Windows:
Chạy Command Prompt (Admin) - Copy/ Paste từng lệnh và Enter
Code | Miêu tả |
---|---|
Diskpart | Khởi chạy tiện ích Diskpart |
List Disk | Khởi tạo danh sách ổ cứng trên máy bạn |
Select Disk 0 | Chọn ổ cứng (thông thường máy chỉ có 1 ổ thì oánh số 0) |
List Partition | Khởi tạo danh sách phân vùng trên ổ cứng |
Select partition 1 | Chọn phân vùng EFI (thường nằm đầu tiên nên chọn số 1) |
Assign letter=Z | Đặt tên cho phân vùng EFI |
Exit | Thoát Diskpart |
Taskkill /im explorer.exe /f | Tắt Explorer |
Explorer.exe | Khởi động lại Explorer |
Trên WinPE (mini Windows):
Trên WinPE thì đơn giản hơn, bạn chỉ cần dùng tool phân vùng để đặt tên cho phân vùng EFI là có thể truy cập ngay vào phân vùng này
Hiện tại để boot ở chế độ EFI thì có 2 bản cứu hộ này đáng để sử dụng là gói MiniWin8 của anhdv và bản cứu hộ DLC của tranduylinh
Cơ bản việc cài Mac OS đến đây đã hoàn thành. Sau khi khởi động lại máy bạn sẽ nhận thấy được được sự khác biệt khá lớn, nhưng đã là người chơi hackintosh bạn cần test nó xem sau những công sức mình bỏ ra nó có hoạt động đúng như mình mong muốn không, đã ổn định và full tính năng như một máy Mac thật chưa? Cần tối ưu những gì để tiếp tục hoàn thiện?
To be continued....!
Sign up here with your email
ConversionConversion EmoticonEmoticon