Jump to content

ThunderBolt Drivers


406 posts in this topic

Recommended Posts

3 minutes ago, Haive_Music said:

 

 

That definitely did something.  My Alpine Ridge now shows up as a Titan Ridge (although, that may just be cosmetic).  My PCI section is definitely different/shorter.   

 

Unfortunately, hotplug still does not work.

 

 

Here's a new IOReg (with both those .amls applied), my EFI folder, and my PCI Screenshot.   I had to remove the files in the 'APPLE' folder from my EFI.  They were huge for some reason (24mb)?

 

 

IOReg.zip

PCI.png

EFI.zip

 

You are still missing the TB NHI driver to be loaded under "PCI", although following your actual IOREG save, everything else seems now properly implemented. BIOS settings?   

 

Edited by KGP-iMacPro
Link to comment
Share on other sites

6 hours ago, KGP-iMacPro said:

 

You are still missing the TB NHI driver to be loaded under "PCI", although following your actual IOREG save, everything else seems now properly implemented. BIOS settings?   

 

 

You're right.  That's gone now too.  With the other SSDT I was messing with, the 'NHI' driver was showing up.  Now it's definitely not.

 

I think BIOS settings are okay.  I've attached some pictures of the various sections:

 

The Thunderbolt Enumeration Mode is set to 'Legacy'.  I tried to include a picture of that, but ran out of space on this post.

 

IMG_1081.JPG

IMG_1082.JPG

IMG_1083.JPG

IMG_1084.JPG

IMG_1085.JPG

Link to comment
Share on other sites

52 minutes ago, Haive_Music said:

 

You're right.  That's gone now too.  With the other SSDT I was messing with, the 'NHI' driver was showing up.  Now it's definitely not.

 

I think BIOS settings are okay.  I've attached some pictures of the various sections:

 

The Thunderbolt Enumeration Mode is set to 'Legacy'.  I tried to include a picture of that, but ran out of space on this post.

 

I don’t know.. maybe sombody with same board can help you further. You might also try a different approach if you feel like. 

 

Good luck

Edited by KGP-iMacPro
Link to comment
Share on other sites

2 hours ago, KGP-iMacPro said:

 

I don’t know.. maybe sombody with same board can help you further. You might also try a different approach if you feel like. 

 

Good luck

I appreciate you trying.  I've tried all I can think of.  Not sure why it's not working.

  • Like 1
Link to comment
Share on other sites

5 hours ago, KGP-iMacPro said:

 

There was a bug in my NHI implementation. Can you try the attached file in line with SSDT-DTPG.aml? 

SSDT-X299-TB3HP-test.aml.zip

I think we're getting closer.  That seemed to get NHI working.  Hot plug still doesn't however.  So weird.

 

Should I have the thunderbolt header cable plugged in or unplugged with this?

 

 

I do have to ask, why is it when I enable the _DSM -> XDSM patch in Clover, that most of my PCI section items disappear?

 

 

 

 

IOReg.zip

PCI.png

Link to comment
Share on other sites

1 hour ago, Haive_Music said:

I think we're getting closer.  That seemed to get NHI working.  Hot plug still doesn't however.  So weird.

 

Should I have the thunderbolt header cable plugged in or unplugged with this?

 

I do have to ask, why is it when I enable the _DSM -> XDSM patch in Clover, that most of my PCI section items disappear?

 

IOReg.zip

 

 

On both my X99 and X299 systems, I am currently employing the latest version of SSDT-X299-TB3HP.aml. 

 

With the GC-Alpine Ridge on my ASUS X99-A II, currently devices must be connected at boot to both TB/USB-C ports of the GC-Alpine Ridge, in order that the GC-Alpine Ridge and it's two ports are properly recognised by the system and the NHI and XHC5 PCI drivers are subsequently successfully implemented by macOS. Afterwards, all devices can be hot plugged. The THB-C of the GC-Alpine Ridge is connected with the ASUS X99-A II

 

With the GC-Titan Ridge on my ASUS Prime X299 Deluxe, I achieve full TB and USB-C hot plug. No need to connect any TB or USB-C devices before booting my system. TB and USB-C devices can be hot-plugged at any time (before or even after booting the system without any devices connected to the GC-Titan Ridge). Only drawback for now: black screen or likely KP on system wake with TB devices connected to the GC Titan Ridge durning system sleep. Flawless sleep/wake performance though with USB-C devices connected or with TB devices disconnected before system sleep. In case of the GC-Titan Ridge, both THB-C and USB2.0 cables are connected with the ASUS Prime X299 Deluxe. 

 

With TB devices I refer in both cases to my 5Gb Lacie Thunderbolt2 HDD. I do not have any other TB device to test with. With USB-C devices I refer to a simple USB-C stick that I use for the individual verifications.

 

No idea why you have an issue with  the _DSM -> XDSM ACPI replacement, as I also don't know which oder SSDTs you are using on your system and in which way they are implemented. 

 

Hope this clarification helps in some way...

 

Good luck,

 

KGP

Edited by KGP-iMacPro
Link to comment
Share on other sites

1 hour ago, KGP-iMacPro said:

 

On both my X99 and X299 systems, I am currently employing the latest version of SSDT-X299-TB3HP.aml. 

 

With the GC-Alpine Ridge on my ASUS X99-A II, currently devices must be connected at boot to both TB/USB-C ports of the GC-Alpine Ridge, in order that the GC-Alpine Ridge and it's two ports are properly recognised by the system and the NHI and XHC5 PCI drivers are subsequently successfully implemented by macOS. Afterwards, all devices can be hot plugged. The THB-C of the GC-Alpine Ridge is connected with the ASUS X99-A II

 

With the GC-Titan Ridge on my ASUS Prime X299 Deluxe, I achieve full TB and USB-C hot plug. No need to connect any TB or USB-C devices before booting my system. TB and USB-C devices can be hot-plugged at any time (before or even after booting the system without any devices connected to the GC-Titan Ridge). Only drawback for now: black screen or likely KP on system wake with TB devices connected to the GC Titan Ridge durning system sleep. Flawless sleep/wake performance though with USB-C devices connected or with TB devices disconnected before system sleep. In case of the GC-Titan Ridge, both THB-C and USB2.0 cables are connected with the ASUS Prime X299 Deluxe. 

 

With TB devices I refer in both cases to my 5Gb Lacie Thunderbolt2 HDD. I do not have any other TB device to test with. With USB-C devices I refer to a simple USB-C stick that I use for the individual verifications.

 

No idea why you have an issue with  the _DSM -> XDSM ACPI replacement, as I also don't know which oder SSDTs you are using on your system and in which way they are implemented. 

 

Hope this clarification helps in some way...

 

Good luck,

 

KGP

 

Cool.  Well, I think I'm just going to have to accept the fact that the computer and thunderbolt devices need to be left on 100% of the time, at least until perhaps I decide to upgrade the motherboard and jump to an i9, which I don't see any point to doing just yet.

 

Thanks for all your help and attempts at getting this to work man.  Truly appreciate it.

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

edit: There might be a problem with daisy-chaining multiple NVMe devices and then ejecting and re-inserting them. I'll need to do some more testing, but I imagine very few of you are doing that.

 

Titan Ridge hotplug is working fine over here on both ASUS X299 Sage and ASRock x299 Killer board. As far as I can tell, it doesn't need anything special compared to Alpine Ridge or the ASRock TB3 AIC card I normally use. I can use any of those three TB3 cards with my same SSDT and they all display connected TB3 devices and allow me to hotplug and daisychain.

 

I tested out the newer "no cable method" for hotplug and it works fine. My SSDT has ~1650 fewer lines of code versus KGP's, but still has working hotswap and thunderbolt detect. Some of these changes were the removal of cosmetic information, others seem to be for sleep (which I am not using), but many lines don't seem to have any real world effect. This is just my original SSDT with a few added lines.

 

I did notice some weird behavior when mixing and matching USB 3.1 devices alongside TB3 devices, but that happens with KGP's SSDT as well. Namely, if you boot with a TB3 drive and a USB 3.1 drive connected then the USB 3.1 drive will not detect until you remove it and re-insert it. An easy workaround would be to put your USB 3.1 devices in an actual USB 3.1 port instead.

 

The attached SSDT should work with any TB3 card so long as you change the ACPI address (guide in my original post on page 1) to reflect your actual motherboard address. This is set for RP05 right now and works without configuration for ASUS X299 Sage & ASRock Killer SLI/ac.

 

From my testing, only three things are really necessary for any hotswap TB3 SSDT beyond the outlining of the bare devices.

 

UPSB must contain:

            Return (Package (0x04)
            {
		"PCI-Thunderbolt", 
                One, 
                "USB Cable Attached", 
                Package (0x01)
                {
                    "False"
                }
		})

DSBO must contain:

                Return (Package (0x02)
                {
                    "PCIHotplugCapable", 
                    One
                })

 

SSDT-TB3.aml.zip

Edited by maleorderbride
  • Like 1
Link to comment
Share on other sites

On 11/14/2018 at 12:49 AM, maleorderbride said:

Titan Ridge hotplug is working fine over here on both ASUS X299 Sage and ASRock x299 Killer board. As far as I can tell, it doesn't need anything special compared to Alpine Ridge or the ASRock TB3 AIC card I normally use. I can use any of those three TB3 cards with my same SSDT and they all display connected TB3 devices and allow me to hotplug and daisychain.

 

 

Used to use KGP:s SSDT-X299-TB3HP-TTR but with that sleep didn't work without first ejecting my thunderbolt device. Otherwise I just booted to a black screen.

With your SSDT everything is working perfect and then I mean perfect. My rig is now reconnecting to my thunderbolt device after sleep with no issues at all and no more booting to black screen.:thumbsup_anim:

Cheers mate for that.

  • Like 1
Link to comment
Share on other sites

On 11/14/2018 at 12:49 AM, maleorderbride said:

Namely, if you boot with a TB3 drive and a USB 3.1 drive connected then the USB 3.1 drive will not detect until you remove it and re-insert it.

If you boot with connected USB-C device and a TB3 device both devices shows up after a boot or reboot on my rig. After wake from sleep the TB3 device shows up but the USB-C device has to be disconnected and then reconnected to show up. I have seen on my rig that the USB-C device actually shows up for a second on my screen and then disconnect immediately.

Link to comment
Share on other sites

  • 2 weeks later...
On 11/17/2018 at 8:25 AM, obus said:

With your SSDT everything is working perfect and then I mean perfect. 

 

I second this - I can successfully (for the first time) sleep my X299 build, and everything comes back - my 5K LG Ultrafine display, and all of the connected USB devices. Nice, thank you!

Link to comment
Share on other sites

1 hour ago, Tony Arnold said:

 

I second this - I can successfully (for the first time) sleep my X299 build, and everything comes back - my 5K LG Ultrafine display, and all of the connected USB devices. Nice, thank you!

 

Does not change anything in my case. Still KP on wake with the GC-Titan Ridge on Asus Prime X299 Deluxe with TB HDD connected. GC-Alpine Ridge works flawless with any of the two SSDTs. 

Link to comment
Share on other sites

On 11/14/2018 at 12:49 AM, maleorderbride said:

edit: There might be a problem with daisy-chaining multiple NVMe devices and then ejecting and re-inserting them. I'll need to do some more testing, but I imagine very few of you are doing that.

 

Titan Ridge hotplug is working fine over here on both ASUS X299 Sage and ASRock x299 Killer board. As far as I can tell, it doesn't need anything special compared to Alpine Ridge or the ASRock TB3 AIC card I normally use. I can use any of those three TB3 cards with my same SSDT and they all display connected TB3 devices and allow me to hotplug and daisychain.

 

I tested out the newer "no cable method" for hotplug and it works fine. My SSDT has ~1650 fewer lines of code versus KGP's, but still has working hotswap and thunderbolt detect. Some of these changes were the removal of cosmetic information, others seem to be for sleep (which I am not using), but many lines don't seem to have any real world effect. This is just my original SSDT with a few added lines.

 

I did notice some weird behavior when mixing and matching USB 3.1 devices alongside TB3 devices, but that happens with KGP's SSDT as well. Namely, if you boot with a TB3 drive and a USB 3.1 drive connected then the USB 3.1 drive will not detect until you remove it and re-insert it. An easy workaround would be to put your USB 3.1 devices in an actual USB 3.1 port instead.

 

The attached SSDT should work with any TB3 card so long as you change the ACPI address (guide in my original post on page 1) to reflect your actual motherboard address. This is set for RP05 right now and works without configuration for ASUS X299 Sage & ASRock Killer SLI/ac.

 

From my testing, only three things are really necessary for any hotswap TB3 SSDT beyond the outlining of the bare devices.

 

UPSB must contain:


            Return (Package (0x04)
            {
		"PCI-Thunderbolt", 
                One, 
                "USB Cable Attached", 
                Package (0x01)
                {
                    "False"
                }
		})

DSBO must contain:


                Return (Package (0x02)
                {
                    "PCIHotplugCapable", 
                    One
                })

 

SSDT-TB3.aml.zip

 

It is evident that HotPlug continues working by reducing the SSDT to basic TB and HotPlug DSM injection (by skipping 1650 lines). However, the idea of my TB SSDT was to fully implement SSDT-9.aml of the iMacPro dump to also successfully implement the local TB node and all TB drivers, which are obviously not implemented by a simple HotPlug injection. Instead of skipping 1650 lines, one should in fact add those lines, which I skipped yet from SSDT-9.aml in the current version of my TB SSDT. Crucial part here is Method_INI, which simply crashes the SSDT, as soon as implemented. 

 

No idea why you still implement 

 

                "USB Cable Attached", 
                Package (0x01)
                {
                    "False"
                }

which was just an attempt to inject "USB Cable Attached - Boolean - True/False" via DSM and obviously fails such when inspecting your IROEG.

 

I also would expect 

 

                    Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                    {
                        Return (Package (0x02)
                        {
                            0x69, 
                            0x03
                        })
                    }

 

 

instead of 

 

                    Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                    {
                        Return (Package (0x02)
                        {
                            0x69, 
                            0x04
                        })
                    }

 

In conclusion, even with the now significantly reduced HotPlug injector SSDT, wake on sleep ends up in a KP (black screen) with my TB HDD connected to the GC-Titan Ridge on the ASUS Prime X299 Deluxe. With USB-C devices connected or all TB devices disconnected, wake on sleep even works with the  GC-Titan Ridge on the ASUS Prime X299 Deluxe also with both SSDTs. 

 

In contrary, with the GC-Apline Ridge and the TBEX 3 both SSDTs work flawless without any restrictions.  

Link to comment
Share on other sites

On 11/26/2018 at 12:12 AM, KGP-iMacPro said:

It is evident that HotPlug continues working by reducing the SSDT to basic TB and HotPlug DSM injection (by skipping 1650 lines). However, the idea of my TB SSDT was to fully implement SSDT-9.aml of the iMacPro dump to also successfully implement the local TB node and all TB drivers, which are obviously not implemented by a simple HotPlug injection. Instead of skipping 1650 lines, one should in fact add those lines, which I skipped yet from SSDT-9.aml in the current version of my TB SSDT. Crucial part here is Method_INI, which simply crashes the SSDT, as soon as implemented. 

 

Quote

In conclusion, even with the now significantly reduced HotPlug injector SSDT, wake on sleep ends up in a KP (black screen) with my TB HDD connected to the GC-Titan Ridge on the ASUS Prime X299 Deluxe. With USB-C devices connected or all TB devices disconnected, wake on sleep even works with the  GC-Titan Ridge on the ASUS Prime X299 Deluxe also with both SSDTs. 

 

In contrary, with the GC-Apline Ridge and the TBEX 3 both SSDTs work flawless without any restrictions.  

 

This method isn't a real Thunderbolt implementation, so I don't see any inherent value in blindly injecting Thunderbolt APCI information if doing so has no real-world effect. I think it is worth trying certainly, but not sticking to for no reason.

 

Considering that the two posters above now have working wake from sleep with TB3 attached for the first time ever (instead of a KP as they did with your SSDT), I would think this would be a clear case of real world outcomes outweighing blind emulation. There is clearly some garbage in those 1650 lines I cut.

I'm sorry that your rig still KPs on wake from sleep with TB3 attached, but if I had to hazard a guess as to why then it is likely because of the rest of your ACPI patches and SSDTs. Try removing all of your SSDTs except ones that injects USBX, XOSI, and XCPM. If it doesn't specifically add functionality, then get rid of it.

Edited by maleorderbride
Link to comment
Share on other sites

45 minutes ago, maleorderbride said:

 

 

This method isn't a real Thunderbolt implementation, so I don't see any inherent value in blindly injecting Thunderbolt APCI information if doing so has no real-world effect. I think it is worth trying certainly, but not sticking to for no reason.

 

Considering that the two posters above now have working wake from sleep with TB3 attached for the first time ever (instead of a KP as they did with your SSDT), I would think this would be a clear case of real world outcomes outweighing blind emulation. There is clearly some garbage in those 1650 lines I cut.

I'm sorry that your rig still KPs on wake from sleep with TB3 attached, but if I had to hazard a guess as to why then it is likely because of the rest of your ACPI patches and SSDTs. Try removing all of your SSDTs except ones that injects USBX, XOSI, and XCPM. If it doesn't specifically add functionality, then get rid of it.

 

That’s nonsense, sorry. Both my systems (x99 and x299) work flawless including sleep wake. I do not face any issues wirh my SSDTs as I do not face any issue either with the Alpine Ridge or TBEX 3.

 

Demonstrate that you are able to wake your system with TB devices connected to a Titan Ridge and I will believe your else wild hypotheses.

 

BTW.. my SSDTs are used by hundreds of users who follow my guides in the other forum and not just by the two guys who posted previously above. Most people do not face any issue or are happy after receiving some help. Anyway, anybody is free to use the truncated and simplified hotplug injector SSDT you provided above by simply deleting all former attemps of implement a working TB local node and fully loaded TB bus drivers. It is obvious that hotplug else works by just implementing a few lines of code. That’s not really a new finding in my opinion. And talking about blind garbage .. everything now remaining  in your minimalistic hotplug injector SSDT originates from SSDT-9.aml of the imac pro dump as source :wink_anim: it has the same flaw with the Titan Ridge and else works flawless with the Alpine Ridge and TBEX 3 at least on my ASUS Prime X299 Deluxe mobo. 

 

Cheers, man 

Edited by KGP-iMacPro
Link to comment
Share on other sites

Ok guys.

After switching my Titan Ridge from PCIE_ 16x2 to PCIE_4x1 slot on my mobo with connected USB cable I can confirm that KGP:s SSDT-X299-TB3HP-TTR is reconnecting to my thunderbolt and USB-C device after sleep without first ejecting with no issues and no black screen. As a bonus fully loaded bus drivers and some other cosmetic stuff.

Obviously this has something to do with witch PCIE slot my TB3-card is connected. With the card connected to PCIE_16x2 only @maleordebride:s  SSDT-TB3 was reconnecting to booth USB-C and TB device (with TB2 adapter) after sleep without any need to first eject and no black screen after sleep. 

Screenshot 2018-12-05 at 20.25.53.png

Screenshot 2018-12-05 at 20.24.37.png

Screenshot 2018-12-05 at 20.23.33.png

SSDT-C422-TB3HP-RP05-TTR.aml

Edited by obus
Link to comment
Share on other sites

1 hour ago, obus said:

Ok guys.

After switching my Titan Ridge from PCIE_ 16x2 to PCIE_4x1 slot on my mobo with connected USB cable I can confirm that KGP:s SSDT-X299-TB3HP-TTR is reconnecting to my thunderbolt and USB-C device after sleep without first ejecting with no issues and no black screen. As a bonus fully loaded bus drivers and some other cosmetic stuff.

Obviously this has something to do with witch PCIE slot my TB3-card is connected. With the card connected to PCIE_16x2 only @maleordebride:s  SSDT-TB3 was reconnecting to booth USB-C and TB device (with TB2 adapter) after sleep without any need to first eject and no black screen after sleep. 

Screenshot 2018-12-05 at 20.25.53.png

Screenshot 2018-12-05 at 20.24.37.png

Screenshot 2018-12-05 at 20.23.33.png

SSDT-C422-TB3HP-RP05-TTR.aml

 

A result that is just obvious. Always one needs to adjust ACPI path and ACPI replacements in concordance with his /her mobo and slot population. 

Edited by KGP-iMacPro
Link to comment
Share on other sites

39 minutes ago, KGP-iMacPro said:

 

A result that is just obvious. Always one needs to adjust ACPI path and ACPI replacements in concordance with his /her mobo and slot population. 

No it's not so obvious!! If I use your (attached) SSDT on my PCIE_16x2 I have to eject both USB-C and TB device before sleep, otherwise I get a black screen when resuming from sleep.  

SSDT-C422-TB3HP-BR1A-TTR.aml

Edited by obus
Link to comment
Share on other sites

12 minutes ago, obus said:

No it's not so obvious!! If I use your (attached) SSDT on my PCIE_16x2 I have to eject both USB-C and TB device before sleep, otherwise I get a black screen when resuming from sleep.  

SSDT-C422-TB3HP-BR1A-TTR.aml

 

Yup and nobody knows why.. I cannot confirm your findings with the Prime X299 Deluxe and he TTR aml is outdated anyway for months 

Edited by KGP-iMacPro
Link to comment
Share on other sites

The TTR aml with adjusted ACPI path and ACPI replacements is working perfect for me on PCIE_4 slot but not on PCIE_16 slot.

 

Funny!

 

Gigabyte recommend to connect the card to a PCIE_4 slot.

Might be a reason for that? 

Edited by obus
Link to comment
Share on other sites

On 12/6/2018 at 12:08 AM, KGP-iMacPro said:

 

Yup and nobody knows why.. I cannot confirm your findings with the Prime X299 Deluxe and he TTR aml is outdated anyway for months 

Exactly the same behaviour with your new SSDT-X299-TB3HP on my mobo.

PCIE_4 working HotPlug and reconnecting both USB-C and TB device after wake from sleep with no black screen.

PCIE-16 working HotPlug but KP and black screen after wake from sleep.

@maleordebride:s SSDT is working on both slots without injecting bus drivers of course.

Edited by obus
Link to comment
Share on other sites

 Share

×
×
  • Create New...