Contribute
Register

iMac Pro X299 - Live the Future now with macOS 10.14 Mojave [Successful Build/Extended Guide]

Status
Not open for further replies.
Could you upload a copy of your USBX SSDT + USBInjectAll kext please ?

You better download KGP's SSDT and USB kext from his GitHub since you got the same board! You're welcome!
 
Well you can't, in the X299USB.kext you have 15 ports enabled already. I thought you could never do more than 15 ports with that method? (without removing the limit with a patch).
The only ones missing are HS01 and HS02 (I have HS03 and HS04 connected to the case's front USB connectors).

My previous post had an attachment, it implements: HS03, HS04, HS05, HS06, HS07, HS08, HS-9, HS12, HS13, HS14, SSP01, SSP03, SSP04, SSP05 and SSP06 (15 ports)

Unless I'm not understanding what you're asking for.

Well, look..

The idea to also provide the fully implemented XHC USB kext is the following:

1.) By having the fully implemented XHC USB kext available, it is still up to the user, which HS and SS ports to drop to remain within Apple's 15 port limit.

2.) All users still insisting in using all USB connectors with a working port limit patch under any macOS system different from 10.14.1 are free to do it.

There are two ways to derive the fully implemented kext:

a.) Performing the port investigation under some macOS with a working port limit patch

b.) After directly creating the truncated 15-port limit patch under 10.14.1 without any port limit patch, you should have all information available to also provide a fully implemented kext. During the initial HS port investigation you always derive a complete picture of the HS port assignment. Thus, you also know the HS port assignment for those connectors to be dropped. After dropping the respective HS ports and rebooting with the resulting kext, you can also derive the SS port assignment and drop the respective SS ports. You exactly know which HS and SS ports you dropped and to which connectors they are assigned. Thus you are able to provide a fully implemented kext in addition to the truncated text, for allowing 1.) and 2.) above, if desired.

Now to your previously implemented kext above: you dropped HS1, HS2 (which should have USB Connector Number 3) and SSP2 (which should have USB Connector Number 3) assigned to one of your internal USB3.0 onboard connectors from the kext. Yet I do not understand why you still implement SSP1 (which should have USB Connector Number 3) very likely also assigned to this connector. Neither do I understand, why you claim in post #370, that HS01, HS02, HS03 and HS04 are assigned to USB2.0 connectors. But within your kext at least HS03 and HS04 have a USB Connector Number 3, i. e. they are assigned to USB3.0. If they would be USB2.0, their USB Connector Number 3 would have to be 0. Also you tried to consider in your kext USB3.1 connectors, which are not part of XHCI.
 
Last edited:
Now to your previously implemented kext above: you dropped HS1, HS2 (which should have USB Connector Number 3) and SSP2 (which should have USB Connector Number 3) assigned to one of your internal USB3.0 onboard connectors from the kext. Yet I do not understand why you state that you still implement SSP1 (which should have USB Connector Number 3) also assigned to this connector. Neither do I understand, why claim in post #370, that HS01, HS02, HS03 and HS04 are assigned to USB2.0 connectors. But within your kext at least HS03 and HS04 have a USB Connector Number 3, i. e. assigned to USB3.0. If they would be USB2.0, their USB Connector Number 3 would have to be 0. Also you tried to consider in your kext USB3.1 connectors which are not part of XHCI.

I only implemented the ports attached to XHCI as there's no limit for the others.
There's no SSP2, HS01 to HS04 are USB 2.0 only ports. If I connect a pure USB3.0 device to any of those ports, it doesn't mount.

Edit: I'm not sure I fully understand the benefits for the users who would want to modify the existing one and remove the ports they unused.
By the steps you described, they could write the Info.plist all by themselves, how would starting from mine help?
 
Last edited by a moderator:
I only implemented the ports attached to XHCI as there's no limit for the others.
There's no SSP2, HS01 to HS04 are USB 2.0 only ports. If I connect a pure USB3.0 device to any of those ports, it doesn't mount.

Then why within your kext HS03 and HS04 are defined with USBConnector Number 3 and not 0 or 255?

Note that within the initial HS port investigation, you always have to use a USB2.0 device to find the complete 14 HS port assignment. It would never work with an USB3.0 device as the XHC USB kext should not yet be part of your EFI-Folder and thus there is no SS port assignment. At this stage a USB3.0 device would not work in any of your USB connectors, independent from being USB2.0 or USB3.0. However, when connecting the USB2.0 device to all of your USB connectors, you physically know if the HS port is assigned to a USB2.0 or USB3.0 connector, and based on that physical information you assign to it a USBConnector Number of "0"/"255" or "3" within the kext. Once your kext contains the correct HS port association, you can already drop all not assigned HS ports and also all those HS ports assigned to those USB connectors you want to drop to stay within the 15 port limit, by keeping in mind that you might still also drop some of the 6 SS ports not yet considered or assigned to any connector by OSX.

Once you have such kext, you want to implement it in your EFI-Folder and reboot your system. As this kext also contains the 6 SS port definitions, now you can take a USB3.0 device and see which SS ports are assigned to which USB3.0 connectors and finally drop those SS ports from the kext, which are connected to the particular USB3.0 connector you want to drop in addition. If due to the port limit restriction, all 6 SS ports would not yet be implemented despite the fact that you already dropped some HS ports, you just initially implement 4 SS ports in your kext and perform the SS port investigation with your USB3.0 device. Once you know the assignment of the 4 SS ports you should already be able to guess the assignment of the other 2 SS ports. If the latter is not the case, just exchange 2 of the already implemented SS ports by the 2 yet missing SS ports in the kext, reboot and repeat your USB3.0 SS port discovery.

Now you have the entire information to provide a fully implemented XHC USB kext for your motherboard, but you also exactly know which HS and SS ports to drop to stay within Apple's 15 port USB limit.

Do you understand?
 
Last edited:
Then why within your kext HS03 and HS04 are defined with USBConnector Number 3 and not 0 or 255?

I'm confused.

HS03 and HS04 are marked with USBConnector 0 as they are USB 2.0, same for HS07 and HS08.
The only other USB 2.0 only port, but internal is HS14 used for the broadcom wifi/bt module.

Code:
                                <dict>
                                        <key>HS03</key>
                                        <dict>
                                                <key>UsbConnector</key>
                                                <integer>0</integer>
                                                <key>port</key>
                                                <data>AwAAAA==</data>
                                        </dict>
                                        <key>HS04</key>
                                        <dict>
                                                <key>UsbConnector</key>
                                                <integer>0</integer>
                                                <key>port</key>
                                                <data>BAAAAA==</data>
                                        </dict>
                                        <key>HS05</key>
                                        <dict>
                                                <key>UsbConnector</key>
                                                <integer>3</integer>
                                                <key>port</key>
                                                <data>BQAAAA==</data>
                                        </dict>
                                        <key>HS06</key>
                                        <dict>
                                                <key>UsbConnector</key>
                                                <integer>3</integer>
                                                <key>port</key>
                                                <data>BgAAAA==</data>
                                        </dict>
                                        <key>HS07</key>
                                        <dict>
                                                <key>UsbConnector</key>
                                                <integer>0</integer>
                                                <key>port</key>
                                                <data>BwAAAA==</data>
                                        </dict>
                                        <key>HS08</key>
                                        <dict>
                                                <key>UsbConnector</key>
                                                <integer>0</integer>
                                                <key>port</key>
                                                <data>CAAAAA==</data>
                                        </dict>

Note that within the initial HS port investigation, you always have to use a USB2.0 device to find the complete 14 HS port assignment. It would never work with an USB3.0 device as the XHC USB kext should not yet be part of your EFI-Folder and thus there is no SS port assignment. At this stage a USB3.0 device would not work in any of your USB connectors, independent from being USB2.0 or USB3.0. However, when connecting the USB2.0 device to all of your USB connectors, you physically know if the HS port is assigned to a USB2.0 or USB3.0 connector, and based on that physical information you assign to it a USBConnector Number of "0"/"255" or "3" within the kext. Once your kext contains the correct HS port association, you can already drop all not assigned HS ports and also all those HS ports assigned to those USB connectors you want to drop to stay within the 15 port limit, by keeping in mind that you might still also drop some of the 6 SS ports not yet considered or assigned to any connector by OSX.

Once you have such kext, you want to implement it in your EFI-Folder and reboot your system. As this kext also contains the 6 SS port definitions, now you can take a USB3.0 device and see which SS ports are assigned to which USB3.0 ports and finally drop those SS ports from the kext, which are connected to the particular USB3.0 connector you want to drop in addition. If due to the port limit restriction, all 6 SS ports would not yet be implemented despite the fact that you already dropped some HS ports, you just initially implement 4 SS ports in your kext and perform the SS port investigation with your USB3.0 device. Once you know the assignment of the 4 SS ports you should already be able to guess the assignment of the other 2 SS ports. If the latter is not the case, just exchange 2 of the already implemented SS ports by the 2 yet missing SS ports in the kext, reboot and repeat your USB3.0 SS port discovery.

Now you have the entire information to provide a fully implemented XHC USB kext for your motherboard, but you also exactly know which HS and SS ports to drop to stay within Apple's 15 port USB limit.

Do you understand?

You don't have to describe the process I had to follow to create this kext :)

I can add the missing HS01 and HS02, making it a non-functional USB kext if that makes you happier, hoping that the user will remember to have to drop two entries if they want things to work later.
Those are the only missing entries that are physically found with this motherboard and attach to the XHCI device.
I marked the HS09 as internal too (255) as on it is connected a ASM107x internal USB hub.

Otherwise, all ports are implemented with this kext
 
I'm confused.

HS03 and HS04 are marked with USBConnector 0 as they are USB 2.0, same for HS07 and HS08.
The only other USB 2.0 only port, but internal is HS14 used for the broadcom wifi/bt module.

Code:
                                <dict>
                                        <key>HS03</key>
                                        <dict>
                                                <key>UsbConnector</key>
                                                <integer>0</integer>
                                                <key>port</key>
                                                <data>AwAAAA==</data>
                                        </dict>
                                        <key>HS04</key>
                                        <dict>
                                                <key>UsbConnector</key>
                                                <integer>0</integer>
                                                <key>port</key>
                                                <data>BAAAAA==</data>
                                        </dict>
                                        <key>HS05</key>
                                        <dict>
                                                <key>UsbConnector</key>
                                                <integer>3</integer>
                                                <key>port</key>
                                                <data>BQAAAA==</data>
                                        </dict>
                                        <key>HS06</key>
                                        <dict>
                                                <key>UsbConnector</key>
                                                <integer>3</integer>
                                                <key>port</key>
                                                <data>BgAAAA==</data>
                                        </dict>
                                        <key>HS07</key>
                                        <dict>
                                                <key>UsbConnector</key>
                                                <integer>0</integer>
                                                <key>port</key>
                                                <data>BwAAAA==</data>
                                        </dict>
                                        <key>HS08</key>
                                        <dict>
                                                <key>UsbConnector</key>
                                                <integer>0</integer>
                                                <key>port</key>
                                                <data>CAAAAA==</data>
                                        </dict>


I can add the missing HS01 and HS02, making it a non-functional USB kext if that makes you happier, hoping that the user will remember to have to drop two entries if they want things to work later.
Those are the only missing entries that are physically found with this motherboard and attach to the XHCI device.
I marked the HS09 as internal too (255) as on it is connected a ASM107x internal USB hub.

Otherwise, all ports are implemented with this kext

I downloaded your kext at least 6 times from post #370 and six times HS03 and HS04 have been assigned to 3 instead of 0.. :)

Downloading it now the 7th time, they are correctly assigned to 0. Magics or I really screwed up something on my system.. :lol:

Thus, just to clarify, as I guess there was a basic misunderstanding from the very beginning..

You are saying that what you provided in post #370 is anyway the fully implemented kext, which does not require any truncation, as you do not need to drop any HS or SS ports to stay within the 15 port limit?

Having all USB onboard connectors of your motherboard fully working simply does not require more than 15 HS/SS ports to be implemented in the kext? :rolleyes:
 
Last edited:
I downloaded your kext at least 6 times from post #370 and six times HS03 and HS04 have been assigned to 3 instead of 0.. :)

Downloading it now the 7th time, they are correctly assigned to 0. Magics or I really screwed up something on my system.. :lol:

Thus, just to clarify, as I guess there was a basic misunderstanding from the very beginning..

You are saying that what you provided in post #370 is anyway the fully implemented kext, which does not require any truncation, as you do not need to drop any HS or SS ports to stay within the 15 port limit?

Having all USB onboard connectors of your motherboard fully working simply does not require more than 15 HS/SS ports to be implemented in the kext? :rolleyes:

Well all are supported, but one internal USB2.0 header, so 2xUSB2.0 ports.
If you look at my diagram, you can see that there are in total 17 ports on the XHCI controller. So removing support for one of the USB2.0 internal header, we're back to the supported 15.

All the other ports are on dedicated ASM USB 3.1 controller, and some of the USB 3.0 ports of the XHCI only use a single port as what you have is actually an ASM USB3.0 hub...
 
Well all are supported, but one internal USB2.0 header, so 2xUSB2.0 ports.
If you look at my diagram, you can see that there are in total 17 ports on the XHCI controller. So removing support for one of the USB2.0 internal header, we're back to the supported 15.

All the other ports are on dedicated ASM USB 3.1 controller, and some of the USB 3.0 ports of the XHCI only use a single port as what you have is actually an ASM USB3.0 hub...


Ok, gorgeous.. thus having your 15-port kext in post 370, can you please still provide the fully implemented 17 port kext in addition? The XHC USB library now contains both fully implemented and truncated 15-port kexts for respective motherboards.

Many thanks in advance!

Edit: BTW.. sorry for further bothering you with my doubts..

But there is still one inconsistency in your truncated 15-port kext, which I do not understand at all:

In your table in post 370 you say that HS09 and SSP1 are associated to a USB3.1 connector. At first place I am surprised to see a USB3.1 connector being part of XHCI. Secondly, if the latter connector would be USB3.0 Type-C, HS09 should have USBConnector number "9" and SSP1 USBConnector number "3", while in your kext HS09 has USBConnector number "255" and SSP1 has USBConnector number "255", too. The latter is simply impossible, as SS ports always have USBConnector number "3".
 
Last edited:
Ok, gorgeous.. thus having your 15-port kext in post 370, can you please still provide the fully implemented 17 port kext in addition? The XHC USB library now contains both fully implemented and truncated 15-port kexts for respective motherboards.

Here it is, with all 17 available ports

Many thanks in advance!

Edit: BTW.. sorry for further bothering you with my doubts..

But there is still one inconsistency in your truncated 15-port kext, which I do not understand at all:

In your table in post 370 you say that HS09 and SSP1 are associated to a USB3.1 connector. At first place I am surprised to see a USB3.1 connector being part of XHCI. Secondly, if the latter connector would be USB3.0 Type-C, HS09 should have USBConnector number "9" and SSP1 USBConnector number "3", while in your kext HS09 has USBConnector number "255" and SSP1 has USBConnector number "255", too. The latter is simply impossible, as SS ports always have USBConnector number "3".

This is what the ASRock manual state:
Screen Shot 2018-11-05 at 7.03.25 pm.png

So header 11 and 13 are respectively "USB 3.1 Gen1 Header (USB3_7_8)" and "USB 3.1 Gen1 Header (USB3_5_6)" (page 8 and 9 of the ASRock manual). So is it 3.0 for real or 3.1, I went with what ASRock stated it was. HS09/SSP01 is header 13. Googling ASM 107x it does seem to be a USB 3.0 hub, not 3.1, likely they got it wrong.

I couldn't connect anything to header 11, as at the time the case I was using prevented to connect anything to it. I Could now I guess, which would bump the number of possible ports to 19.

When I insert a USB 3.1 USB key in the USB port connected to header 13, it shows as 5Gbit/s and is mounted on XHCI->SSP01->ASM107->AppleUSB30Hub->Storage Media

As on HS09/SSP01 you have an ASM107 USB hub permanently connected, I was instructed to mark it as type 255 (internal).
For Header 11, at a guess it would mount on SSP02 and would be HS12...
 

Attachments

  • X299USBFull.kext.zip
    1.9 KB · Views: 62
Here it is, with all 17 available ports



This is what the ASRock manual state:
View attachment 363200

So header 11 and 13 are respectively "USB 3.1 Gen1 Header (USB3_7_8)" and "USB 3.1 Gen1 Header (USB3_5_6)" (page 8 and 9 of the ASRock manual). So is it 3.0 for real or 3.1, I went with what ASRock stated it was. HS09/SSP01 is header 13. Googling ASM 107x it does seem to be a USB 3.0 hub, not 3.1, likely they got it wrong.

I couldn't connect anything to header 11, as at the time the case I was using prevented to connect anything to it. I Could now I guess, which would bump the number of possible ports to 19.

When I insert a USB 3.1 USB key in the USB port connected to header 13, it shows as 5Gbit/s and is mounted on XHCI->SSP01->ASM107->AppleUSB30Hub->Storage Media

As on HS09/SSP01 you have an ASM107 USB hub permanently connected, I was instructed to mark it as type 255 (internal).
For Header 11, at a guess it would mount on SSP02 and would be HS12...

Well up to my knowledge, "255" means USB2.0 internal, while "0" means USB2.0 external. In ports defined such, no USB3.0 device might ever work. Also up to my knowledge, HS and SS ports assigned to USB3.0 ports always must be defined as "3". In case of a USB3.0 Type-C connector, HS can also be "9". There are no USB2.0 Type-C connectors and there are no SS ports assigned to USB2.0 connectors. All distributed XHC USB kexts so far, consider the same above requirements and work flawless such.

If there is an internal USB3.0 header 11 that is assigned to SSP2 and HS12, it must also be part of the fully implemented USB XHC kext by equally considering the above constraints. But anyway we have to be sure that this is really the correct assignment.

BTW.. it is SSP1 to SSP6 and not SSP01 to SSP06..
 
Last edited:
Status
Not open for further replies.
Back
Top