📕
Basic Guide
HomeIstall GuideAdvance GuideGPU BuyerWIFI BuyeriOS
  • Install
  • Universal
    • Boot không cần USB
    • SIP và Gatekeeper
    • Patch âm thanh với AppleALC
    • Fix power management
    • Fix iServices
    • Fix sleep
      • GPRW/UPRW/LANC
      • Fix keyboard wake
      • Fix darkwake
      • Hotpatch PTS Wake TTS
    • Update macOS và Bootloader
  • Cosmetics
    • Fixing Resolution and Verbose
    • Tạo GUI
    • Scan policy
  • GPU
    • Patch IGPU
    • Disable dGPU Laptop
    • Disable dGPU Desktop
    • Fix DRM support
  • Gerneral
    • Fix Backlight
    • Control Brightness cho External Display
    • Enable Trim For SSD
    • Fake iGPU/ CPU Name
    • Patch SATA Controller
    • Control Led RGB
    • Time Machine
    • Emulated NVRAM
    • Cách inject toàn bộ thông tin phần cứng
  • USB FIX
    • Map USB
  • NetWork
    • Fix Ethernet
    • Fix WiFi và Bluetooth
  • Multiboot
    • Resize và Create Partition EFI
    • Cách thêm Boot vào BIOS
    • Hướng dẫn Dual Boot
  • Cách fake UUID windows
  • Advanced Guide
Powered by GitBook
On this page
  • Tìm hiểu chung
  • Usbtoolbox
  • Windows
  • Macos
  • Hackintool
  • Chuẩn bị
  • Method XhciPortLimit
  • Method uia_include
  • Method uia_exclude
  1. USB FIX

Map USB

PreviousCách inject toàn bộ thông tin phần cứngNextFix Ethernet

Last updated 3 months ago

Tìm hiểu chung

Các conector type của usb được thể hiện dưới dạng decimal nhưng khi các bạn viết ssdt-uiac (hay ssdt-usb,..) thì cần chuyển nó về dạng hex

cách chuyển decimal to hex mình đã hướng dẫn rất nhiều ở các post trước các bạn có thể xem cách chuyển ở trong bài patch i2c

Usb type A

  • USB type A 2.0 connector type: 0

  • usb type A 3.0 connector: 3

Usb type Mini

  • Usb type mini-ab connector type: 1

Usb type B

  • Usb 3 type B connector type: 4

Usb Type Micro

  • USB 3 Type Micro-B có connector type: 5

  • USB 3 Type Micro-AB có connector type: 6

USB Type Power-B

  • USB 3 Type Power-B có connector type: 7

USB Type C

Bảng Type Port

Port Name
Devices
Type Port
Type Port decimal
Type Port Hex

HSxx

USB 2.0

Set là 2.0

0

0X00

HSxx

Bluetooth và Camera

Set là internal

255

0xFF

SSxx

USB 3.0

Set là 3.0

03

0x03

SSxx

Type C 3.0

  • Set là type C with switch

  • Set là type C w/o switch

  • 09

  • 10

  • 0x09

  • 0x0A

HSxx

Type C 2.0

  • Set là type C with usb 2.0

  • Set là type C with switch

  • Set là type C w/o switch

  • 08

  • 09

  • 10

  • 0x08

  • 0x09

  • 0x0A

Nhưng làm sao biết thế nào là type 2.0 hay có switch hay không?

  • Type C 2.0: Tức là khi bạn cắm cáp 2.0 và 3.0 thì nó cũng chỉ nhận 1 port 2.0 HSxx

  • Type C with switch: Tức là khi cắm cáp 2.0 và 3.0 thì nhận 2 port HSxx và SSxx

    • Khi cắm vào cáp type C vào thì khi xoay đầu cáp type C thì cũng chỉ nhận chung 1 port

  • Type C w/o switch: Tức là khi cắm cáp 2.0 và 3.0 thì nhận 4 port HSxx và SSxx

    • Khi cắm vào cáp type C vào thì khi xoay đầu cáp type C thì cũng chỉ nhận riêng 2 port

Usbtoolbox

Windows

B3: Các bạn chạy tool lên và nhấn D

B4: Các bạn cắm lần lượt usb vào hết các cổng

Cổng nào nhận sẽ hiện màu xanh và không nhận sẽ hiện màu trắng

B5: Nhấn B

B6: Nhấn C để tiến hành thay đổi setting

B7: Ấn N để enable Use Native Classes

Chú ý: Đối với AMD bắt buộc phải dùng Native Classses

B8: Ấn B

B9: Nhấn S

Ta sẽ dùng cú pháp T:port:type

Tuy nhiên với windows bạn có thể bỏ qua câu lệnh này

Phân tích
  • Ta thấy port 2 là 2.0 nhưng nhận dạng lại là 3.0 ta sẽ cần set nó lại thành 2.0 T:2:0

  • Tiếp đó là port 3 ta thấy usb 2.0 nhận dạng là type A tức 2.0 --> đúng không cần sửa

  • port 4 là 2.0 nhận dạng là 2.0 --> đúng

  • port 5 là card mạng nhận dạng internal --> đúng

  • Port 7 là bluetooth nhận dạng internal --> đúng

  • Port 8 là web cam nhận dạng internal --> đúng

  • Port 14 usb 3.0 nhận dạng là 3.0 --> đúng

B10: Nhấn K

B11: Ở màn hình Enter Model Identifier nhập model SMBIOS của bạn vào

Các xem SMBIOS của bạn

Dành cho các bạn dùng tool build EFI

B2: Tìm SystemProductName trong config.plist

Đối với các bạn dùng tool build EFI thì sau khi thêm kext usbmap không cần snapshot

Hoặc EFI --> clover --> kext --> other

Đối với nhưng bạn không làm bước 8

B13: Save lại và reboot

Macos

B3: Chạy tool vừa tại về và nhấn D

B4: Các bạn cắm lần lược usb vào các cổng

Các cổng nhận sẽ hiện màu xanh

B5: Nhấn B

B6: Nhấn S

sử dụng cú pháp T:port:type để chọn type cho port

Do mình không kiếm được 1 máy chưa map usb nên các bạn xem cú pháp và áp dụng vào máy các bạn

  • Port 1 là 1 hub device nhận dạng internal --> đúng

  • Port 2 là cam và bluetooth nhận dạng là internal --> đúng

  • Port 3 là usb 2.0 nhận dạng type A tức 2.0 --> đúng

  • Port 4 là usb 3.0 nhận dạng là 3.0 --> đúng

B7: Nhấn K

B9: Save và reboot

Lưu ý

  • Đối với usbtoolbox ở mac thì sẽ không có khả năng tiên đoán port các bạn phải tự set bằng tay.

  • Còn đối với windows có khả năng tiên đoán port các bạn có thể bỏ qua bước set port bằng tay và trực tiếp build kext.

Hackintool

Chuẩn bị

Chú ý:

XHCI-unsupported.kext phải cùng ver với usbinjectall

B3: Các bạn tiến hành nhìn vào mục type của controller trong tab usb của hackintool

Nếu controller của bạn có type khác với

  • EH01

  • EH02

  • XHCI

  • XHC

Thì bạn sẽ cần rename chúng thành các tên tương ứng. Một số rename thường gặp là

  • EHC1 to EH01

  • EHC2 to EH02

  • XHC1 to XHCI

Trường hợp trong DSDT tên XHCI đã được sử dụng thì các bạn có thể rename là XHC1 to XHC_

Có trường hợp DSDT dã sử dụng cả XHCI và XHC khi này các bạn sẽ tiến hành rename XHCI thành XHC2 và rename controller thành XHCI

B3: Reboot

Method XhciPortLimit

Lưu ý

Trước hết chúng ta phải tìm hiểu đây là cách làm rất phổ biến trước đây

Từ Catalina trở lại trước

Tuy nhiên từ sau phiên bản Macos 11.3 trở về sau thì các bạn sẽ không dùng được Quirk XhciPortLimit

Bật lên có thể không boot được hoặc không có tác dụng

Nhưng đối với phiên bản OpenCore 0.9.3 trở về sau acidanthera đã fix lỗi ở quirk XhciPortLimit nên các bạn hoàn toàn có thể sử dụng quirk này để map usb một cách dễ dàng hơn

B1: Mở config.plist và bật quirk XhciPortLimit

Path: Root --> Kernel --> Quirk --> XhciPortLimit

B2: Save lại và reboot

B4: Mở Hackintool và đến tab USB

B5: Chuẩn bị 2 chiếc usb 3.0 và 2.0

B6: Tiếp tục cắm các usb vào hết tất cả cổng

Mỗi cổng đợi 5s rồi rút ra cắm cổng tiếp theo

Sao cho mỗi usb đều cắm vào tất cả các cổng

Vậy làm sao để biết cái nào là 3.0 cái nào là type C. Các bạn hãy quan sát trong quá trình cắm usb để có thể xác định một cách chính xác

B9: Ấn export

  • Có thể sử dụng ssdt-uiac kèm usb injectall.kext

  • Hoặc usbport.kext

B10: Copy ssdt-uiac vào EFI --> OC --> ACPI và snapshot

Hoặc EFI --> Clover --> ACPI --> Patched

Hoặc usbport.kext vào EFI --> OC --> kext

Hoặc EFI --> Clover --> kext --> other

B11: Tiến hành tắt xhciportlimit

Lưu ý

  • USB 3.0 type A và USB type C xuất ra 2 port là 2.0 và 3.0. Lưu ý cắm usb 2.0 và usb 3.0 lần lược vào USB 3.0 type A và USB type C

  • Sau khia add file đã xuất từ hackitool các bạn có thể xóa code ở boot-arg

    • Chỉ dành cho uia_exclude và include

Chú ý:

Nếu như máy các bạn có hơn 15 port usb dù làm theo cách nào đi chăng nữa thì các bạn cũng phải bật xhciportlimit trong config.plist để có thể sử dụng được tất cả 15 port

Method uia_include

B1: Các bạn cắm usb vào port usb 2.0

B2: Add boot-arg -uia_exclude_ss uia_include=XX

Thay XX bằng các port usb 2.0

-uia_exclude_ss uia_include=PR11,PR21,HP21,HP23,HS01,HS02

B3: Reboot

B4: Cắm tiếp usb 2.0 vào các port 2.0 sau đó xóa hết những port không xanh

Các usb khi đã nhận có màu xanh

B5: Add boot-arg -uia_exclude_hs và xóa boot-arg -uia_exclude_ss

B6: Reboot

B7: Cắm các port usb 3.0 và type C vào sau đó tiếp tục xóa các port không xanh

B9: Ấn export

  • Có thể sử dụng ssdt-uiac kèm usb injectall.kext

  • Hoặc usbport.kext

B10: copy ssdt-uiac vào EFI --> OC --> ACPI và snapshot

Hoặc EFI --> Clover --> ACPI --> Patched

Hoặc usbport.kext vào EFI --> OC --> kext

Hoặc EFI --> Clover --> kext --> other

B11: Save lại và reboot

Method uia_exclude

Remap USB 2.0

B1: Cắm 1 thiết bị USB 2.0 vào tất cả cổng trong hệ thống

Mở Hackintool, chọn tab USB

B2: Ở đây các cổng thực sẽ hiện màu xanh các bạn hãy ghi nhớ phần name của các cổng ko hiện xanh

Có thể gh‌i tên các cổng đấy ra

B3: Các bạ‌n thêm đoạn code sau vào boot-arg

uia_exclude=“tên các cổng không hiện xanh”

Khi viết code không có dấu “ ”

// Ví dụ

uia_exclude=HP11;PR12;HP12;PR13;HP13;PR14;HP14;PR15;HP15;PR16;HP16;PR17;HP17;PR18;HP18;PR22;HP22;PR23;PR24;HP24;PR25;HP25;PR26;HP26;HP27;HP28;HS03

// khi viết ra các bạn nhớ thêm vào boot-arg nhé

B4: Restart

Remap USB 3.0 và Type C

B1: Các bạn cắm 1 thiết bị USB 3.0 và USB Type-C vào tất cả cá‌c cổng trên hệ thống

B2: Các bạn sửa lại đoạn code trên theo đúng với hiện tại

Loại bỏ 1 số cổng vừa hiện xanh trong code

B3: Tiếp các bạn xóa đoạn code ở phần 1 đi và dán đoạn code mới vào boot-arg

B4: Restart

Set Type Port

Port rỗng

B2: Sau khi các bạn đã làm xong cả 2 phần trên thì hãy điều chỉnh lại loại cổng trong hackintool cho đúng nhé

B3: Ấn export

  • Có thể sử dụng ssdt-uiac kèm usb injectall.kext

  • Hoặc usbport.kext

B4: Copy ssdt-uiac vào EFI --> OC --> ACPI và snapshot

Hoặc EFI --> Clover --> ACPI --> Patched

Hoặc usbport.kext vào EFI --> OC --> kext

Hoặc EFI --> Clover --> kext --> other

Check xem bạn có cần XHCI-unsupported.kext hay không

B1: mở hackintool vào tab usb chú ý và vendor id và device id

B2: nếu bạn có vendor id là 8086 và device id là 1 trong những id sau:

  • 8D31

  • A2AF

  • A36D

  • 9DED

B1: Các bạn tải usbtoolbox

B2: Các bạn cài python

Nếu không làm bước này bạn sẽ phải dùng kext kèm với kext

Đọc ở phần để biết type port ở decimal là gì

B1: Mở config.plist có thể mở bằng hoặc bất cứ trình edit văn bản nào bạn có

B12: Thêm kext USBMap.kext vào EFI --> OC --> Kext và snapshot lại theo hướng dẫn

Các bạn sẽ copy kext UTBmap.kext và Usbtoolbox.kext vào EFI --> OC --> kext sau đó snapshot theo hướng dẫn

B1: Tải usbtoolbox

B2: Tải và cài đặt USBToolBox.kext và UTBDefault.kext

Xem ở phần để biết type phù hợp

B8: Bỏ kext UTBmap.kext và xóa kext UTBDefault.kext sau đó snaps theo hướng dẫn

Khi map usb bằng usbtoolbox 1 số controller có thể sẽ không nhận. Biện pháp khắc phục là bạn sẽ cần load kext chung với kext usb vừa map

B1: Tải kext usbinjectall

B2: Tải XHCI-unsupported.kext

Xem chi tiết hướng dẫn add patch rename mẫu patch rename xem

B3: Tải app

B7: Các port không hiện xanh thì các bạn tiến hành ấn dấu

B8: Tiến hành set port type các port màu xanh theo phần

Đây là của mình sau khi điều chỉnh xong

B12: OC_Snapshot theo hướng dẫn nếu là OC và reboot

Các bạn hoàn toàn có thể dựa vào cấu trúc của ssdt-uiac để tự map usb bằng ssdt manual xem chi tiết

B8: Điều chỉnh type các port theo bảng ở phần

B1: Mở và cắm các usb 2.0 vào các cổng 2.0 usb 3.0 vào các cổng 3.0 sau đó ấn dấu để Loại bỏ các port không xanh

Đọc bảng ở phần

Đây là của mình sau khi điều chỉnh xong

B5: Snaps theo hướng dẫn nếu là OC và reboot

Thì bạn sẽ cần thêm kext trên. Đối với những bạn chưa boot được vào macos thì có thể xác định vendor-id và device-id theo hướng dẫn

Source tham khảo: | | |

tại đây
tại đây
usbtoolbox.kext
Propertree
tại đây
tại đây
xhci-unsupported
tại đây
tại đây
Hackintool
USBToolBox/tool: the USBToolBox tool (github.com)
tool/TYPES.md at master · USBToolBox/tool (github.com)
Hackintosh USB Port Mapping Guide 2021 / 2022 – Mojave – Catalina – BigSur – Monterey – Guides and Tutorials – Olarila
headkaze/Hackintool: The Swiss army knife of vanilla Hackintoshing (github.com)
tìm hiểu chung
tìm hiểu chung
tìm hiểu chung
tìm hiểu chung
tìm hiểu chung
tại đây
tại đây
tại đây
tại đây
tại đây
tại đây
tại đây
tại đây
tại đây
Before
After