Contribute
Register

USB-C Hotplug not working

Joined
Dec 28, 2012
Messages
140
Motherboard
ASRock Z270 Super Carrier
CPU
i7 6700K
Graphics
RX460 / RX480 NITRO
Mac
MacBook Pro
Mobile Phone
iOS
of cause you can have it, but currently it is configured for my personal setup. I have connected a CalDigit Thunderbolt3 Station to one of my internal TB3 ports. So the TBT3 SSDT is configured to use the Ethernet-, USB3.1- and eSATA-Ports of that TB3-Station,
and this will be the result in IORegExplorer:

All connected Thunderbolt devices will be correctly detected - but none of them shows up in SystemProfiler under "Thunderbolt" tab. Each device gets listed under their corresponding Device-TAB: Ethernet, SATA and USB. And also listed under the PCI-Devices tab:

Btw: can't set corresponding "Thunderbolt"-names for USB0 and XHC1, cause i don't know how to set:
Name (_ADR, Zero) // _ADR: Address
for "XHC1@01000000" or "USB0@00000000". If anyone is able to help, don't hesitate to post solution here.

So use it at your own risk...

SSDT-7-eGpu.aml is my configuration to get an AkitioNode eGPU connected to onbard Thunderbolt3 port.
DSDT.aml is unmodified, original DSDT from my ASRock Z270 SuperCarrier Motherboard with latest BIOS 2.20
 

Attachments

Last edited:
Joined
Mar 23, 2017
Messages
39
Motherboard
Asus Zenbook UX501VW
CPU
i7-6700HQ
Graphics
Intel HD530 at 3840x2160 resolution (disabled Nvidia 960m)
of cause you can have it, but currently it is configured for my personal setup. I have connected a CalDigit Thunderbolt3 Station to one of my internal TB3 ports. So the TBT3 SSDT is configured to use the Ethernet-, USB3.1- and eSATA-Ports of that TB3-Station,
and this will be the result in IORegExplorer:

All connected Thunderbolt devices will be correctly detected - but none of them shows up in SystemProfiler under "Thunderbolt" tab. Each device gets listed under their corresponding Device-TAB: Ethernet, SATA and USB. And also listed under the PCI-Devices tab:

Btw: can't set corresponding "Thunderbolt"-names for USB0 and XHC1, cause i don't know how to set:
Name (_ADR, Zero) // _ADR: Address
for "XHC1@01000000" or "USB0@00000000". If anyone is able to help, don't hesitate to post solution here.

So use it at your own risk...

SSDT-7-eGpu.aml is my configuration to get an AkitioNode eGPU connected to onbard Thunderbolt3 port.
DSDT.aml is unmodified, original DSDT from my ASRock Z270 SuperCarrier Motherboard with latest BIOS 2.20
Declare a new device like so:
Code:
Device (XHC1)
        {
            Name (_ADR, 0x01000000)  // _ADR: Address
/...

}
Unless I am incorrect, someone else please do correct me.

How did you find which bridge your device (how did you configure your SSDT for your AkitioNode)?
 
Joined
Jul 3, 2014
Messages
930
Motherboard
Dell XPS 9360 (KabyLake R)
CPU
Intel i7 8550U
Graphics
Intel UHD 620
Mac
MacBook, MacBook Pro
Mobile Phone
Android
Well, for what it's worth, here are some SSDTs I made a while ago in attempts to mimic the way Apple's work. None of these work 100% for hotswap (the "In_use" one has the random behavior I described).
But have you ever had the Thunderbolt ethernet devices showing up under Thunderbolt Local node?

Also got everything working with fullworking hotswap capability. Also have for every "pci-bridge"a _DSM in my SSDT. w/o all these _DSM's i won't have hotswap capabilities.
My machine has "PCI-Thunderbolt" and "PCIHotplugCapable" properties configured as per MacbookPro 14,1, but IOPCITunnelL1Enable is false on my devices. I expect that to configure the IOPCITunnelID on each main Thunderbolt node (DSBx)
 
Joined
Jun 12, 2012
Messages
351
Motherboard
Dell XPS 15 9560
CPU
i7-7700HQ
Graphics
Intel HD 630, 4K Touch
Mac
MacBook Pro
Mobile Phone
iOS
But have you ever had the Thunderbolt ethernet devices showing up under Thunderbolt Local node?
The best I got on that front was being told "No driver detected" or something to that extent (i.e. Not the usual "No hardware found" message). I have had an Ethernet device show up as "Thunderbolt@0" in the Ethernet Cards tab. There should be a screenshot at that earlier link I posted. EDIT: Or see Mork's image above.

I don't think I understand how to use your kext, btw. I tried it and it didn't work. What's the correct usage scenario?
 
Joined
Jul 3, 2014
Messages
930
Motherboard
Dell XPS 9360 (KabyLake R)
CPU
Intel i7 8550U
Graphics
Intel UHD 620
Mac
MacBook, MacBook Pro
Mobile Phone
Android
I don't think I understand how to use your kext, btw. I tried it and it didn't work. What's the correct usage scenario?
It should attach to WTBT in IOService plane. The following will show in the log:

Code:
IOElectrify: IOElectrify::init() <ptr>
IOElectrify: Version 1.0.0 starting on OS X Darwin 17.2.
IOElectrify: IOElectrify::attach() WTBT
IOElectrify: IOElectrify::detach() <ptr>
IOElectrify: IOElectrify::attach() WTBT
IOElectrify: IOElectrify::start() WTBT
IOElectrify: found method TF with guid 86ccfd48-205e-4a77-9c48-2021cbede341
IOElectrify: setPowerState 2
IOElectrify: --> awake(2)
IOElectrify: found method TF with guid 86ccfd48-205e-4a77-9c48-2021cbede341
IOElectrify: Calling method WMTF
IOElectrify: Thunderbolt force-power: ON.
Note that both the <name> and <_UID> properties of WTBT need to match your configuration in Info.plist.

Another question though: Has anyone managed to power up their USB-C or Thunderbolt without having a device plugged at boot?
 
Last edited:
Joined
Nov 11, 2013
Messages
31
Motherboard
HP ZBook G2 15 - Clover
CPU
i7-4910MQ/HM87
Graphics
AMD FirePro M5100/Intel HD 4600,1920x1080
of cause you can have it, but currently it is configured for my personal setup. I have connected a CalDigit Thunderbolt3 Station to one of my internal TB3 ports. So the TBT3 SSDT is configured to use the Ethernet-, USB3.1- and eSATA-Ports of that TB3-Station,
and this will be the result in IORegExplorer:

All connected Thunderbolt devices will be correctly detected - but none of them shows up in SystemProfiler under "Thunderbolt" tab. Each device gets listed under their corresponding Device-TAB: Ethernet, SATA and USB. And also listed under the PCI-Devices tab:

Btw: can't set corresponding "Thunderbolt"-names for USB0 and XHC1, cause i don't know how to set:
Name (_ADR, Zero) // _ADR: Address
for "XHC1@01000000" or "USB0@00000000". If anyone is able to help, don't hesitate to post solution here.

So use it at your own risk...

SSDT-7-eGpu.aml is my configuration to get an AkitioNode eGPU connected to onbard Thunderbolt3 port.
DSDT.aml is unmodified, original DSDT from my ASRock Z270 SuperCarrier Motherboard with latest BIOS 2.20
Hi, I use your ssdt, but the slot it shows as "airport" not the "thunderbolt"

do I missing something?

thank you
 

Attachments

Joined
Dec 28, 2012
Messages
140
Motherboard
ASRock Z270 Super Carrier
CPU
i7 6700K
Graphics
RX460 / RX480 NITRO
Mac
MacBook Pro
Mobile Phone
iOS
Hi, I use your ssdt, but the slot it shows as "airport" not the "thunderbolt"

do I missing something?
To get detailed help, i need an IORegistryExplorer Output of your Thunderbolt Implementation, so i can guess whats going wrong for you. Please be so kind and attach one here, so i can take a look into it.
 
Joined
Jan 4, 2013
Messages
112
Motherboard
Alienware 17 R4
CPU
i7-7700HQ
Graphics
GTX 1060, HD630
To get detailed help, i need an IORegistryExplorer Output of your Thunderbolt Implementation, so i can guess whats going wrong for you. Please be so kind and attach one here, so i can take a look into it.
My TB devices are working good before sleep.But after wake from sleep the TB devices are totally dead until next reboot.
I've packed all ssdts & ioreg below.Any help will be appreciated.
 

Attachments

Joined
Nov 11, 2013
Messages
31
Motherboard
HP ZBook G2 15 - Clover
CPU
i7-4910MQ/HM87
Graphics
AMD FirePro M5100/Intel HD 4600,1920x1080
To get detailed help, i need an IORegistryExplorer Output of your Thunderbolt Implementation, so i can guess whats going wrong for you. Please be so kind and attach one here, so i can take a look into it.
Here you are

Thank you
 

Attachments

Joined
Jul 3, 2014
Messages
930
Motherboard
Dell XPS 9360 (KabyLake R)
CPU
Intel i7 8550U
Graphics
Intel UHD 620
Mac
MacBook, MacBook Pro
Mobile Phone
Android
As we all know there are 3 Thunderbolt drivers in the AppleThunderboltNHI package:

  • AppleThunderboltNHI
  • AppleThunderboltNHIType2
  • AppleThunderboltNHIType3
The only one we are interested in is AppleThunderboltNHIType3, the USB-C Thunderbolt 3 driver.
All 3 drivers interact with ACPI methods to a certain extent. This might have to do with the Thunderbolt driver not showing expected results.

Going over the AppleThunderboltNHIType3 driver, the following ACPI interactions can be located:

Code:
// int64 AppleThunderboltNHIType3::setupPowerSavings(AppleThunderboltNHIType3 *this)
// int64 AppleThunderboltNHIType3::enablePower(bool)
Method (RTPC, 1, Serialized)
{
    \RMDT.P2("RP01.PXSX.DSB0.NHI0.RTPC(): ", Arg0)
}

// int64 AppleThunderboltNHIType3::setUSBMode(bool)
// int64 AppleThunderboltNHIType3::setupPowerSavings(AppleThunderboltNHIType3 *this)
Method (MUST, 1, Serialized)
{
    \RMDT.P2("RP01.PXSX.DSB0.NHI0.MUST(): ", Arg0)
}

// int64 AppleThunderboltNHIType3::setupPowerSavings(AppleThunderboltNHIType3 *this)
// int64 AppleThunderboltNHIType3::platformReset(int)
Method (XRST, 1, Serialized)
{
    \RMDT.P2("RP01.PXSX.DSB0.NHI0.XRST(): ", Arg0)
}

// int64 AppleThunderboltNHIType3::prePCIWake()
Method (TRPE, 2, Serialized)
{
    \RMDT.P3("RP01.PXSX.DSB0.NHI0.TRPE(): ", Arg0, Arg1)
}

// int64 AppleThunderboltNHIType3::lateSleep()
Method (SXFP, 1, Serialized)
{
    \RMDT.P2("RP01.PXSX.DSB0.NHI0.SXFP(): ", Arg0)
}

// int64 AppleThunderboltNHIType3::setupJTAG()
// Missing in MacBook14,1 -- No parameters
Method (JCNT, 0, Serialized)
{
    \RMDT.PUSH("RP01.PXSX.DSB0.NHI0.JCNT()")
}

// int64 AppleThunderboltNHIType3::setTMS(unsigned __int8, bool)
// Missing in MacBook14,1 -- 2 parameters (int bool)
Method (JTMS, 2, Serialized)
{
    \RMDT.P3("RP01.PXSX.DSB0.NHI0.JTMS(): ", Arg0, Arg1)
}

// int64 AppleThunderboltNHIType3::setTCK(bool)
// Missing in MacBook14,1 -- 1 parameters (bool)
Method (JTCK, 1, Serialized)
{
    \RMDT.P2("RP01.PXSX.DSB0.NHI0.JTCK(): ", Arg0)
}

// int64 AppleThunderboltNHIType3::setTDI(bool)
// Missing in MacBook14,1 -- 1 parameters (bool)
Method (JTDI, 1, Serialized)
{
    \RMDT.P2("RP01.PXSX.DSB0.NHI0.JTDI(): ", Arg0)
}

// int64 AppleThunderboltNHIType3::getTDO(bool *)
// Missing in MacBook14,1 -- 1 parameters (bool)
Method (JTDO, 0, Serialized)
{
    \RMDT.PUSH("RP01.PXSX.DSB0.NHI0.JTDO()")
}
The minimal set to be possibly implemented (match between AppleThunderboltNHIType3 and MacBookPro14,1 DSDT) would be:
  • RTPC
  • MUST
  • XRST
  • TPRE
  • SXFP
I'll continue seeing how this interaction affects the AppleIntelThunderboltNHI driver.
 
Top