Map usb via SSDT
Last updated
Last updated
B1: Các bạn tải file SSDT-XHCI
mẫu mình đã tạo sẵn tại đây
B3: Tải UsbtoolBox tại đây
Nếu như ở MacOs thì bạn tải hackintool tại đây
B4: Dump folder orgi
hoặc sys report
theo hướng dẫn tại đây
B4: Mở file SSDT-XHCI
vừa tải ra và bây giờ chúng ta sẽ tiến hành phân tích
Bây giờ chúng ta sẽ tiến hành phân tích nhé:
Device (HS01)
: Đây là device usb port tìm hiểu cụ thể ở phần tiếp theo.
Name (_ADR, One)
: Ở đây là Address
của device
Nói cách khác thì đây chính là thứ tự của port này trong root hub
Có thể dễ dàng tìm được giá trị này bằng cahcs chuyển thứ tự của port từ decimal
sang hex
Name (_UPC, Package (0x04)
: Ở đây là đang call qua method UPC
Các giá trị của Package
Giá trị thứ 1 dùng để khai báo tình trạng của port
Disable là Zero
hoặc 0x00
Enable là các giá trị khác
Nhưng thường người ta sẽ sử dụng 0xFF
hoặc One
để biểu thị trạng thái enable
Giá trị thứ 2 dùng để khai báo port type xem chi tiết tại bảng phía dưới
Giá trị thứ 3 và thứ 4 là giá trị mặc định không cần động vào
0x00
USB Type A
0x01
USB Mini-AB
0x02
USB Smart Card
0x03
USB 3 Standard Type A
0x04
USB 3 Standard Type B
0x05
USB 3 Micro-B
0x06
USB 3 Micro-AB
0x07
USB 3 Power-B
0x08
USB Type C
(USB 2 only)
0x09
USB Type C
(with switch)
0x0A
USB Type C
(w/o switch)
0xFF
Built-in
Đây là bảng giá trị Port Type
SSDT-xh_xxxxx
Ở đây là cấu trúc 1 file SSDT chứa các thông tin về usb chúng ta hãy cũng nhau phân tích một chút nhé
Chú ý đến phần tô đỏ ta sẽ có
List các port usb
Ở đây cũng là phần để các bạn tìm được thứ tự của device port usb bằng cách đếm các port này
Ví dụ: hs01 thì thứ tự là 1
chuyển sang hex có dạng 0x01
hoặc ss01 có thứ tự là 17
chuyển sang hex có dạng 0x11
Convert decimal to hex
tại đây
Ở đây là ACPI path
của controller usb
Port Usb
B1: mở usbtoolbox
B2: Nhấn D
B3: Chuẩn bị 2 chiếc usb
1 chiếc usb 2.0
1 chiếc usb 3.0
B4: Cắm lần lượt từng chiếc usb vào tất cả các cổng và quan sát phân tích ở hình bên dưới
Đây là thứ tự port của nó để tìm được device name usb port thì có thể xem trong ssdt
Ví dụ: port 1 tương ứng hs01
Sắp xếp theo thứ tự port
Port type
Tra theo bẳng usb port type ở trên
Các port màu xanh là enable
Màu trắng là port rỗng
B1: Quan sát các port có sẵn ở trong SSDT-XHCI
và SSDT-xh_xxxxx
Port nào còn thiếu thì thêm vào bằng cách copy và sửa
ADR
,Device()
B2: Các bạn mở file SSDT-XHCI
B3: thay thế các scope thành acpi path
controller
Ví dụ: acpi path controller của mình có dạng
_SB.PC00.XHCI
thì ta sẽ thay thế nó như ảnh
B4: Chỉnh sửa các giá trị của Package
trong từng device usb controller
Tìm đến các device enable và chính sửa giá trị thứ 1 thành 0xFF
Tiếp tục chỉnh sửa giá trị thứ 2 theo type port đã xác dịnh ở phần trên và dựa vào bảng type port
B5: Chỉnh tương tự cho đến hết các device
B6: Comlie SSDT và biên dịch thành .aml
theo hướng dẫn tại đây
B7: Thêm SSDT vừa tạo được vào EFI --> OC --> ACPI
và Snapshot
Hoặc
EFI --> Clover --> ACPI --> Patch
B8: Reboot và tận hưởng thôi
Source tham khảo: https://github.com/5T33Z0/OC-Little-Translated/tree/main/03_USB_Fixes/ACPI_Mapping_USB_Ports
Đối với các bạn dùng hackintool thì có thể tham khảo thông qua hướng dẫn mapusb