Contribute
Register

A Beginner's Guide to Creating a Custom USB SSDT

OK since VIA and ASM should be covered by GenericUSBXHCI.kext i installed it, disabled the port limit patch but the issue still persist :/ I just dont know what else to do :/

I have also disabled "Legacy USB support" since there is no "Disable" switch on my mainboard in bios to disable EHCI. I'm out of ideas what else to do to get it working properly.

This is what happens in console when i reproduce the issue:

Code:
default    11:46:54.619464 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1684:PickDefaultDevice:  HALS_DefaultDeviceManager::PickDefaultDevice:          'dIn ' | picking 78: 'AppleHDAEngineInput:1B,0,1,0:4'/'imic'
default    11:46:54.619516 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1758:PickDefaultDevice:  HALS_DefaultDeviceManager::PickDefaultDevice:          'dIn ' <<<---
default    11:46:54.619579 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1604:UpdateDefaultDevice:  HALS_DefaultDeviceManager::UpdateDefaultDevice:        'dIn ' <<<---
default    11:46:54.619616 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1328:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:            'dIn ' <<<---
default    11:46:54.619713 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1329:CheckForChanges:  -----------------------------------
default    11:46:54.619768 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1251:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:            'dOut' --->>>
default    11:46:54.619818 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1591:UpdateDefaultDevice:  HALS_DefaultDeviceManager::UpdateDefaultDevice:        'dOut' --->>>
default    11:46:54.619841 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1612:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'dOut' --->>>
default    11:46:54.620061 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1642:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'dOut' | found preferred[0] 46: 'de_RME_driver_USBAudioEngine:161467C'/''
default    11:46:54.620084 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1649:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'dOut' <<<---
default    11:46:54.620101 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1604:UpdateDefaultDevice:  HALS_DefaultDeviceManager::UpdateDefaultDevice:        'dOut' <<<---
default    11:46:54.620118 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1328:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:            'dOut' <<<---
default    11:46:54.620134 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1329:CheckForChanges:  -----------------------------------
default    11:46:54.620152 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1251:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:            'sOut' --->>>
default    11:46:54.620169 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1591:UpdateDefaultDevice:  HALS_DefaultDeviceManager::UpdateDefaultDevice:        'sOut' --->>>
default    11:46:54.620186 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1612:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'sOut' --->>>
default    11:46:54.620358 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1642:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'sOut' | found preferred[0] 46: 'de_RME_driver_USBAudioEngine:161467C'/''
default    11:46:54.620380 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1649:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'sOut' <<<---
default    11:46:54.620396 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1604:UpdateDefaultDevice:  HALS_DefaultDeviceManager::UpdateDefaultDevice:        'sOut' <<<---
default    11:46:54.620412 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1328:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:            'sOut' <<<---
default    11:46:54.620428 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1329:CheckForChanges:  -----------------------------------
default    11:46:54.620446 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1251:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:            'shrd' --->>>
default    11:46:54.620463 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1591:UpdateDefaultDevice:  HALS_DefaultDeviceManager::UpdateDefaultDevice:        'shrd' --->>>
default    11:46:54.620480 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1612:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'shrd' --->>>
default    11:46:54.620658 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1642:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'shrd' | found preferred[0] 46: 'de_RME_driver_USBAudioEngine:161467C'/''
default    11:46:54.620683 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1649:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'shrd' <<<---
default    11:46:54.620700 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1604:UpdateDefaultDevice:  HALS_DefaultDeviceManager::UpdateDefaultDevice:        'shrd' <<<---
default    11:46:54.620716 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1328:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:            'shrd' <<<---
default    11:46:54.620731 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1329:CheckForChanges:  -----------------------------------
default    11:46:54.620748 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1189:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:                 <<<---
default    11:46:54.620764 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1190:CheckForChanges:  ===================================
 
I finished with the ssdt usb patching. My problem is that usb2 only (black ports) are not recognized and working. I am using this scheme for those ports:
Is there anything wrong with them?


#############

"HS09", Package() // closer to ps2 port
{
"UsbConnector", 0,
"port", Buffer() { 0x09, 0, 0, 0 },


},

"HS10", Package() // further to ps2 port
{
"UsbConnector", 0,
"port", Buffer() { 0x10, 0, 0, 0 },


},

#############

View attachment 394747
View attachment 394748

Hello.

Trying to go through this problem logically :

1) Did you Enable XHCI HandOff in your BIOS ?

2) The Port-Limit Removal Patch is likely not working for you under 10.14.3.

3) Did you check your PCI Vendor ID and PCI DeviceID and amend the template ?

4) Your motherboard has a total of 22-ports available, all controlled by the Intel chipset. Which ones did you decide not to configure?

5) Your template code for the two ports looks fine.

:)
 
Last edited:
OK since VIA and ASM should be covered by GenericUSBXHCI.kext i installed it, disabled the port limit patch but the issue still persist :/ I just dont know what else to do :/

I have also disabled "Legacy USB support" since there is no "Disable" switch on my mainboard in bios to disable EHCI. I'm out of ideas what else to do to get it working properly.

This is what happens in console when i reproduce the issue:

Code:
default    11:46:54.619464 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1684:PickDefaultDevice:  HALS_DefaultDeviceManager::PickDefaultDevice:          'dIn ' | picking 78: 'AppleHDAEngineInput:1B,0,1,0:4'/'imic'
default    11:46:54.619516 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1758:PickDefaultDevice:  HALS_DefaultDeviceManager::PickDefaultDevice:          'dIn ' <<<---
default    11:46:54.619579 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1604:UpdateDefaultDevice:  HALS_DefaultDeviceManager::UpdateDefaultDevice:        'dIn ' <<<---
default    11:46:54.619616 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1328:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:            'dIn ' <<<---
default    11:46:54.619713 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1329:CheckForChanges:  -----------------------------------
default    11:46:54.619768 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1251:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:            'dOut' --->>>
default    11:46:54.619818 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1591:UpdateDefaultDevice:  HALS_DefaultDeviceManager::UpdateDefaultDevice:        'dOut' --->>>
default    11:46:54.619841 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1612:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'dOut' --->>>
default    11:46:54.620061 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1642:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'dOut' | found preferred[0] 46: 'de_RME_driver_USBAudioEngine:161467C'/''
default    11:46:54.620084 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1649:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'dOut' <<<---
default    11:46:54.620101 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1604:UpdateDefaultDevice:  HALS_DefaultDeviceManager::UpdateDefaultDevice:        'dOut' <<<---
default    11:46:54.620118 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1328:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:            'dOut' <<<---
default    11:46:54.620134 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1329:CheckForChanges:  -----------------------------------
default    11:46:54.620152 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1251:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:            'sOut' --->>>
default    11:46:54.620169 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1591:UpdateDefaultDevice:  HALS_DefaultDeviceManager::UpdateDefaultDevice:        'sOut' --->>>
default    11:46:54.620186 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1612:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'sOut' --->>>
default    11:46:54.620358 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1642:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'sOut' | found preferred[0] 46: 'de_RME_driver_USBAudioEngine:161467C'/''
default    11:46:54.620380 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1649:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'sOut' <<<---
default    11:46:54.620396 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1604:UpdateDefaultDevice:  HALS_DefaultDeviceManager::UpdateDefaultDevice:        'sOut' <<<---
default    11:46:54.620412 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1328:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:            'sOut' <<<---
default    11:46:54.620428 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1329:CheckForChanges:  -----------------------------------
default    11:46:54.620446 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1251:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:            'shrd' --->>>
default    11:46:54.620463 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1591:UpdateDefaultDevice:  HALS_DefaultDeviceManager::UpdateDefaultDevice:        'shrd' --->>>
default    11:46:54.620480 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1612:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'shrd' --->>>
default    11:46:54.620658 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1642:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'shrd' | found preferred[0] 46: 'de_RME_driver_USBAudioEngine:161467C'/''
default    11:46:54.620683 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1649:FindPreferredDefaultDevice:  HALS_DefaultDeviceManager::FindPreferredDefaultDevice: 'shrd' <<<---
default    11:46:54.620700 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1604:UpdateDefaultDevice:  HALS_DefaultDeviceManager::UpdateDefaultDevice:        'shrd' <<<---
default    11:46:54.620716 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1328:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:            'shrd' <<<---
default    11:46:54.620731 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1329:CheckForChanges:  -----------------------------------
default    11:46:54.620748 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1189:CheckForChanges:  HALS_DefaultDeviceManager::CheckForChanges:                 <<<---
default    11:46:54.620764 +0100    coreaudiod    HALS_DefaultDeviceManager.cpp:1190:CheckForChanges:  ===================================

Hello.

So is the main problem interference on audio caused by your mouse?

EHCI is fine if that is all your motherboard offers. Just rename the controller if needed and install the kexts:

FakePCIID.kext + FakePCIID_XHCIMux.kext

(I don't have access to an MSI X99 motherboard, only the MSI User Guide. Perhaps your particular version of the BIOS is earlier/later/different etc. The MSI UG just lists the available options in section 3-10 under USB Configuration.)

Then create your USB SSDT as per the guide here or @RehabMan 's here , but note ...

The VIA and ASMedia chipsets will not appear on the EH01/2 tree. They will still be connected somewhere, probably at RP** or similar. Plugging in your USB 3.0 Hub and scrolling through the tree should pinpoint where they are.

If they are not in the XHC/EHC section then they don't count towards the 15-limit and will not be configured properly, though they will likely still work.

You have probably checked all the other X99 builds there are hereabouts. Your motherboard is great. No need to buy anything else - unless you want to! o_O


:thumbup:
 
Hello.

Trying to go through this problem logically :

1) Did you Enable XHCI HandOff in your BIOS ?

2) The Port-Limit Removal Patch is likely not working for you under 10.14.3.

3) Did you check your PCI Vendor ID and PCI DeviceID and amend the template ?

4) Your motherboard has a total of 22-ports available, all controlled by the Intel chipset. Which ones did you decide not to configure?

5) Your template code for the two ports looks fine.

:)
1, XHCI Handoff was disabled before, so I enabled it, it didn't make any change though. (should I leave it off or on?)
2, The port limit removal patch was set before. So I removed it. It also didn't make any change. Should I enable or disable it? What should port removal patch doign anyhow?
3, I only inserted PCI Device ID into the template. Where should PCI Vendor ID go? I didn't see PCI Vendor ID related thing in your guide.
4, I was trying to deal with the ports only which has connector on the backpanel and front panel of the case. I didn't deal with ports of the motherboard which I cannot connect it to anywhere on the case. Is that o.k.?

Thank you!
 
1, XHCI Handoff was disabled before, so I enabled it, it didn't make any change though. (should I leave it off or on?)
2, The port limit removal patch was set before. So I removed it. It also didn't make any change. Should I enable or disable it? What should port removal patch doign anyhow?
3, I only inserted PCI Device ID into the template. Where should PCI Vendor ID go? I didn't see PCI Vendor ID related thing in your guide.
4, I was trying to deal with the ports only which has connector on the backpanel and front panel of the case. I didn't deal with ports of the motherboard which I cannot connect it to anywhere on the case. Is that o.k.?

Thank you!

Ok :thumbup:

1) ENABLED

2) If it isn't working, remove it.

3) Check the guide again, you need both Vendor AND Device IDs.

4) Yes, that's fine.

:)
 
Ok :thumbup:

1) ENABLED

2) If it isn't working, remove it.

3) Check the guide again, you need both Vendor AND Device IDs.

4) Yes, that's fine.

:)
I did everything what you hinted in your 4 comments, but still the two usb2 only port are missing. HS09 and HS10. I attached the ssdt patching source file. Can you check it?

But in my case the most annoying thing is not the two missing usb2 ports but the lost sleep functionality. That is why I was trying to solve usb issues so desperately, but eventhough sort of finalizing ssdt patching, the sleep is still not working. Sometime rebooting instead of going to sleep sometimes rebooting instead of waking up from sleep. I think I lost the sleep functionality after upgrading form 10.14.2 to 10.14.3.
What do you think this sleep issue related to?

Thank you for help!
 

Attachments

  • SSDT-USB-macpro.dsl
    3.6 KB · Views: 120
I did everything what you hinted in your 4 comments, but still the two usb2 only port are missing. HS09 and HS10. I attached the ssdt patching source file. Can you check it?

But in my case the most annoying thing is not the two missing usb2 ports but the lost sleep functionality. That is why I was trying to solve usb issues so desperately, but eventhough sort of finalizing ssdt patching, the sleep is still not working. Sometime rebooting instead of going to sleep sometimes rebooting instead of waking up from sleep. I think I lost the sleep functionality after upgrading form 10.14.2 to 10.14.3.
What do you think this sleep issue related to?

Thank you for help!

Ok, that's good :thumbup: No problems there.

I think you should install an extra kext: "XHCI-unsupported.kext". It can be found inside this source code archive by @RehabMan : https://github.com/RehabMan/OS-X-USB-Inject-All/archive/master.zip

Also make sure you are using the latest version of USBInjectAll.kext.

:)
 
Hi @UtterDisbelief ,

thank you for the answer:

I have disabled the legacy USB in BIOS and that's all i can find there. I have the latest bios installed.

If i install the FakePCIID_XHCIMux.kext and do the discovery part of the guide, all my ports are showing in EH01/EH02 in PR01 and PR12 ports. Should i have this installed after creating the SSDT patch ?

Edit: I installed the FakePCIID_XHCIMux.kext and the audio is working properly ! However the audio interface cant be connected to VIA or AS ports on one it's not recognized at all and on second it's giving me the same issue as the intel ports without FakePCIID_XHCIMux.kext. Should i be worried or just accept the fact that i have 6 USB ports which are not usable in os x ?
 
Last edited:
Hi @UtterDisbelief ,

thank you for the answer:

I have disabled the legacy USB in BIOS and that's all i can find there. I have the latest bios installed.

If i install the FakePCIID_XHCIMux.kext and do the discovery part of the guide, all my ports are showing in EH01/EH02 in PR01 and PR12 ports. Should i have this installed after creating the SSDT patch ?

Edit: I installed the FakePCIID_XHCIMux.kext and the audio is working properly ! However the audio interface cant be connected to VIA or AS ports on one it's not recognized at all and on second it's giving me the same issue as the intel ports without FakePCIID_XHCIMux.kext. Should i be worried or just accept the fact that i have 6 USB ports which are not usable in os x ?

Good work :thumbup:

Yes, keep FakePCIID.kext and FakePCIID_XHCIMux.kext even after the patch has been created. This is what ensures your EHCI controller is recognised.

The PR01 and PR12 (RP01, RP12 ?) ports will be those on another controller besides Intel. Though which, VIA or ASMedia in your case, I can't tell from here. They should work but things like power-management probably won't. I discovered flash-drives overheating when plugged-in to similar on other motherboards. There are ways to control this but that's a more advanced topic. Remember anything attached through non-Intel ports will always be problematic for now.

Yes, I have found FakePCIID and it's other plug-ins work marvels aside from their main job :thumbup:

:)
 
Last edited:
Back
Top