Inject USB Manual
Last updated
Last updated
Tải IORegistryClone
tại đây.
1 số tên Device USB Control
.
Ở đây mình sẽ hướng dẫn cho AMD, Intel làm tương tự vì cùng 1 nguyên tắc hoạt động
Với Intel các bạn sử dụng trên Kext USB-Inject-All.
B1: các bạn Search XHC
trên IOReg và nhìn 1 danh sách sổ xuống tìm gốc của các thành phần ta được tên bộ điều khiển USB.
Ở đây ta có bộ điều khiển USB là PTXH
Nếu các bạn có các bộ điều khiển trùng với nhau thì các bạn sẽ lấy hết tên của nó là
PTXH@000000
, phần này mình sẽ nói rõ hơn ở mục sau).
B2: Dump DSDT theo hướng dẫn tại đây.
B3: Các bạn mở DSDT lên và Search tên bộ điều khiển USB vừa xác định ở IOReg
.
Ở đây ta có thể thấy số Port trong IOReg đang bị thiếu tức macOS đang nhận thiếu Port trong DSDT là do Kext AppleUSBHostPlatformProperties nó chỉ tạo USB Map theo SMBios của Apple vì vây nên ta sẽ bị thiếu các Port USB để khắc phục các bạn sẽ tạo 1 Kext cho riêng mình
Đầu tiên các bạn sẽ Download Kext mẫu tại đây
đối với Intel thì các bạn sửa trên USB-Inject-All.
B4: Các bạn Click chuột phải chọn Show Package Contents
.
B5: Các bạn mở file Info.plist
bằng ProperTree
Ở đây các bạn chú ý các mục sau:
Các bạn sẽ sửa lại theo SMBios
và bộ điều khiển USB.
Mục IONameMatch
là tên bộ điều khiển USB.
Đối với 1 số bộ điều khiển USB
thường là PXSX
sẽ dùng IOPathMatch
thay cho IONameMatch
xem chi tiết ở mục dưới
Port-Count
là giá trị của Port cao nhất
VD như khi nãy ta có Port P022
có giá trị 0x16
cao nhất thì khi đưa vào Port Count
nó sẽ là 16 00 00 00 00
Port
đây là mục các bạn sẽ làm việc chủ yếu để Add thêm các Port bị thiếu.
Mode
ở mục này các bạn sẽ chỉnh về SMBios hiện tại đang sử dụng.
B6: Các bạn sẽ tiến hành nhìn vào DSDT kết hợp IOReg để xác định Type dựa vào tên
Thông thước 3 ký tự đầu của USB
3.0
sẽ trùng nhau và2.0
cũng vậy
B7: Tiến hành xác định giá trị Port
các bạn sẽ dựa vào mục
để xác định giá trị Port
.
VD như ở đây mình có
Thì port
P018
ta có giá trịPort
là0x12=1200000000
ta sẽ đượcDo ở trên IOReg ta có port
P010
cóusbconnector
là0x3
tức là3.0
nên cũng trương tự vớiP018
Nhớ rằng USB
3.0
sẽ có 2Port
được xuất ra
Lưu ý : 1 số DSDT mục
Sẽ bị ẩn đi do đó ta sẽ phải tự đọc DSDT
VD như ở đây mình có
Ta sẽ có PR3
là 0xFFFFFFF0
.
Ở đây ta thấy dsdt này thiếu các port usb như
HS02, HS03, HS04, HS05,…
Do ở đây có 2 bộ điều khiển USB nên mình dùng IOPathMatch.
Trường hợp này thường xảy ra trên bộ điều khiển USB PXSX.
Ở đây ta có thể thấy có 2 Device XHC0 ta có thể thấy mục XHC0@61000000 ở dưới mục XHC0 và là gốc của tất cả các mục trên nên ta sẽ lấy path của mục này là:
dựa vào vault củaport trên usb và ioreg để xme mục nào là bộ điều khiển usb ta sài thực sự
Tiếp theo ta chỉ cần Add Path trên vào mục IOPathMatch
.
B1: các bạn tải SSDT tại đây.
B2: Các bạn nhìn vào mục ACPI-Path
trong bộ điều khiển USB đã xác định ở trên.
Ta có thể thấy IOACPIPlane:/_SB/PC00@0/RP05@1c0004/PXSX@0
có nghĩa là SB.PC00.RP05.PXSX
B3: Ta sẽ chuyển các mục sau tương ứng sau bằng số liệu bạn lấy được trong IOReg tương tự như sau
Source tham khảo: USB Mapping | OpenCore Post-Install (dortania.github.io)
Hoặc Map USB theo hướng dẫn
Cách sử dụng ProperTree các bạn có thể xem hướng dẫn .
Lưu ý: các này chỉ là Injects USB chủ yếu dành cho AMD và Gen 10 Intel sau khi làm theo các bạn phải Map lại USB bằng Hackintool theo hướng dẫn .