Code:
Hackintosh for you Sài Gòn Cafe Hào 148 Nguyễn Công Trứ-Q1- TP.HCM-> Hoàng 0909455847 Ngoài Bắc 92 Lê Thanh Nghị -Q Hai Bà Trưng- TP.Hà Nội-> Hoàng 0984230489
Lâu rồi không viết bài cho anh em, nay mình chỉ tổng hợp kinh nghiệm về phần này cho anh em thôi… PS: mà ai cũng nói bài của mình viết toàn khó hiểu……

. Vào đề luôn để đỡ mất thời gian, mod cho xin 4 slot….

- Speedtep: khỏi giới thiệu nó là gì? Chỉ một câu hỏi đơn giản là làm sao để hiệu suất hoạt động bên Mac OS "như bên Win"? Máy PC và Laptop sinh ra là để cho Win hoạt động tối ưu nên tất cả các thành phần đã dc đồng bộ, các nhà sản xuất cũng đã tích hợp các thành phần để toàn bộ hệ thống hoạt động tốt trên Windows. CHúng ta cài Mac OS là "ép" cho nó chạy nên tất nhiên sẽ ko tránh khỏi các vấn đề lỗi trong lúc hoạt động. Gặp trường hợp nhiều bạn hay hỏi mình tại sao Mac OS dùng tốn pin hơn? đơn giản là các thành phần của máy chúng ta chưa dc fix tối ưu nhất để Mac hoạt động.
- Speedtep bên Mac OS các bạn cần biết những gì? Vâng đó là Patch DSDT, SSDT, và kext CPU của Mac, mình sẽ nói rõ ra từng đời CPU sẽ cần những gì. À quên trước khi Sleep dc các bạn cần phải Speedtep trước đã.

+ Core 2 Dual: Patch DSDT + Smbios là đủ
+ Core i gen 1 ( 3 số như i3 350, ị 560, i7 720…+ ỉ, ị máy bàn): Patch DSDT+ SMbios ko cần SSDT.
+ Core i gen 2 ( 4 số như i3 2330M, i5 2430M…, i máy bàn như i7 2600, vv.vv) Patch DSDT+smbios+SSDT+ patch kext cpu.
+ Core i gen 3 (4 số nhưng mã là 3 đầu như ị 3317…+ máy bàn như 3770K….) Patch DSDT+smbios+SSDT+ patch kext cpu.
+ Xeon tương tự như các dòng….
- Patch DSDT enable Speedtep, những thành phần cơ bản:
Những thành phần cần patch để có thể enabler Speedtep là: HPET, SMBUS, LPC. Code 3 thành phần này trong bất kì DSDT nào cũng có, nếu ko có thì chúng ta thêm vào, chỉ khác số ID giả lập thôi nhé.
I- PATCH DSDT:
- Công cụ dùng: mình quen dùng DSDTSE để patch hơn, chắc do già rồi…..
1) Hack code DTGP
Đầu tiên để patch DSDT các bạn phải hack code DTGP, cái này là bắt buộc phải có:
Mở DSDTSE chọn Extract bên mục Locate xổ xuống chọn _WAK sẽ thấy:
Code:
Method (_WAK, 1, Serialized) { WAK (Arg0) Return (Package (0x02) { Zero, Zero }) }
Enter cái menthod xuống 2 dòng, nhìn qua bên trái chỗ DSDT hacks: chọn method DTGP, mở ra copy:
Code:
Method (DTGP, 5, NotSerialized) { If (LEqual (Arg0, Buffer (0x10) { /* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, /* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B })) { If (LEqual (Arg1, One)) { If (LEqual (Arg2, Zero)) { Store (Buffer (One) { 0x03 }, Arg4) Return (One) } If (LEqual (Arg2, One)) { Return (One) } } } Store (Buffer (One) { 0x00 }, Arg4) Return (Zero) }
Copy vào, giống vậy nè:
Code:
Method (DTGP, 5, NotSerialized) { If (LEqual (Arg0, Buffer (0x10) { /* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, /* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B })) { If (LEqual (Arg1, One)) { If (LEqual (Arg2, Zero)) { Store (Buffer (One) { 0x03 }, Arg4) Return (One) } If (LEqual (Arg2, One)) { Return (One) } } } Store (Buffer (One) { 0x00 }, Arg4) Return (Zero) } Method (_WAK, 1, Serialized) { WAK (Arg0) Return (Package (0x02) { Zero, Zero }) }
Sau đó complie lại, xong bước cơ bản nhất...
2) Enable HPET:
Mở DSDTSE chọn Extract bên mục Locate xổ xuống chọn HPET sẽ thấy:
Code:
Device (HPET) { Name (_HID, EisaId ("PNP0103")) Name (_UID, Zero) Name (BUF0, ResourceTemplate () { Memory32Fixed (ReadWrite, 0xFED00000, // Address Base 0x00000400, // Address Length ) })
Thêm vào đoạn code sau:
Code:
Device (HPET) { Name (_HID, EisaId ("PNP0103")) Name (_UID, Zero) Name (BUF0, ResourceTemplate () { IRQNoFlags () {0} IRQNoFlags () {8} IRQNoFlags () {11} IRQNoFlags () {15} Memory32Fixed (ReadWrite, 0xFED00000, // Address Base 0x00000400, // Address Length ) })
Code này chung cho tất cả các dòng máy nhé….
![[IMG]](http://farm4.staticflickr.com/3799/9241649028_c9f83741d3_o.png)
Screen Shot 2013-07-08 at 11.37.01 PM
by
hoang_555
, on Flickr
Complie lại, xong một phần.
3) Patch SBUS:
CHỗ Locate chọn Device (SBUS), sẽ thấy:
Code:
Device (SBUS) { Name (_ADR, 0x001F0003) OperationRegion (SMBP, PCI_Config, 0x40, 0xC0) Field (SMBP, DWordAcc, NoLock, Preserve) { , 2, I2CE, 1 } ……...
Thêm vào:
Code:
Device (BUS0) { Name (_CID, "smbus") Name (_ADR, Zero) Device (DVL0) { Name (_ADR, 0x57) Name (_CID, "diagsvault") Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "address", 0x57 }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } }
Thành như sau:
Code:
Device (SBUS) { Name (_ADR, 0x001F0003) Device (BUS0) { Name (_CID, "smbus") Name (_ADR, Zero) Device (DVL0) { Name (_ADR, 0x57) Name (_CID, "diagsvault") Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "address", 0x57 }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } } OperationRegion (SMBP, PCI_Config, 0x40, 0xC0) Field (SMBP, DWordAcc, NoLock, Preserve) { , 2, I2CE, 1 } ….
Hình minh hoạ:
![[IMG]](http://farm3.staticflickr.com/2870/9241712954_aea02fc66d_o.png)
Screen Shot 2013-07-08 at 11.54.38 PM
by
hoang_555
, on Flickr
![[IMG]](http://farm4.staticflickr.com/3711/9238949231_c854852878_o.png)
Screen Shot 2013-07-08 at 11.57.38 PM
by
hoang_555
, on Flickr
Complie lại là xong bước hai, Code này chung cho tất cả các dòng.
4) Enable LPC:
Code LPC tuỳ theo từng hãng sản xuất mà có khác tên xíu: nhưng kệ nó search địa chỉ phát là ra: dán vào ô search: 0x001F0000 chẳng hạn asus là con Device (SBRG)
![[IMG]](http://farm4.staticflickr.com/3716/9241789608_8657b83e37_o.png)
Screen Shot 2013-07-09 at 12.08.59 AM
by
hoang_555
, on Flickr
như hình.
add code như sau:
Code:
Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "device-id", Buffer (0x04) { 0xXX, 0xYY, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) }
Thông số từng dòng:
Core 2: XX là 16, YY là 29
Core i gen 1: XX là 09, YY là 3B
Core i gen 2: XX là 49, YY là 1C
Core i gen 3: XX là 49, YY là 1C
Add như hình là xong:
![[IMG]](http://farm4.staticflickr.com/3799/9241834224_86d6579d7f_o.png)
Screen Shot 2013-07-09 at 12.15.03 AM
by
hoang_555
, on Flickr
Complie lưu lại DSDT
Post a Comment