Contribute
Register

Migrating to OC

Status
Not open for further replies.
Awesome! That is perfect. That area in the install guide is lacking a good bit of that and of course the incorrect ExFat. And all the other docs I looked at was not real clear and most used

You should send that to them to add to that portion of the install guide ;)

Ok everything isn't 100%. Not sure if it is normal, but a USB2 device not working in a USB3 port? I plug in the USB3 drive and it gets it, put in a usb2 thumb drive and none of the ports in Hackintool change.

Got the Windows installed and setup just like you wrote it, super easy. One thing I thought was odd, I had my 1TB MAC Drive set first, and would still skip to Windoze install. I just disabled it in the boot devices and then the 1TB boots.

Thanks a ton! Super helpful!
 
When undertaking the USB port discovery, you need to test EACH and EVERY port with a USB2 and then a USB3 device, to see which port(s) are activated in Hackintool.

USB3 physical ports always have a virtual USB2 and a physical USB3 port. You need to identify both the virtual and physical ports if you require both to work in macOS. Just identifying the USB3 port, doesn't mean the USB2 virtual port has also been identified and activated. In fact the opposite, only the USB3 port has been discovered and activated. So the USB2 side is undiscovered and not forming part of the USB configuration.

If you are running macOS Catalina, have you made sure you enabled the Kernel > Quirks > XhciPortLimit entry.

Screenshot 2022-07-23 at 11.47.22.png XhciPortLimit Quirk highlighted.

This Quirk temporarily enables all the USB ports, so they can be discovered in macOS.

Once you have a working USBPorts.kext added to your OC setup, you should disable this quirk and just use the USBPorts.kext you have created.

This is a screenshot showing the USBports.kext I use in my Z370 system. It will probably be different to yours, as we use different PC cases, different setups on the motherboard headers and will have chosen to activate different ports, for our own preferences.

Screenshot 2022-07-23 at 11.50.10.png Example of Z370 USB configuration

Just remember that any USB3 port will have a physical USB3 port and a virtual USB2 port, both need to be set with the connector type USB3. Think of them as companion ports, where both need to be set to match the physical port.

Only the USB2 motherboard headers will need to be set as Internal. This can be Front Case USB2 ports, Bluetooth module connectors or as in my setup a front case USB card reader. I use one of these card readers on each of my desktop hacks, as I used to take a lot of photos when I was working as a Chartered Building Surveyor. I still haven't got out of the habit of including one in nay build I create.

Any front case USB3 ports connected to the USB3 header(s) should be set as USB3, NOT as internal.

Any front case Type-C ports will need to be tested to see if it is a port incorporating a Switch, or not. Assuming the front case Type-c port(s) are connected to a Type-E motherboard header and not a second USB3 header, via an adapter.

Using the comment section in the Hackintool USB tab can assist you when it comes to identifying ports, and checking they are set with the correct connector type.

Screenshot 2022-07-23 at 12.02.29.png Rear I/O plate from your MSI Z370 Gaming Plus Motherboard

There are three rows of USB ports, so identifying them as top row left or right, middle row left or right and bottom row left or right would be sensible. The ports on the middle and bottom rows will each have a USB2 and a USB3 port. So they might be identified as Middle row left USB2, or middle row USB3 left. I am sure you get the idea.

The I/O plate shows you have 6 physical USB ports, 2 x USB2 and 4 x USB3. This means you have a total of 10 ports available on the rear I/O plate.

Your motherboard has 2 x USB2 headers (4 ports)along the base of the board and 2 x USB3 headers (4 ports each) along the right hand side of the board. So a total of 10 ports are available from the headers. These are highlighted in CYAN on the screenshot below.

Screenshot 2022-07-23 at 12.03.43.png MSI Z370 Gaming Plus Motherboard, USB headers highlighted

Overall, this means you need to drop 5 ports, to be within the 15 port limit imposed by Apple.

The most logical way to start dropping ports it to see which ports you don't use.

If for example you only use one of the two USB3 headers, then this automatically means you can drop 4 ports in one swoop.

Then if you have a Bluetooth module connected to one of the USB2 headers, another port can be dropped, as the Bluetooth module usually has a 9-pin connector that fills a header on the motherboard, but only one of the two ports are being used by the BT.

If you are only using one of the USB2 headers, the other unused header accounts for 2 x ports, which you can drop if the header is not being used.

When you have your USBPorts.kext at a place where you think it is correct, post a copy here along with a screenshot showing the Hackintool USB tab containing the port configuration.
 
Yeah wish I read the USB mapping document earlier, which explains why I got the mouse and keyboard icons at one point, but now I can't get back to that. And, I currently can't boot my old Catalina SSD for some reason. It may be related to a BIOS changed that was diff with OC and Clover? So I am on my MacBook Pro building the USB from scratch, from the createmedia. So if I boot without and USBMapping, will some of the ports work, and I just may need to move the mouse and keyboard around for it to see them? Or do I need a USBports.kext, and if so is there a generic one that I can plug in, if I can't get back booted off the old drive.
For Macbook you only have 2 external ports (4 assuming USB3) so never gonna run into get limit.

I don't fully understand the relationship between port enumeration and the 15 per root controller limit, but the basic idea is that in a new build the only USB are the internal devices, maybe 5 max, and the keyboard+mouse (USB2) for 2 more. If the keyboard were an old Apple extended with mouse attached to its hub they count for 1.

As an aside, putting a pair of input devices on a USB2 hub would count for 1. But a USB3 hub would count for 2 because USB 2 and 3 are logical companion ports on the same connector and the hub represents both. Assuming you get the hub connected to a mapless build, you can put as many devices as you like behind it and not deal with the 15 port limit — AFAIK, maybe there is a whacky edge case for some esoteric device?

Desktops are trickier because they can have many connectors off the board's root hub.

The way ports are enumerated from the root seems to follow a pattern where the back panel connectors are mixed with the user-defined headers. But USB2 personalities get enumerated in a block before USB3, so USB2 input devices connected to back-panel typically work from get-go to get build going enough to do the mapping.

I have questions questions like: what precisely is limited to 15? The total active ports however sparsely these appear? Or do unpopulated ranges between active ports also count against the limit? Do numerical spans of ports count even if only the the ends of he span are populated? For example, can the logical span from a populated USB2 port to USB3 instance for its companion exceed the 15-per-root limit because it implies all the ports in between?

It's not obvious. It's as important that mapping makes logical ports -not- exist to the OS as it is to designate port types. The semantics are goofy.

Anyway, punting re such questions; on a desktop edge case you would try moving you input devices (hopefully they're USB2) to other back panel ports (adjacent). On a laptop, things should be less edgy.
 
When Hacking an AMD Ryzen system, there are commonly 3 or 4 USB controllers. So the USBPorts.kext or USBMap.kext created on those systems goes well over the 15 port limit.

I was helping someone yesterday, whose system had the following:
  • 2 x XHC0 controllers each with 10 ports. These were differentiated internally with non-identical location ID's.
  • 1 x XHCI controller with 14 ports, and
  • 1 x Thunderbolt add-on card with 2 physical Type-C ports (4 ports in total).
The system had 38 USB ports active and working from the final USBMap.kext.

So my thoughts on the matter are that it is a maximum of 15 ports active per controller. Definitely isn't 15 ports maximum.
 
When Hacking an AMD Ryzen system, there are commonly 3 or 4 USB controllers. So the USBPorts.kext or USBMap.kext created on those systems goes well over the 15 port limit.

I was helping someone yesterday, whose system had the following:
  • 2 x XHC0 controllers each with 10 ports. These were differentiated internally with non-identical location ID's.
  • 1 x XHCI controller with 14 ports, and
  • 1 x Thunderbolt add-on card with 2 physical Type-C ports (4 ports in total).
The system had 38 USB ports active and working from the final USBMap.kext.

So my thoughts on the matter are that it is a maximum of 15 ports active per controller. Definitely isn't 15 ports maximum.
Yes I follow, 15 per root controller, where your list reads to as 4 roots.
 
USB3 physical ports always have a virtual USB2 and a physical USB3 port. You need to identify both the virtual and physical ports if you require both to work in macOS. Just identifying the USB3 port, doesn't mean the USB2 virtual port has also been identified and activated. In fact the opposite, only the USB3 port has been discovered and activated. So the USB2 side is undiscovered and not forming part of the USB configuration.

If you are running macOS Catalina, have you made sure you enabled the Kernel > Quirks > XhciPortLimit entry.
When undertaking the USB port discovery, you need to test EACH and EVERY port with a USB2 and then a USB3 device, to see which port(s) are activated in Hackintool.

USB3 physical ports always have a virtual USB2 and a physical USB3 port. You need to identify both the virtual and physical ports if you require both to work in macOS. Just identifying the USB3 port, doesn't mean the USB2 virtual port has also been identified and activated. In fact the opposite, only the USB3 port has been discovered and activated. So the USB2 side is undiscovered and not forming part of the USB configuration.

If you are running macOS Catalina, have you made sure you enabled the Kernel > Quirks > XhciPortLimit entry.

View attachment 551746 XhciPortLimit Quirk highlighted.

This Quirk temporarily enables all the USB ports, so they can be discovered in macOS.

Once you have a working USBPorts.kext added to your OC setup, you should disable this quirk and just use the USBPorts.kext you have created.

This is a screenshot showing the USBports.kext I use in my Z370 system. It will probably be different to yours, as we use different PC cases, different setups on the motherboard headers and will have chosen to activate different ports, for our own preferences.

View attachment 551747 Example of Z370 USB configuration

Just remember that any USB3 port will have a physical USB3 port and a virtual USB2 port, both need to be set with the connector type USB3. Think of them as companion ports, where both need to be set to match the physical port.

Only the USB2 motherboard headers will need to be set as Internal. This can be Front Case USB2 ports, Bluetooth module connectors or as in my setup a front case USB card reader. I use one of these card readers on each of my desktop hacks, as I used to take a lot of photos when I was working as a Chartered Building Surveyor. I still haven't got out of the habit of including one in nay build I create.

Any front case USB3 ports connected to the USB3 header(s) should be set as USB3, NOT as internal.

Any front case Type-C ports will need to be tested to see if it is a port incorporating a Switch, or not. Assuming the front case Type-c port(s) are connected to a Type-E motherboard header and not a second USB3 header, via an adapter.

Using the comment section in the Hackintool USB tab can assist you when it comes to identifying ports, and checking they are set with the correct connector type.

View attachment 551750 Rear I/O plate from your MSI Z370 Gaming Plus Motherboard

There are three rows of USB ports, so identifying them as top row left or right, middle row left or right and bottom row left or right would be sensible. The ports on the middle and bottom rows will each have a USB2 and a USB3 port. So they might be identified as Middle row left USB2, or middle row USB3 left. I am sure you get the idea.

The I/O plate shows you have 6 physical USB ports, 2 x USB2 and 4 x USB3. This means you have a total of 10 ports available on the rear I/O plate.

Your motherboard has 2 x USB2 headers (4 ports)along the base of the board and 2 x USB3 headers (4 ports each) along the right hand side of the board. So a total of 10 ports are available from the headers. These are highlighted in CYAN on the screenshot below.

View attachment 551751 MSI Z370 Gaming Plus Motherboard, USB headers highlighted

Overall, this means you need to drop 5 ports, to be within the 15 port limit imposed by Apple.

The most logical way to start dropping ports it to see which ports you don't use.

If for example you only use one of the two USB3 headers, then this automatically means you can drop 4 ports in one swoop.

Then if you have a Bluetooth module connected to one of the USB2 headers, another port can be dropped, as the Bluetooth module usually has a 9-pin connector that fills a header on the motherboard, but only one of the two ports are being used by the BT.

If you are only using one of the USB2 headers, the other unused header accounts for 2 x ports, which you can drop if the header is not being used.

When you have your USBPorts.kext at a place where you think it is correct, post a copy here along with a screenshot showing the Hackintool USB tab containing the port configuration.

I am currently running Monterey now on the desktop doing all the work. Got the EFI booting off the MAC drive and see the two Ones at the option menu.

Awesome information! I had the Limit set to false, which I thought it was needed to be false before mapping USB and then set it to true once you get all the USBs the way you want. But just tried setting to false and rebooted and still showing the same USB ports..

My two middle rear USB ports will detect any USB3 device I put in, but my USB 2 storage device does not get shown when inserted. The other USB3 will see both USB2 and USB3 devices, just those two middle ones don't.

However, in the BIOS hardware mapper does see the two USB2 devices being inserted. It isn't a very big deal as you say I have plenty of ports. The two Back top USB2s are my keyboard and mouse. Bottom rear USB3s are a USB3 hub and my Scarlet audio interface. Every USB but those two middle ones see the USB2 thumb drive.

Here is an attached screenshot of my Hackintool

Currently do not have a Bluetooth card in it, but may add it later on.
 

Attachments

  • Screen Shot 2022-07-24 at 1.14.38 PM.png
    Screen Shot 2022-07-24 at 1.14.38 PM.png
    109.3 KB · Views: 36
Awesome information! I had the Limit set to false, which I thought it was needed to be false before mapping USB and then set it to true once you get all the USBs the way you want.
nope, the other way round
 
Only problem you will find is that the XhciPortLimit Quirk doesn't work in Monterey at all, or the most recent versions of Big Sur, not since 11.3. The OC developers have not come up with a fix or an alternative for this issue in those versions of macOS.

So, it is best to install Catalina, or an early version of Big Sur (11.0.1, 11.1, 11.2 or 11.2.1) if you can get a hold of one, when creating the custom USB kext. As the XhciPortLimit quirk still works in those versions of macOS.

Enabling the quirk in Monterey won't change anything in your system.
 
Which ports?

If you are not using the HS02 port shown as internal, then you can remove this port and add another port from one of the middle USB3 ports on the rear I/O plate.

Same goes for HS13, if you are not using the internal header port, then adding another USB2 port from the middle pair of USB3 ports might be helpful.
 
Status
Not open for further replies.
Back
Top