USBToolBox / tool

the USBToolBox tool
MIT License
936 stars 62 forks source link

USBToolBoxᵇᵉᵗᵃ

Making USB mapping simple(r)

The USBToolBox tool is a USB mapping tool supporting Windows and macOS. It allows for building a custom injector kext from Windows and macOS.

Features

Supported Methods

From Windows

Windows 10 or 11 64-bit are recommended for the full feature set (companion port binding, port type guessing.). Windows 8 may work, Windows 7 and below will very likely crash. 32-bit is not supported, macOS needs 64-bit anyway.

Simply download the latest Windows.exe from releases. If Windows Defender/other antivirus complains, you can either whitelist the download or use Windows.zip, which doesn't have a self extractor (which is what most antiviruses seem to complain about).

From Windows PE

Yes this works lol. Some device names may not be as descriptive but if you really don't want to install Windows, you can create a Windows PE USB and hit Shift + F10 to open cmd, then run the program.

From macOS

macOS is not recommended for several reasons. You won't have features like guessing port types (as there simply isn't enough info for this) as well as binding companion ports (again, no info). However, there's also port limits to deal with, and in macOS 11.3, XhciPortLimit is broken, resulting in a lot more hoops to go through. If you are forced to use macOS, you should probably use USBMap instead, as it has code to handle the port limit.

If you still want to use USBToolBox on macOS, download macOS.zip from releases.

Usage

This is gonna be a very basic guide for now. A fully-fleshed guide will be released in the future.

  1. Download the appropriate download for your OS.
  2. Open and adjust settings if necessary.
  3. Select Discover Ports and wait for the listing to populate.
  4. Plug in a USB device into each port. Wait for the listing to show your USB device before unplugging it and plugging it into another port.
    • If on Windows, you only need to plug in 1 device to USB 3 ports (as companion detection should be working). If on macOS, you will have to plug in a USB 2 device and a USB 3 device into each USB 3 port.
    • For old computers with OHCI/UHCI and EHCI controllers, you will need to plug in a mouse/keyboard to map the USB 1.1 personalities, as most USB 2 devices will end on the USB 2 personality.
  5. Once mapping is done, go to the Select Ports screen.
  6. Select your ports and adjust port types as neccesary.
  7. Press K to build the kext!
  8. Add the resulting USB map to your EFI/OC/Kexts folder, and make sure to update your config.plist.
    • If building a map that uses the USBToolBox kext, make sure to grab the latest release of the kext too.
    • Make sure to remove UTBDefault.kext , if you have it.
  9. Reboot and you should have your USB map working!

Known Issues/FAQ

See the issues tab for known issues.

FAQ

Credits

@CorpNewt for USBMap. This project was heavily inspired by USBMap (and some functions are from USBMap).

My testing team (you know who you are) for testing