• Become a Premium Member for $25/year with no ads to improve your community experience.

Asus Prime X299 Deluxe II on-board TB3 flashed, but no hot plug

PeterMack

New member
Joined
Dec 7, 2023
Messages
24
Motherboard
Asus Prime X299 Deluxe II
CPU
Intel 10980XE, 7980XE
Graphics
Radeon Vega 64, RTX 4090
OS X/macOS
14.x
Bootloader
  1. OpenCore (UEFI)
Mobile Phone
  1. iOS
Hi, I followed the tutorial in this forum to flash my TB3 rom on my Prime X299 Deluxe II motherboard. It was quite easy, there are three very similar rom chips on the back of the board, so I read out all three to see which one I had to flash. It is so conveniently placed that once you know which to flash, you can do this without removing the motherboard from the case, it is actually accessible through the back panel. I used the NVM50 image targeted for the A̶l̶p̶i̶n̶e̶ Titan Ridge 2.0 card.
It all went well, TB3 is now recognized beautifully, IP over TB works, UAD Apollo devices daisy chained to each other also work OK.
Well, there is just one issue, I can't make hot plugging to work, no matter what I do. I have to boot with the devices attached already, then it works fine. But if I remove just one connection, all my TB3 connections disappear. E.g. if my Windows PC crashes to which I am connected via IP over TB, it affects my UAD interface connections too, so in this case I need to restart my hackintosh too just to get the UAD connections back.
The interesting thing is that my Apollo Twin X can be hot plugged - but it is not directly connected to my motherboard but rather it is daisy chained from my rack Apollo's option card. If I turn it off it properly disappears from the system, and if I turn it back on it reappears again. But if I do the same with my rack Apollo, everything disappears until I reboot.
Any ideas? Should I try another flash image maybe?
 
Last edited:
Hi, I followed the tutorial in this forum to flash my TB3 rom on my Prime X299 Deluxe II motherboard. It was quite easy, there are three very similar rom chips on the back of the board, so I read out all three to see which one I had to flash. It is so conveniently placed that once you know which to flash, you can do this without removing the motherboard from the case, it is actually accessible through the back panel. I used the NVM50 image targeted for the Alpine Ridge 2.0 card.
It all went well, TB3 is now recognized beautifully, IP over TB works, UAD Apollo devices daisy chained to each other also work OK.
Well, there is just one issue, I can't make hot plugging to work, no matter what I do. I have to boot with the devices attached already, then it works fine. But if I remove just one connection, all my TB3 connections disappear. E.g. if my Windows PC crashes to which I am connected via IP over TB, it affects my UAD interface connections too, so in this case I need to restart my hackintosh too just to get the UAD connections back.
The interesting thing is that my Apollo Twin X can be hot plugged - but it is not directly connected to my motherboard but rather it is daisy chained from my rack Apollo's option card. If I turn it off it properly disappears from the system, and if I turn it back on it reappears again. But if I do the same with my rack Apollo, everything disappears until I reboot.
Any ideas? Should I try another flash image maybe?
Firstly, need to check what's the chip. Whether Alpine Ridge or Titan Ridge.

Secondly, even if you flash a custom firmware, the hotplug will not work. You still need a SSDT which will add the hotplug function.
 
Firstly, need to check what's the chip. Whether Alpine Ridge or Titan Ridge.

Secondly, even if you flash a custom firmware, the hotplug will not work. You still need a SSDT which will add the hotplug function.
It is a Titan Ridge. I think at the time when I tried to make it working for the first time, I was experimenting with different SSDT files, and I am still using the one that first worked for me. I tried the SSDT created for the GC Titan Ridge 2.0 card, but it did not work at all for the on-board chip. The one that works claims to be compatible with the Gigabyte X299X Designare 10G motherboard's on-board solution instead.
Let me go through the TB3-hotplug tutorial again, it's been some time when I last checked it and I may have missed something.
 
I have reviewed my SSDT, it had 3 Extern function definitions in it that in my opinion weren't needed, so I have removed these:

External (_SB_.PCI0.RP05.PXSX, DeviceObj)
External (_SB_.PCI0.RP05.TBSE, FieldUnitObj)
External (_SB_.PCI0.XHC_, DeviceObj)

I also removed the scope PXSX from the implementations, the other two had no further references.

After removing these three Externs, my UAD devices stopped connecting even after reboot. So I have put back PXSX, both definition and declaration. Now the behaviour is back to where it was.

My TB3 is still working just like before, but I still can't revive my silver rack Apollo after turning it off then on again. This rack unit has a TB3 option card installed, and on the front face there is a LED called "UAD Link". This LED only turns on during or at the end of booting, and once I turn the unit off and it goes off there is nothing I can do to bring the link back up again (besides rebooting).
On the other hand, my Apollo Twin X - that is daisy-chained through the silver rack Apollo - can be unplugged and plugged back in, the system recognizes it and loads the driver properly.
So it seems it is only the rack unit/option card in my rack unit with which hot plugging fails, but it works fine with my desktop unit.
 
Attach the PR Files to check further!
 

Attachments

Your HotPlug SSDT is not as per the guide.
What exactly it is in my SSDT, that goes against the guide, and that would cause hot plugging not to work?

If I remove node PXSX as conditionally suggested by the guide, my TB3 card is not even recognized. So I definitely need PXSX there.

I added the node HRUS - which seems to be the only suggestion in the guide that makes any difference.

I also had to modify the functions from
Code:
Name (_STA, Zero)
to
Code:
Method (_STA, 0, NotSerialized)
{
Return (Zero)
}

because this was the only way it worked.
It seems that this last issue was the main reason I had to search for a working SSDT for so long in the beginning, because most SSDTs in Hackindrom use the first signature, while I needed the second. I have no idea why it makes a difference, maybe you could explain it if you know this ACPI language.

I was even able to make the proper Titan Ridge 2.0 SSDT working from Hackindrom by modifying the PXSX signature as above, up until now I could only bring TB3 to life with a GB Designare SSDT I found somewhere else. Now at least I know why.

So you see, I have been through all your recommendations in your guide, on and off, all combinations, and nothing works. Removing PXSX is not an option, and it seems to me that you only recommend removing it for NPE_ nodes. But mine is RP__ node, which does have PXSX node even without an SSDT loaded. Adding HRUS did not make any difference, neither did renaming Slot-4 to built-in. Was there anything else I may have missed?
 
What exactly it is in my SSDT, that goes against the guide, and that would cause hot plugging not to work?

If I remove node PXSX as conditionally suggested by the guide, my TB3 card is not even recognized. So I definitely need PXSX there.

I added the node HRUS - which seems to be the only suggestion in the guide that makes any difference.

I also had to modify the functions from
Code:
Name (_STA, Zero)
to
Code:
Method (_STA, 0, NotSerialized)
{
Return (Zero)
}

because this was the only way it worked.
It seems that this last issue was the main reason I had to search for a working SSDT for so long in the beginning, because most SSDTs in Hackindrom use the first signature, while I needed the second. I have no idea why it makes a difference, maybe you could explain it if you know this ACPI language.

I was even able to make the proper Titan Ridge 2.0 SSDT working from Hackindrom by modifying the PXSX signature as above, up until now I could only bring TB3 to life with a GB Designare SSDT I found somewhere else. Now at least I know why.

So you see, I have been through all your recommendations in your guide, on and off, all combinations, and nothing works. Removing PXSX is not an option, and it seems to me that you only recommend removing it for NPE_ nodes. But mine is RP__ node, which does have PXSX node even without an SSDT loaded. Adding HRUS did not make any difference, neither did renaming Slot-4 to built-in. Was there anything else I may have missed?
Well, the guide says to build a SSDT via Hackindrom instead of using some random SSDT for hotplug, provided that you replace some of the values with your actual address. Hope this makes some sense 😊
 
And what should the idiot loser user build from HackinDrom if the almighty Hackindrom does not contain a suitable SSDT that matches the motherboard? Or am I the only one not finding an Asus X299 Prime Deluxe II entry in Hackindrom?

But as I told you already, I was able to make the Titan Ridge 2.0 from Hackindrom working too, but only after I changed the signatures I also mentioned above.

Btw, for my Apollo Twin X which is a single TB device, hot plugging works. But for my Apollo Quad which contains an Alpine Ridge controller on its option card, it does not.
 

Latest posts

Forum statistics

Threads
1,841
Messages
17,160
Members
26,441
Latest member
theace9