Jump to content

ThunderBolt Drivers


406 posts in this topic

Recommended Posts

5 hours ago, LUMINEAU said:

hello the titan card Gigabyte works on macpro 2010 with mojave without windows 10 hand shake ?

Only for USB devices. Thunderbolt still requires Windows 10 to enumerate Thunderbolt devices.

Link to comment
Share on other sites

  • 4 weeks later...

!!! There seems to be good news for REAL Thunderbolt live HotPlug/HotSwap functionallity while your Hackintosh is running !!!

 

I found a solution with just 7 rows of code within any of your Thunderbolt-SSDTs (you are just using right now to make it work) to make HotPlug/HotSwap work for any Thunderbolt/USB-C device possible w/o the need for shutdown/restart of the machine.

Right now i still test it with some german guys to make sure, it runs on any motherboard (not just ASRock Z3x0 like mine). If all tests confirmed it working succesfully, i promise, i will provide you with a detailed

instruction on how to make it work.

 

And SORRY, it's still a solution for HotPlug/HotSwap with Thunderbolt, it's NOT a solution to make Thunderbolt-tree visible under Systeminformation/Thunderbolt

 

So far you will find attached an IORegistryExplorer file of my System connected with CalDigit ThunderboltStation 2 connected to CalDigit ThunderboltStation 3 on Port #1 of GC Titan Ridge PCIe Card and a LaCie Tb2-SSD connected to Port #2

I just swapped the Devices on Port #1 to Port #2 and vice versa while runnning my machine - not turning off/on before swapping. You will notice this in the IOReg file by the red parts within Thunderbolt Part at PCI0-PEG2. RED lines mean

in which position the TB-device was connected before HotSwapping it to the new position, black lines mean where it sits right now.

 

Just a little notice: TB-SSDs/TB-HDDs need to be unmounted before hotswapping - otherwise you will get error message of not correctly unmounted device  ;-)

IOReg_allTB3-Devices_I_have.zip

Edited by Mork vom Ork
information change
  • Like 2
Link to comment
Share on other sites

Want real Thunderbolt HotPlug/HotSwap on the fly while your Hackintosh is running? Well, than this might be your solution:

 

I have tested a lot of so promising Thunderbolt HotPlug SSDTs out there and none of them provide a working solution for me, so i decided to spend some time on a working solution for real Thunderbolt HotPlug/HotSwap,

where you can change your Thunderbolt devices on the fly w/o restarting your Hackintosh every time you connect/change a device. Also this tutorial will work for motherboards with onboard Thunderbolt as well as for motherboards with Thunderbold Header connector.

 

Ok, lets start how to make it work:

as in many other threads the first thing you have to know is where your Thunderbolt hardware belongs in your ACPI path. To find out where it belongs, just open "IORegistryExlorer" while bootet normaly into macOS. Than search for some entrys like this:

 

Sample of ASRock Z270 Super Carrier:

Z270_TB_default.jpg.48b81e09a672832c7accde871cb1d364.jpg

 

Sample of ASRock Z370 Professional Gaming i7:

Z370_TB_default.thumb.jpg.83df8017fdaab1af669dcf6406c4315c.jpg

 

 

Just for explanation: ASRock Z270 Super Carrier used builtin/onboard Thunderbolt 3, while ASRock Z370 Professional Gaming i7 uses Thunderbolt Header and a GC Gigabyte Titan Ridge PCIe card for Thunderbolt 3.

As you can see for the Z270 the ACPI path looks like RP01/PXSX, while ACPI path for Z370 looks like PEG2/PEGP. Rememeber these entrys for later modification when it comes to edit the Thunderbolt SSDT file.

 

Second: lets set the right BIOS settings for working Thunderbolt HotPlug/HotSwitch

Lets take a look at the default BIOS settings for the given two sample motherboards  ASRock Z270/370. The following screenshots shows their default settings for Thunderbolt when you install their latest BIOS revisions:

 

standard BIOS settings ASRock Z270 Super Carrier:

Z270_TB_default.thumb.jpg.4bbe5769fa598d5008340193620a2aba.jpg

 

 

standard BIOS settings ASRock Z370 Professional Gaming i7:

Z370_TB_default.thumb.jpg.d6258026ed2724cd3f05ff52f2cbf20b.jpg

 

These are all settings for Thunderbolt given by default from ASRock on their Motherboards. But there are even more settings for Thunderbolt within their BIOS files, which need to be "unlocked"* first. After doing so, there might be a lot of more settings, like this:

 

ASRock Z270 Super Carrier all settings unlocked:

Z270_TB_modified_1.thumb.jpg.106f4245a64a5fc4f09e4d8b6270de6f.jpg - Z270_TB_modified_2.thumb.jpg.e3101d909efcf79dba09600dd03df6ec.jpg

 

ASRock Z370 Professional Gaming i7 all settings unlocked:

Z370_TB_modified_1.thumb.jpg.c7e2408840ff972b27a7c89da2124ba9.jpg - Z370_TB_modified_2.thumb.jpg.b50662c246755a607b85cacb16a125d3.jpg

 

To make HotPlug/HotSwap working for your motherboard, just look for similar settings in your BIOS for Thunderbolt and set them as shown in the above screens. Sorry, i could only provide screenshots from ASRock machines, cause i do not have any other manufacturer.

The most importent settings you need are "Thunderbolt (TM) Force Power" (which not all boards will have) and "GPIO3 Force Pwr" (which i recognized allmost every manufacturer will have in their BIOS settings for Thunderbolt). Just set these two settings to "ENABLED". <--- otherwise HotPlug/HotSwap will not work as expected.

Also important is to switch a setting called "AIC Location" from "NB PCIE D01F0" to "NB PCIE D01F2". Notice: on Z270 Super Carrier i had to set this setting from NB PCIE D01F0 to NB PCIE D01F2 while on the Z370 Professional Gaming i7 it was set to NB PCIE D01F02 by default. If all settings set as described, save your settings and restart your Hackintosh.

 

Third: prepare an SSDT for Thunderbolt to use with your Hackintosh. Place the SSDT file in the following location:

 

EFI/CLOVER/ACPI/patched

 

Attached to this tutorial you will find a sample SSDT (SSDT-10-TbtOnPch.aml), which we use to modify for our needs. Lets take a look at its code:

Spoiler

/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20161210-64(RM)
 * Copyright (c) 2000 - 2016 Intel Corporation
 * 
 * Disassembling to non-symbolic legacy ASL operators
 *
 * Disassembly of iASLI5x7qz.aml, Sun Sep  1 21:42:58 2019
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x000002C8 (712)
 *     Revision         0x02
 *     Checksum         0x40
 *     OEM ID           "APPLE "
 *     OEM Table ID     "TbtOnPCH"
 *     OEM Revision     0x00001000 (4096)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20161210 (538317328)
 */
DefinitionBlock ("", "SSDT", 2, "APPLE ", "TbtOnPCH", 0x00001000)
{
    External (_SB_.PCI0.RP01, DeviceObj)    // (from opcode)
    External (_SB_.PCI0.RP01.PXSX, DeviceObj)    // (from opcode)
    External (_SB_.PCI0.XHC_, DeviceObj)    // (from opcode)
    External (DTGP, MethodObj)    // 5 Arguments (from opcode)
    External (PXSX, DeviceObj)    // (from opcode)

    Scope (_SB.PCI0.RP01)
    {
        Scope (PXSX)
        {
            Name (_STA, Zero)  // _STA: Status
            Method (NTFY, 2, NotSerialized)
            {
                If (LEqual (Arg0, 0x02))
                {
                    Notify (\_SB.PCI0.RP01.UPSB.DSB0.NHI0, 0x02)
                }
            }
        }

        Device (UPSB)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (0x0F)
            }

            Device (DSB0)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (0x0F)
                }

                Device (NHI0)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Name (_STR, Unicode ("Thunderbolt"))  // _STR: Description String
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        Return (0x0F)
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
                        {
                            Store (Package (0x0B)
                                {
                                    "AAPL,slot-name", 
                                    Buffer (0x09)
                                    {
                                        "Built In"
                                    }, 

                                    "device_type", 
                                    Buffer (0x19)
                                    {
                                        "Thunderbolt 3 Controller"
                                    }, 

                                    "model", 
                                    Buffer (0x1E)
                                    {
                                        "GC Titan Ridge TB3 Controller"
                                    }, 

                                    "name", 
                                    Buffer (0x0F)
                                    {
                                        "UPSB-DSB0-NHI0"
                                    }, 

                                    "power-save", 
                                    One, 
                                    Buffer (One)
                                    {
                                         0x00                                           
                                    }
                                }, Local0)
                            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                            Return (Local0)
                        }

                        Return (Zero)
                    }
                }

                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
                    {
                        Store (Package (0x06)
                            {
                                "model", 
                                Buffer (0x0A)
                                {
                                    "UPSB-DSB0"
                                }, 

                                "name", 
                                Buffer (0x0A)
                                {
                                    "UPSB-DSB0"
                                }, 

                                "PCIHotplugCapable", 
                                One
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

                    Return (Zero)
                }
            }

            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
                {
                    Store (Package (0x06)
                        {
                            "model", 
                            Buffer (0x0A)
                            {
                                "UPSB"
                            }, 

                            "name", 
                            Buffer (0x0A)
                            {
                                "UPSB"
                            }, 

                            "PCI-Thunderbolt", 
                            One
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }

                Return (Zero)
            }
        }
    }
}

 

 

Remeber your ACPI values from part one of this tutorial? These values are now needed to make this SSDT work for your personal machine. You might notice that the sample SSDT file is from my ASRock Z270 Super Carrier, cause the used ACPI values are RP01/PXSX within our sample.

So all you need to do, is to change the values RP01/PXSX used in this sample SSDT to your values. If you open the sample SSDT within "MaciASL" you will get linenumbers, so i tell you, for which line you have to edit the given values:

 

Line 23: External (_SB_.PCI0.RP01, DeviceObj)

Line 24: External (_SB_.PCI0.RP01.PXSX, DeviceObj)

Line 27: External (PXSX, DeviceObj)    // (from opcode)

Line 29: Scope (_SB.PCI0.RP01)

Line 31: Scope (PXSX)

Line 38: Notify (\_SB.PCI0.RP01.UPSB.DSB0.NHI0, 0x02)

 

After you change these values to the values you found for your ACPI path, just save the so modified SSDT to the above given path, restart your Hackintosh and enjoy full working, on the fly HotPlug/HotSwap for all your Thunderbolt devices (also working for USB-C devices connected to your Thunderbolt ports).

 

Feedback on how it works for you is welcome. I might help as long as i can.

 

Regards,

Mork vom Ork

 

* = unlocking settings within BIOS files isn't an easy job and needs a tool so called "AMIBCP". Also from my personal test i know, it only works for ASRock BIOS files. Tested with BIOS files from ASUS, GIGBYTE and MSI makes the app crash while saving a so modified BIOS file.

Also i know, that other manufacturers than ASRock like ASUS and GIGABYTE provide a lot more settings for Thunderbolt as standard settings, which are already unlocked for the enduser. I just noticed this so far on ASRock BIOS files.

SSDT-10-TbtOnPch.aml.zip

Edited by Mork vom Ork
  • Like 5
  • Thanks 1
Link to comment
Share on other sites

@Mork vom Ork what's the onboard TB3 controller on the Z270? Alpine Ridge? 

 

I have a Titan Ridge installed in my ASUS X299 rig, but it causes problems at boot unless CSM is enabled (which in turn causes other problems). I have a spare Alpine Ridge card that doesn't have the same problems, but never worked properly in terms of hot plug/sleep - I wonder if your SSDT changes would help?

Edited by Tony Arnold
Minor correction
  • Like 1
Link to comment
Share on other sites

  • 1 month later...
On 9/10/2019 at 1:41 PM, Tony Arnold said:

@Mork vom Ork what's the onboard TB3 controller on the Z270? Alpine Ridge? 

 

I have a Titan Ridge installed in my ASUS X299 rig, but it causes problems at boot unless CSM is enabled (which in turn causes other problems). I have a spare Alpine Ridge card that doesn't have the same problems, but never worked properly in terms of hot plug/sleep - I wonder if your SSDT changes would help?

 

Which BIOS version are you using on your Asus X299 motherboard?

Link to comment
Share on other sites

  • 2 weeks later...

All you good people here...I have been following this thread for some years now and I think a breakthrough has been found! Checkout this recent blog article... https://osy.gitbook.io/hac-mini-guide/details/thunderbolt-3-fix-part-3#firmware-analysis Flashing Apple's thunderbolt/TI firmware onto an Intel NUC Hades Canyon (NUC8i7HNK/NUC8i7HVK) resulting in native MacOs performance! Ingenious! Now I await for the able among you all to prepare flashing utilities for our commonly used AIC from Asus, Gigabyte, etc TB3 Alpine Ridge onwards...Cheers!!

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

On 10/28/2019 at 5:00 PM, yfc said:

All you good people here...I have been following this thread for some years now and I think a breakthrough has been found! Checkout this recent blog article... https://osy.gitbook.io/hac-mini-guide/details/thunderbolt-3-fix-part-3#firmware-analysis Flashing Apple's thunderbolt/TI firmware onto an Intel NUC Hades Canyon (NUC8i7HNK/NUC8i7HVK) resulting in native MacOs performance! Ingenious! Now I await for the able among you all to prepare flashing utilities for our commonly used AIC from Asus, Gigabyte, etc TB3 Alpine Ridge onwards...Cheers!!

 

wow. that looks nice.

 

i wonder if the Asus x299 Deluxe II  intel JHL7540 can do the same procedure...

Link to comment
Share on other sites

On 10/29/2019 at 8:28 PM, iTTT said:

 

wow. that looks nice.

 

i wonder if the Asus x299 Deluxe II  intel JHL7540 can do the same procedure...

If Apple uses it I have high hopes...although I'm just an observer...like all of you I've been following this thread with the hope of activating full native enumeration of thunderbolt devices especially Thunderbolt Networking, not to be confused with the Ethernet port, but the networking software that allows us to connect together MacOS, Windows and Linux boxes via thunderbolt(requires loading of MacOS drivers...)not possible with the current ICM(kludge because no one has yet to duplicate thunderbolt functionality in software) method offered to us on our Hackintosh. The brave soul I mentioned above who has the know-how and flashed his TB3 chip has my deepest admiration! Also I've been hoping(cos details are not clear) that the upcoming next gen Ice Lake desktop and later CPUs(with built-in Thunderbolt) will cause Apple to rewrite everything to follow Windows/Linux's way(Intel's secret wish?? :-))...that'll be the day! The Hackintosh will be fully capable then!...Cheers!

  • Like 1
Link to comment
Share on other sites

On 10/28/2019 at 2:00 AM, yfc said:

All you good people here...I have been following this thread for some years now and I think a breakthrough has been found! Checkout this recent blog article... https://osy.gitbook.io/hac-mini-guide/details/thunderbolt-3-fix-part-3#firmware-analysis Flashing Apple's thunderbolt/TI firmware onto an Intel NUC Hades Canyon (NUC8i7HNK/NUC8i7HVK) resulting in native MacOs performance! Ingenious! Now I await for the able among you all to prepare flashing utilities for our commonly used AIC from Asus, Gigabyte, etc TB3 Alpine Ridge onwards...Cheers!!

Thanks for the link. I used the info in part-2 to get the GC-ALPINE RIDGE working in my Mac Pro 2008 (at least for USB devices; I haven't gotten a Thunderbolt device working yet).

 

  • Like 3
Link to comment
Share on other sites

@yfc in your investigations, did you find any way to reliably wake TB3 devices from sleep using SSDT changes? My devices all come back up, with the exception of a my TB3 display (an LG Ultrafine 5K) — it requires me to unplug the power cord from the back of the display, and then reconnect it, at which point the display turns back on and works perfectly.

Link to comment
Share on other sites

On 11/12/2019 at 3:51 PM, Tony Arnold said:

@yfc in your investigations, did you find any way to reliably wake TB3 devices from sleep using SSDT changes? My devices all come back up, with the exception of a my TB3 display (an LG Ultrafine 5K) — it requires me to unplug the power cord from the back of the display, and then reconnect it, at which point the display turns back on and works perfectly.

I am running the older Gigabyte Designare EX X99 i7-6850k cpu with a built-in TB3 port+USB-A(red) port on High Sierra 10.13.6(no upgrade). Turning off the TB3 in BIOS allows me to force sleep/wake system with no issues after having done Rehabman's USBInjectAll routine(Both with and without the EHCx controllers). With the TB3 activated in BIOS my system can be made to hotplug after bootup(Yes! plug in(TB3 to TB2 convertor) my Promise Pegasus2 R4 after bootup...but only once!) and sleep/wake will work right only on the first sleep(after bootup) after which it breaks! It'll go to sleep but will wake up after 30secs. I understand that the Alpine Ridge USB 3.1 controller is not to be counted in the 15 port limit!  This is on https://github.com/KGP/X99-System-SSDTs/blob/master/SSDT-X99-TB3HP.aml modified for my board's ACPI path. Only way to restore proper forced sleep/wake was to edit the SSDT to remove the Alpine Ridge ports under RHUB!...am still investigating...maybe placements of the PWR/parameters in the SSDT...I dream on of one day getting it natively working :-)!

Link to comment
Share on other sites

On 11/9/2019 at 4:08 AM, maleorderbride said:

Nevermind, now to try to stitch these two FWs together...

Check this out further: https://github.com/osy86/HaC-Mini/tree/master/Thunderbolt Thunderbolt firmware patches! Beware that you could brick your TB3 controller if the wrong patches are applied! Looks like the last frontier in Hackintoshing...thunderbolt...has been conquered! I eagerly await further news from all you capable hackers on patches that will work on our TB3 AICs. This is exciting news!

Link to comment
Share on other sites

  • 4 weeks later...
  • 1 month later...
On 8/27/2019 at 5:38 AM, Mork vom Ork said:

!!! There seems to be good news for REAL Thunderbolt live HotPlug/HotSwap functionallity while your Hackintosh is running !!!

 

I found a solution with just 7 rows of code within any of your Thunderbolt-SSDTs (you are just using right now to make it work) to make HotPlug/HotSwap work for any Thunderbolt/USB-C device possible w/o the need for shutdown/restart of the machine.

Right now i still test it with some german guys to make sure, it runs on any motherboard (not just ASRock Z3x0 like mine). If all tests confirmed it working succesfully, i promise, i will provide you with a detailed

instruction on how to make it work.

 

And SORRY, it's still a solution for HotPlug/HotSwap with Thunderbolt, it's NOT a solution to make Thunderbolt-tree visible under Systeminformation/Thunderbolt

 

So far you will find attached an IORegistryExplorer file of my System connected with CalDigit ThunderboltStation 2 connected to CalDigit ThunderboltStation 3 on Port #1 of GC Titan Ridge PCIe Card and a LaCie Tb2-SSD connected to Port #2

I just swapped the Devices on Port #1 to Port #2 and vice versa while runnning my machine - not turning off/on before swapping. You will notice this in the IOReg file by the red parts within Thunderbolt Part at PCI0-PEG2. RED lines mean

in which position the TB-device was connected before HotSwapping it to the new position, black lines mean where it sits right now.

 

Just a little notice: TB-SSDs/TB-HDDs need to be unmounted before hotswapping - otherwise you will get error message of not correctly unmounted device  ;-)

IOReg_allTB3-Devices_I_have.zip

 

 

 

Is there a guide or tutorial on how to modify the asrock bios anywhere? 

 

 

Link to comment
Share on other sites

On 1/29/2020 at 2:41 AM, xmephestox said:

 

Is there a guide or tutorial on how to modify the asrock bios anywhere? 

 

I'll save you some trouble -  the AMIBCP method of unlocking the BIOS to show more options on the newer ASRock boards does not work (z390 ASRock itx BIOS 4.40).

 

What you can do is use the 0xE2 MSR unlocking process to set the parameter 'Thunderbolt Force Pwr to 0x1'.

Summary steps below

  1. Quote

     

    1. Download UEFITool and IFR-Extractor.
    2. Open your firmware image in UEFITool and find CFG Lock unicode string. If it is not present, your firmware does not support this and you should stop.
    3. Extract the Setup.bin PE32 Image Section that UEFITool found via Extract Body.
    4. Run IFR-Extractor on the extracted file (e.g. ./ifrextract Setup.bin Setup.txt).
    5. Find CFG Lock, VarStoreInfo (VarOffset/VarName): in Setup.txt and remember the offset right after it (e.g. 0x123).
    6. Download and run a modified GRUB Shell, thx to brainsucker for the binary.
    7. Enter setup_var 0x123 0x00 command, where 0x123 should be replaced by your actual offset and reboot.

     

     

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

On 2/8/2020 at 2:48 AM, xmephestox said:

Even better solution! email tech support. I just emailed asrock and said i was doing a linux box and needed those options for some proprietary hardware and they sent me a unlocked bios within 2 days. Pretty amazing support actually.

 

My request was denied. On the positive side they did respond in a day :) . Do you happen to have the same Motherboard as me ? ASRock z390 Phantom itx.

Link to comment
Share on other sites

My motherboard has Thunderbolt port. Just got cheapo Thunderbolt compatible USB C to HDMI and USB 3.0 adapter. Display works straight away and USB Drive works and hot plugs. The only thing that Thunderbolt is still not recognised, port just turned to USB 3.1 Bus as shows in Hackintool and messing my 15 port limit patch. I don't have real Thunderbolt device to do further checks.

 

Screenshot 2020-02-15 at 14.40.33.png

Link to comment
Share on other sites

 Share

×
×
  • Create New...