WindowsXP

Quản trị viên
19/1/18
2
0
1
Bản quyền bài viết: YourApple.org
wv1UY0r.jpg

Giới thiệu:

Kể từ Mac OSX Yosemite trở lên, Hackintosh gặp một số vấn đề về quản lý các cổng USB dẫn tới các lỗi liên quan đến nhận sai tốc độ và các lỗi liên quan sleep.
Bài viết này mình sẽ hướng dẫn các bạn cách để macOS khai thác cổng USB một cách chính xác nhất.

Chuẩn bị:

Clover Configurator (Vibrant Edition)
IORegistryExplorer
PlistEdit Pro
USBInjectAll.kext
FakePCIID.kext

Tải về tại đây

Trước tiên mở file config.plist sẽ dùng để cài/boot bằng Clover Configurator

Bước 1. Add ACPI Patch:
Thêm patch vào config.plist như hình:

KgNfZ6p.png


EHC1 -> EH01
Find: 45484331
Replace: 45483031

EHC2 -> EH02
Find: 45484332
Replace: 45483032

XHCI -> XHC
Find: 58484349
Replace: 5848435F

XHC1 -> XHC
Find: 58484331
Replace: 5848435F

*Mục đích là để rename cho cụm USB.
Cách này tốt hơn so với edit find and replace trong DSDT/SSDT thủ công dễ sinh lỗi.

Về cơ bản nếu DSDT/SSDT gốc đã sẵn EH01 hoặc không có EHC1 thì các patch này sẽ bị bỏ qua do không tìm thấy EHC1. Tương tự với các key còn lại.


Bước 2: Patch Kext ( on-the-fly) bằng clover:

40039320231_8d466318e4_o.png


name: com.apple.driver.usb.AppleUSBXHCIPCI
find: 83bd8cfe ffff10
replace: 83bd8cfe ffff1b
comment: change 15 port limit to 26 in XHCI kext
MatchOS: 10.11.x

name: com.apple.driver.usb.AppleUSBXHCIPCI
find: 83bd74ff ffff10
replace: 83bd74ff ffff1b
comment: change 15 port limit to 26 in XHCI kext
MatchOS: 10.12.x

name: com.apple.driver.usb.AppleUSBXHCIPCI
find: 837d8c10
replace: 837d8c1b
comment: change 15 port limit to 26 in XHCI kext
MatchOS: 10.13.x

Bước 3. Thêm kext USBInjectAll.kext và FakePCIID.kext vào thư mục EFI/Clover/kexts/Other.

Đến đây sau khi khởi động lại, toàn bộ các cổng USB kể cả các cổng không tồn tại thực tế vậy lý trên mainboard cũng sẽ được active. Bạn sẽ không bị dính lỗi vòng tròn chéo trắng (cấm đi ngược chiều) đối với boot bộ cài nữa.

Trước khi thực hiện các thao tác trên chỉ có 10 port được active.

40006585562_6d2fc1de1a_o.png


Sau khi thực hiện, số lượng port đã xuất hiện đầy đủ ( số lượng port của mỗi thế hệ chipset sẽ khác nhau - đây là ví dụ trên HP Pavilion 14 Haswell)

26166175618_f148a3a059_o.png

____

Tuy nhiên để tối ưu hoàn toàn, bạn phải xác định Port thực và loại bỏ Port ảo.
Port thật hay port vật lý, hiểu nôm là chính là các cổng USB tồn tại trên máy của bạn, bạn có thể cắm usb vào và cổng được dùng sẵn bởi thiết bị built-in (cụm bluetooth của card wifi, webcam của laptop... ).

Port ảo là các port còn lại sau khi tìm ra các port thật.

Bước 1. Xác định Port thật:

Chuẩn bị: 1 thiết bị dùng cổng USB 2.0 (thường sẵn có là chuột ) và 1 thiết bị dùng cổng USB 3.0 (rẻ nhất là USB 3.0).
hoặc
Tốt nhất là 1 chiếc hub USB 3.0 ( vì hub usb 3.0 thực chất gồm 1 hub USB 2.0 tích hợp cùng 1 hub USB 3.0).
Thao thác:
  • Cắm thiết bị dùng cổng USB 2.0 (thường sẵn có là chuột ) -> chờ 3s -> rút ra đối với tất cả các cổng usb mà bạn có.
  • Lặp lại tương tự với 1 thiết bị dùng cổng USB 3.0 (rẻ nhất là USB 3.0).
hoặc
  • Nếu bạn dùng hub USB 3.0 thì chỉ cần cắm vào -> chờ 3s -> rút ra đối với tất cả các cổng usb mà bạn có.
Việc port nào là port thực sẽ dễ dàng thấy thay đổi trong mục "XHC"
tiện thể : tìm tới mục "XHC" -> và tìm property "IOName". giữ lại chút sẽ dùng đến - ở đây là 8086_9d2f
3MAHVXu.png


Khi thiết bị được cắm vào và rút ra như trên, sẽ xuất hiện các gạch chéo đỏ tại port tương ứng như hình.

B6F8noU.png


Lưu ý:
HSxx quản lý các thiết bị USB 2.0.
SSxx, USRx (nếu có) quản lý các thiết bị USB 3.0.

Trong cùng 1 cổng USB 3.0:
Khi cắm thiết bị USB 2.0 vào cổng 3.0 nó sẽ được quản lý trong HSxx
Khi cắm thiết bị USB 3.0 vào cổng 3.0 nó sẽ được quản lý trong SSxx/URSx

Khi cắm thiết bị như USB hub 3.0, cụm hub 2.0 sẽ được quản lý trong HSxx và cụm hub 3.0 sẽ quản lý trong SSxx/URSx.

Trong ví dụ, các thiết bị gạch chéo đỏ là các thiết bị đã bị rút ra, lưu lại danh sách các port có gạch đỏ (ghi bằng tay dùng giấy và bút) là sẽ có danh sách HS,SS của các cổng USB vật lý.

Rà soát thêm lần nữa, ngoài thiết bị vật lý đang cắm, nếu HS,SS nào không bị đỏ mà có device nào đó đang cắm sẵn thì đó là built-in (trong ví dụ là HS05 cho webcam)

Trong ví dụ này xác định ra Port thật:
+ HS01, HS02, HS03, SS01,SS03, SS04 là các cổng USB của máy khi cắm test.
+ HS05 là webcam (thiết bị dạng built-in).

Bước 2. Loại bỏ Port ảo:
Chỉnh sửa USBInjectAll.kext :

Chuột phải lên USBInjectAll.kext -> Show Package Contents -> Contents -> chuột phải lên file Info.plist chọn Open with -> PlistEdit Pro.

Chọn IOKitPersonalities -> ConfigurationData -> Configuration.

Trong ví dụ này, Device ID là "8086_9d2f, chỉ cần quan tâm đến mục "8086_9d2f", các mục khác không liên quan không cần đụng chạm!

Từ danh sách các port thật đã xác định : HS01, HS02, HS03, HS05, SS01,SS03, SS04 sẽ được giữ lại.
-> Chọn toàn bộ các port ảo còn lại và xóa.

26166179928_343d560b08_o.png


Bước 3. Thiết lập USBConnector:

- 0 : USB 2.0
- 3: USB 3.0
- 255 : built-in

Các mục HSxx đã xác định là built-in sẽ set USBConnector = 255.
Còn lại:
Các mục HSxx sẽ set USBConnector = 0
Các mục SSx/USRx sẽ set USBConnector = 3

Xong thì save file info.plist.

* Thay vì chỉnh sửa SSDT-UIAC.aml để xóa port và define usbconnector, chỉnh file info.plist chỉ cần chọn và ấn Delete.
Chỉnh sửa DSDT/SSDT luôn là nỗi ám ảnh với newbie giống như bình sinh con người ta sợ ma ( sợ thứ mà mình không biết ).

39330885104_228f00209f_o.png



Khởi động lại và check iOReg và hưởng thụ thành quả.

40039321401_80363a0eb9_o.png



Nguồn Rehabman
Editor: @TruongKhanh
Support @DuongTH
 
Last edited by a moderator: