I am not a fan of USBToolBox or other utilities that try and assist. My main complaint against USBToolBox is the lack of clear and complete instructions.
I'd like to add a bit of clarification context for the above comment.
Recognizing and honoring that CaseySJ is an very capable and influential contributor, I'll say that following his lead always pays off.
But in this case he's making a distinction about which I want to offer some clarification.
As well as Hackintool, there are two other popular helper options:
• Corpnewt's USBmap, which runs on macOS, and expects a Python3 instance supplied by macOS or a user-installed Python3 (Apple's Python2.7 was removed from macOS at Monterey 12.3 and Python3 only comes with Xcode Developer Tools. USBmap got updated to Python3 but didn't bundle it, which leads to a headache for some users.
• USBToolBox is an enhancement of Corpnewt's USBmap, that runs as a self-contained Python environment on Windows or macOS and streamlines discovery and deployment for certain use-cases, which I will clarify below.
Conceptually, using any of these helpers is the the same approach:
1) Enable detection of all system ports beyond the macOS 15-port PCI root controller limit (up to a hard limit of 26 ports per root).
2) Determine (Detect) specific port locations and personalities, choose to enable only 15 for the main controller, and set port types accordingly (aka "mapping").
3) Generate and install a kext for the map.
Hackintool is oldest and most venerable helper. It uses XhciPortLimit quirk and USBInjectAll.kext as a generic "dummy" map for step 1
USBmap came next. It overcame the broken XhciPortLimit quirk by use of a custom "dummy" map which you generate in step (1). You install the dummy, complete step 2, and replace the dummy with the final map in step 3. By virtue of the dummy map USBInjectAll.kext is not needed.
USBToolbox upgraded USBmap and can run in Windows to skip both setting up XhciPortLimit and the dummy. It also includes an optional "shim" kext which hides the detail of what SMBIOS is in force for the map kext so you can change your config.plist platform SMBIOS without having to update your existing custom map kext. USBToolbox also has a macOS version, but you still need to use a dummy-map to detect all ports.
No matter what helper you choose, there are various of details about USB mapping, e.g. root controller 15 port limit, 26 port hard limit, USB versions and companion ports, port types—internal vs ext, switched vs unswitched USB-C, etc. These issues remain consistent no matter what helper you choose. There's an exotic issue of PCI root controller renames that is affected by which helper you use, but this only comes up in certain configs, and is an outlier situation.
Having any helper is far more helpful than any difference between the helpers!
The finer point is that what the helper actually does is create a map kext which is just a wrapper for a text config file (what's called a codeless kext, meaning no binary driver). So you could approach mapping by editing the kext's internal Info.plist to set the SMBIOS, controller and port config. You can look up the needed information using IORegistryExplorer and edit a boilerplate map kext by hand. The Helpers help merely by hiding various naming and config dependencies.
The broader point is that much of what you learn using any given helper is applicable to the other helpers.
Ultimately all these helpers are about a bit of convenience, and the details only truly makes sense when you examine the ways the USB hacks work. IOW for most of us it will never make sense!
Hackintool has a GUI and a local forum Beginner's Guide which introduces many important aspects of mapping. The Hackintool GUI is somewhat easier to read than text output of the others, but IMO the advantage is academic. Hackintool plus Guide is very valuable. But it is far from clear and complete.
USBmap helper is (IMO) more self-explanatory than Hackintool, which partly explains why there's no writeup. But also it's creation assumed previous experience with Hackintool.
USBToolbox evolves USBMap and has been written-up elsewhere on the web, including its Github, but the focus is on features added to USBmap because that's how the helper evolved.
IMO, USBToolbox should be today's reference, but since XhciPortLimit got fixed, the old Hackintool way is back in business.
If I were to write up a tutorial, I would explain mapping in 2 parts: one about USB config under macOS and the other about a specific helper. Then I would accumulate as much lore as possible in footnotes.
(I got well underway with such a writeup, but I ran into so much detail I didn't quite understand that I got frustrated and gave up on it.)
I hope this helps provide perspective.
Best to everyone and thx for the great great work and resources.