Map usb via SSDT
Như các bạn đã biết, đối với map usb mình đã làm rất nhiều guide về rất nhiều cách khác nhau cho cả amd và intel xem chi tiết tại đây và tại đây. Nhưng hôm nay mình xin giới thiệu đến các bạn một cách map usb thông qua SSDT. Vậy các này có những ưu điểm gì?
Đơn giản quản lý
Chỉ có 1 file SSDT-XHCI mà không cần thêm các patch phụ
Luyện kỹ năng patch DSDT
Không cần drop SSDT
Làm cho EFI của bạn trong có vể "pro" hơn
Bây giờ thì chúng ta tiến hành thôi nhé
Chuẩn bị
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
Phân tích SSDT-XHCI
Sau khi mở file SSDT-XHCI ra các bạn có thể thấy là các device usb sẽ có cùng một cấu trúc Package

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àAddresscủa deviceNó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ừ
decimalsanghex
Name (_UPC, Package (0x04): Ở đây là đang call qua method UPCCác giá trị của
PackageGiá trị thứ 1 dùng để khai báo tình trạng của port
Disable là
Zerohoặc0x00Enable là các giá trị khác
Nhưng thường người ta sẽ sử dụng
0xFFhoặcOneđể 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
Tóm lại qua phần này chúng ta sẽ chỉ cần quan tâm đến các phần sau
Deviceusb portAddressGiá trị thứ 1 và giá trị thứ 2 của
Package
Phân tích SSDT-xh_xxxxx
SSDT-xh_xxxxxỞ đây là file SSDT các bạn dump được ở folder origi hoặc sys report. Các file này không cố định tên các bạn phải mở từng file và xem cấu trúc của nó

Ở đâ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à
1chuyển sang hex có dạng0x01hoặc ss01 có thứ tự là
17chuyển sang hex có dạng0x11Convert
decimal to hextại đây
Ở đây là
ACPI pathcủa controller usb
Mở rộng
Như ở trên ta có thể thấy ở sẽ có 26 port (HS01 --> HS14 | USR1 --> USR2 | SS01 --> SS10). Nhưng macos chỉ giới hạn 15 port vì vậy ta sẽ cần disable các port rỗng
Theo mặc định thì USR1 và USR2 thì sẽ luôn phải disable bởi vì macos sẽ không hỗ trợ hai chuẩn này. Để tìm hiểu cụ thể hơn về các chuẩn này chúng ta hãy xem dưới đây
HS01…HS14
HS = High Speed Ports
USB 2.0 only
480 mbit/s
SS01…SS10
SS = Super Speed Ports
USB 3.0, 3.1, 3.2
5 to 20 Gbit/s
USR1/2
Không được support bởi macos
Intel AMT
Kiểm tra Port Usb
Port UsbB1: mở usbtoolbox
Đối với các bạn dùng hackintool thì có thể tham khảo thông qua hướng dẫn mapusb tại đây
B2: Nhấn D
B3: Chuẩn bị 2 chiếc usb
1 chiếc usb
2.01 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
Tiến hành
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.XHCIthì 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
Last updated