Contribute
Register

[SUCCESS] Gigabyte Designare Z390 (Thunderbolt 3) + i7-9700K + AMD RX 580

This is a fairly common issue, but it also depends on the make/model of the external enclosure. Some Thunderbolt 3 enclosures do show up properly as external, while others do not. The functional issues with internal versus external can be:
  • Possible problems with sleep/wake behavior.
  • Possible problems with eject and re-connect (hot swap).
So please test both of these functions. If your system is able to sleep, wake, and hot-swap then you should be okay.

Casey, completely unrelated to Z390 build BUT I’ve been unable to get sleep to work correctly for some time on my current build. I don’t remember exactly when ... however, I’m thinking that the OS drive in my build is an M2 drive and shows up as external.

Could this be why my system won’t sleep?
 
Last edited:
@CaseySJ, I can't know why I had a hard time getting things going after install, but you've written a glorious, comprehensive guide that utterly simplified this re-build for me. So far, everything feels super smooth. I've migrated my Sierra user, and I'm going to start testing my studio hardware/software with the new setup.
...
Glad to hear it's up and running, and thank you for contributing to the site!

Are there any lessons from this experience that would help the broader community? For example, was it necessary to remove the FireWire card or the High Sierra drive or do anything else to finally be able to install and boot up?
 
Awesome overview! Thanks.

I really can't wait to get this setup, hopefully @sidhellman can't take a look at this and finally find out if the new LG 5k is using DP1.4 and running to its full potential.

@joevt you mentioned on the Ultrafine 5k thread that even DP1.4 can't handle 5k@60hz at 10bits (8bits+FRC). Is this still true? If yes, even if the new 5k uses DP1.4 best solution to get the display "fully working" will be to install a Titan/Alpine ridge card and get those 2x DP1.2 anyway, right?.
Yes I think there is broad interest in this.

@sidhellman @JayShay,

If you have either the old LG UltraFine 5K or the new 2019 LG UltraFine 5K, can you please run the following command in Terminal:
Code:
/System/Library/Extensions/AppleGraphicsControl.kext/Contents/MacOS/AGDCDiagnose -a > ~/Documents/AGDCDiagnose_a.txt
Credit: joevt

Purpose:
This will help us determine whether the old and new LG UltraFine 5K monitors are in fact displaying 5K video from the Designare. The command will generate a file called AGDCDiagnose_a.txt in your Documents folder. Simply upload that file.
 
Last edited:
@CaseySJ I had an interesting experience with thunderbolt today. For the hell of it I copied the thunderbolt Device Properties from an iMac 19,2 dump to my EFI and changed the the PCI path to my EX3 card location.

Previous behavior with DTDG+TBTHotplug: IOReg showed our desired DSB0, DSB1, etc... setup. No hot plug. If I restarted my UAD Apollo I would need to shut down, unplug, turn on, replug power, boot.

Behavior with this device property: No hot plug. But if I restart it reconnects. Not sure if this is a path you've already been or is helpful but I figured I'd drop it here and also on the Hot Plug Thread.
Nice to see the initiative!

I am still a bit skeptical about manually injecting device properties that are supposed to be injected by Apple's EFI driver (ThunderboltNHI.efi). Let's look at this:

We can disassemble the ThunderboltNHI.efi driver using any of several disassemblers such as Hopper. We can see that the binary EFI file is separated into code segments and text segments (just like any other binary executable file). If we look at the text segments (the green section of the horizontal bar along the top) look what we find:
Screen Shot 2019-08-13 at 8.47.40 AM.pngScreen Shot 2019-08-13 at 8.47.57 AM.png
  • tbt-scc-offset
  • tbt-options
  • pathcrumbsv2
  • pathcr
  • sccOffset
  • ThunderboltDROM
  • ThunderboltUUID
  • TBTDPLowToHigh
  • And a few others...
Your plist file is inserting the ones boldfaced above. The disassembler also produces both assembly code and C-like pseudo-code. The pseudo-code is still difficult to read, but better than nothing. Here's an example of the pseudo-code for a subroutine (or function) that injects ThunderboltDROM, ThunderboltUUID, and TBTDPLowToHigh:
Screen Shot 2019-08-13 at 8.59.19 AM.png
While some of these properties are simple data types (such as ThunderboltUUID and TBTDPLowToHigh), others are arrays of hex values such as ThunderboltDROM, pathcr, and pathcrumbsv2. The values in these arrays may not be conducive to a simple copy-and-paste.

This is just the EFI side of the equation. The other side consists of the various ACPI methods and objects in the Thunderbolt SSDT that we are unable to duplicate because our DSDT does not contain equivalencies. For example, on a MacBook Air 7,1 with Falcon Ridge Thunderbolt 2 controller, the native Thunderbolt-on-PCI SSDT references a number of GPIO registers that simply don't exist in the DSDT of the Asus X99 Deluxe II. We could try to fake them, but it's not that simple because each GPIO on a real Mac is physically tied to a circuit element, and we would have to determine if those circuit elements also exist on our motherboard and where to find them in the ACPI structure.

All of this might sound discouraging, but it is also a nice challenge. And we can make stepwise progress rather than an all-or-nothing outcome. For example, I've been able to port a subset of the ACPI methods related to Thunderbolt Power Conservation, and the boot log confirms that power conservation is enabled. I've also attempted to port huge chunks of the SSDT, but with very mixed results. A proper solution, I believe, involves both (a) EFI drivers, and (b) ACPI methods/objects.
 
Last edited:
Casey, completely unrelated to Z390 build BUT I’ve been unable to get sleep to work correctly for some time on my current build. I don’t remember exactly when ... however, I’m thinking that the OS drive in my build is an M2 drive and shows up as external.

Could this be why my system won’t sleep?
That’s quite possible. On which motherboard is this happening?

On my Asus X99 Deluxe II there is a similar problem with an NVMe SSD mounted to a PCIe Card. Fortunately, though, we have a SSDT that registers it as an Internal drive.
 
@joevt you mentioned on the Ultrafine 5k thread that even DP1.4 can't handle 5k@60hz at 10bits (8bits+FRC). Is this still true? If yes, even if the new 5k uses DP1.4 best solution to get the display "fully working" will be to install a Titan/Alpine ridge card and get those 2x DP1.2 anyway, right?.
I think so. Use SwitchResX to create a CVT-RB or CVT-RB V2 timing, take the pixel clock, and multiply by the bits per pixel. If it exceeds the max allowed by DisplayPort, then you need to reduce bits per component, or you need to reduce components per pixel (use 4:2:2 chroma sub sampling instead of 4:4:4 or RGB) or you need to enable Display Stream Compression (I don't know any displays that have DSC, except maybe TVs).

For example, 5120x2880, 938.25 MHz, 10 bpc requires 28.15 Gbps but DisplayPort 1.4 maxes out at 25.92 Gbps. 8 bpc requires 22.52 Gbps. Dual DisplayPort 1.2 is 17.28 Gbps * 2 = 34.56 Gbps. I've attached a spreadsheet I made.
 

Attachments

  • DisplayPortRates.xlsx.zip
    28.8 KB · Views: 78
Glad to hear it's up and running, and thank you for contributing to the site!

Are there any lessons from this experience that would help the broader community? For example, was it necessary to remove the FireWire card or the High Sierra drive or do anything else to finally be able to install and boot up?

I didn't end up removing the FireWire card. It's the Syba mentioned in the guide. I've used the same card in 3 audio workstation builds now, and it's always been solid as a rock. I doubt that was the cause of my troubles, but who knows? Maybe I would have saved myself some frustration.

The other PCIe card installed is an Avid HD Native card. It's for interfacing with Pro-Tools specific hardware. I say this with no particular authority, but that card has proved to be generally inert. If Pro Tools isn't running, you don't know it's there. But again, I can't say whether disconnecting it would have helped and due diligence probably means keeping it removed until the base system is going.

That said, everything got going eventually. Why the freezing and kernel panics prior to post-install? Buh. The panic reports were inconsistent and when the system would freeze after boot was unpredictable. And in the end, all of the auxiliary disks were disconnected until post-install.

I have no Thunderbolt devices to test that element at this time. I may rent a Thunderbolt audio interface to do that.
 
I think so. Use SwitchResX to create a CVT-RB or CVT-RB V2 timing, take the pixel clock, and multiply by the bits per pixel. If it exceeds the max allowed by DisplayPort, then you need to reduce bits per component, or you need to reduce components per pixel (use 4:2:2 chroma sub sampling instead of 4:4:4 or RGB) or you need to enable Display Stream Compression (I don't know any displays that have DSC, except maybe TVs).

For example, 5120x2880, 938.25 MHz, 10 bpc requires 28.15 Gbps but DisplayPort 1.4 maxes out at 25.92 Gbps. 8 bpc requires 22.52 Gbps. Dual DisplayPort 1.2 is 17.28 Gbps * 2 = 34.56 Gbps. I've attached a spreadsheet I made.
But isn’t this display 8bpc instead of the 10bpc you are calculating? 8 bits + FRC
 
But isn’t this display 8bpc instead of the 10bpc you are calculating? 8 bits + FRC
The display takes 10 bpc pixels and uses FRC to simulate 10 bits on an 8 bit panel by changing the color each frame.
You can use SwitchResX to switch between millions (8 bpc) and billions (10 bpc) of colors.
 
Hi guys,

Just updated to latest version of VirtualSMC 1.07, but system goes black at boot after the following:

busy timeout (60s): 'AppleACPICPU'

going back to VirtualSMC 1.06 works as usual

Thanks for your input!!
VirtualSMC 1.0.7 has been running quite well on my system. If you copied this kext to /Library/Extensions, did you remember to run Kext Utility to rebuild the kernel cache?
 
Back
Top