zipb Posted April 10, 2018 Share Posted April 10, 2018 50 minutes ago, maleorderbride said: Are you on the latest firmware? 21 I believe. That screenshot looks valid, but I can't see if you have PCIHotplugCapable also set as One. You say you tried several "version" of the SSDT, but did you ever follow my instructions and modify your own to fit? It's quite easy. Do so and verify with an IOreg attached. In the first place, thank you very much for your help. I really appreciate this. Yes, I am on fw21. There's several ssdt's floating around(also on the site which name I will not mention) that are versions of yours, if I compare code in maciasl. None of them works better that the other. What exactly am I supposed to adapt for my board? My TB is builtin, it's not an extra card in a PCIe slot. Best, Zip Link to comment Share on other sites More sharing options...
jya Posted April 10, 2018 Share Posted April 10, 2018 In the first place, thank you very much for your help. I really appreciate this. Yes, I am on fw21. There's several ssdt's floating around(also on the site which name I will not mention) that are versions of yours, if I compare code in maciasl. None of them works better that the other. What exactly am I supposed to adapt for my board? My TB is builtin, it's not an extra card in a PCIe slot. Best, ZipUse the first SSDT-TB3.aml attached to[mention=358090]maleorderbride[/mention] post on the first page.Thats the original and all are derived from there. You need to adapt the ACPI path for your own case. Using iojones or IORegistryExplorer, search for NHI or thunderbolt and look at the path. Modify the aml accordingly and compile 1 Link to comment Share on other sites More sharing options...
lelet Posted April 10, 2018 Share Posted April 10, 2018 25 minutes ago, maleorderbride said: How can anyone help you if they can't see what effect the SSDT is having in your system? I see your old IOreg now, but it is useless since you aren't injecting any thunderbolt information. Follow the instructions again. Post just an IOreg with the SSDT installed. Ok, I have edited the SSDT this way. But no hot plugs /* * 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 iASL0ZCA8E.aml, Tue Apr 10 19:06:43 2018 * * Original Table Header: * Signature "SSDT" * Length 0x000002A2 (674) * Revision 0x01 * Checksum 0xEB * OEM ID "Gigaby" * OEM Table ID "TB3" * OEM Revision 0x00003000 (12288) * Compiler ID "INTL" * Compiler Version 0x20161210 (538317328) */ DefinitionBlock ("", "SSDT", 1, "Gigaby", "TB3", 0x00003000) { External (_SB_.PCI0.RP05, DeviceObj) // (from opcode) External (_SB_.PCI0.RP05.PXSX, DeviceObj) // (from opcode) External (PXSX, DeviceObj) // (from opcode) Scope (\_SB.PCI0.RP05) { Scope (PXSX) { Name (_STA, Zero) // _STA: Status } Device (UPSB) { Name (_ADR, Zero) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { If (LNot (Arg2)) { Return (Buffer (One) { 0x03 }) } Return (Package (0x02) { "PCI-Thunderbolt", One }) } Name (_RMV, One) // _RMV: Removal Status Device (DSB0) { Name (_ADR, Zero) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { If (LNot (Arg2)) { Return (Buffer (One) { 0x03 }) } Return (Package (0x02) { "PCIHotplugCapable", One }) } Device (NHI0) { Name (_ADR, Zero) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { If (LNot (Arg2)) { Return (Buffer (One) { 0x03 }) } Return (Package (0x02) { "power-save", Zero }) } } } Device (DSB1) { Name (_ADR, 0x00010000) // _ADR: Address } Device (DSB2) { Name (_ADR, 0x00020000) // _ADR: Address Device (XHC2) { Name (_ADR, Zero) // _ADR: Address Device (RHUB) { Name (_ADR, Zero) // _ADR: Address Device (SSP1) { Name (_ADR, One) // _ADR: Address Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities { 0xFF, 0x09, Zero, Zero }) Name (_PLD, Package (0x01) // _PLD: Physical Location of Device { Buffer (0x10) { /* 0000 */ 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0008 */ 0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }) Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { If (LEqual (Arg2, Zero)) { Return (Buffer (One) { 0x03 }) } Return (Package (0x02) { "UsbCPortNumber", One }) } } Device (SSP2) { Name (_ADR, 0x02) // _ADR: Address Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities { 0xFF, 0x09, Zero, Zero }) Name (_PLD, Package (0x01) // _PLD: Physical Location of Device { Buffer (0x10) { /* 0000 */ 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0008 */ 0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }) Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { If (LEqual (Arg2, Zero)) { Return (Buffer (One) { 0x03 }) } Return (Package (0x02) { "UsbCPortNumber", 0x02 }) } } Device (HS01) { Name (_ADR, 0x03) // _ADR: Address Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities { 0xFF, 0x09, Zero, Zero }) Name (_PLD, Package (0x01) // _PLD: Physical Location of Device { Buffer (0x10) { /* 0000 */ 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0008 */ 0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }) } Device (HS02) { Name (_ADR, 0x04) // _ADR: Address Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities { 0xFF, 0x09, Zero, Zero }) Name (_PLD, Package (0x01) // _PLD: Physical Location of Device { Buffer (0x10) { /* 0000 */ 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0008 */ 0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }) } } } } Device (DSB3) { Name (_ADR, 0x00030000) // _ADR: Address } Device (DSB4) { Name (_ADR, 0x00040000) // _ADR: Address } } } } Did I make any mistakes? Sorry but I'm not an expert ... Here is the IOreg with the SSDT: Download Link to comment Share on other sites More sharing options...
maleorderbride Posted April 10, 2018 Share Posted April 10, 2018 IOreg says it is corrupted. Can you use the same version of IOreg you used on the previous post? I could open that. Whether or not an SSDT is "correct" is completely dependent on your motherboard, so that's why we need the IOreg with the SSDT loaded. Link to comment Share on other sites More sharing options...
lelet Posted April 10, 2018 Share Posted April 10, 2018 Sorry, I think I used version 3 instead of 2.1 as before. Here is the IOreg 2.1: Download Thanks for your help! Link to comment Share on other sites More sharing options...
jya Posted April 10, 2018 Share Posted April 10, 2018 17 minutes ago, lelet said: Sorry, I think I used version 3 instead of 2.1 as before. Here is the IOreg 2.1: Download Thanks for your help! looks good to me... Unfortunately, it's one of those case where it just doesn't work. I couldn't get it to work either except using the ASRock TB3 card with a Gigabyte x299 Gaming Pro 7... I don't think we've figured out everything about TB3 yet, it's really a hit and miss situation. What TB3 card are you using? what you have is a JHL6540, that's not what the Gigabyte card is using Link to comment Share on other sites More sharing options...
lelet Posted April 10, 2018 Share Posted April 10, 2018 (edited) 13 minutes ago, jya said: looks good to me... Unfortunately, it's one of those case where it just doesn't work. I couldn't get it to work either except using the ASRock TB3 card with a Gigabyte x299 Gaming Pro 7... I don't think we've figured out everything about TB3 yet, it's really a hit and miss situation. What TB3 card are you using? what you have is a JHL6540, that's not what the Gigabyte card is using The card is a GC-Alpine Ridge of Gigabyte and DPCIManager reports it as DSL3510. The curious thing is that the devices reconnect correctly after sleep (with and without SSDT). During sleep I can also turn them off and on again, they reconnect the same when I wake the computer. This makes me think that the line to have the hotplug is really thin... EDIT: Browsing the web I found THIS. It can be interesting? function detect_thunderbolt() { # Add Apple EFI drivers to inject device properties for Thunderbolt if [ ! -z "$(check_device_presence 8086 1547)" ]; then echo " - Intel DSL3510 Thunderbolt [8086:1547] detected, installing EFI drivers..." cp "$gRepo/efi/drivers/ThunderboltNhi.efi" "$gEFIMount/EFI/CLOVER/drivers64uefi" cp "$gRepo/efi/drivers/ThunderboltXDomainDevice.efi" "$gEFIMount/EFI/CLOVER/drivers64uefi" fi } Edited April 10, 2018 by lelet Link to comment Share on other sites More sharing options...
jya Posted April 10, 2018 Share Posted April 10, 2018 2 minutes ago, lelet said: The card is a GC-Alpine Ridge of Gigabyte and DPCIManager reports it as DSL3510. The curious thing is that the devices reconnect correctly after sleep (with and without SSDT). During sleep I can also turn them off and on again, they reconnect the same when I wake the computer. This makes me think that the line to have the hotplug is really thin... The IORegistry you've attached shows that it's a pci8086,15d3 That's the same as the iMac Pro , a JHL6540 https://pci-ids.ucw.cz/read/PC/8086/15d3 GB Alpine Ridge has been reported (and that's what GB shows on their website has a DSL6540 https://www.gigabyte.com/au/Motherboard/GC-ALPINE-RIDGE-rev-20#ov) The DSL6540 is pci8086,1578 https://pci-ids.ucw.cz/read/PC/8086/1578 Mind you, there's no much difference between the two, just a manucturing diffenrence and that Intel just EOL the DSL6540 Maybe GB updated silently their card with the new chipset Link to comment Share on other sites More sharing options...
maleorderbride Posted April 10, 2018 Share Posted April 10, 2018 14 minutes ago, jya said: looks good to me... Unfortunately, it's one of those case where it just doesn't work. I couldn't get it to work either except using the ASRock TB3 card with a Gigabyte x299 Gaming Pro 7... I don't think we've figured out everything about TB3 yet, it's really a hit and miss situation. What TB3 card are you using? what you have is a JHL6540, that's not what the Gigabyte card is using There are two version of the Gigabyte Alpine Ridge card with the same model number and name. The newer one uses JHL6540. Perhaps your TB devices are part of the equation. Do you have TB3 hard drive you can test with? Or are you using TB3->TB2 adapters here? The Apple one sucks, try the Akitio one if so. Link to comment Share on other sites More sharing options...
jya Posted April 10, 2018 Share Posted April 10, 2018 1 minute ago, maleorderbride said: There are two version of the Gigabyte Alpine Ridge card with the same model number and name. The newer one uses JHL6540. Perhaps your TB devices are part of the equation. Do you have TB3 hard drive you can test with? Or are you using TB3->TB2 adapters here? The Apple one sucks, try the Akitio one if so. The ASRock is also using the JHL6540, and I'm using the Apple TB3->TB2 adapter... So I don't think it's a chipset issue. Tomorrow I'm getting an ASRock x299 MB, I wonder if hotplug will work with that one... With my great luck, I'll find that it doesn't work Link to comment Share on other sites More sharing options...
lelet Posted April 10, 2018 Share Posted April 10, 2018 5 minutes ago, maleorderbride said: There are two version of the Gigabyte Alpine Ridge card with the same model number and name. The newer one uses JHL6540. Perhaps your TB devices are part of the equation. Do you have TB3 hard drive you can test with? Or are you using TB3->TB2 adapters here? The Apple one sucks, try the Akitio one if so. I am using the rev. 2.0 indeed, Gigabyte has probably updated it. And I'm using the Apple adapter from Thunderbolt 3 to 2, unfortunately I do not have Thunderbolt 3 devices to try. Is the information I added to my previous post useful? 16 minutes ago, lelet said: EDIT: Browsing the web I found THIS. It can be interesting? function detect_thunderbolt() { # Add Apple EFI drivers to inject device properties for Thunderbolt if [ ! -z "$(check_device_presence 8086 1547)" ]; then echo " - Intel DSL3510 Thunderbolt [8086:1547] detected, installing EFI drivers..." cp "$gRepo/efi/drivers/ThunderboltNhi.efi" "$gEFIMount/EFI/CLOVER/drivers64uefi" cp "$gRepo/efi/drivers/ThunderboltXDomainDevice.efi" "$gEFIMount/EFI/CLOVER/drivers64uefi" fi } Link to comment Share on other sites More sharing options...
zipb Posted April 10, 2018 Share Posted April 10, 2018 (edited) 3 hours ago, maleorderbride said: Are you on the latest firmware? 21 I believe. That screenshot looks valid, but I can't see if you have PCIHotplugCapable also set as One. You say you tried several "version" of the SSDT, but did you ever follow my instructions and modify your own to fit? It's quite easy. Do so and verify with an IOreg attached. I've adapted your SSDT(I only have PXSX)and rebooted. IODeviceTree:/PCI0@0/RP05@1C,4/UPSB@0/DSB0@0 -> PCIHotplugCapable = 0x1. This is right? My ethernet tb adapter hangs off IODeviceTree:/PCI0@0/RP05@1C,4/UPSB@0/DSB1@1/pci-bridge@0/pci-bridge@0/ethernet@0 which is not PCIHotplugCapable... FYI, I have 2 TB3-USB3.1 combo ports. Sorry, I got an error uploading my screenshot twice. Now there are 3 and I don't see how I can get rid of the 2 copies... Edited April 10, 2018 by zipb Link to comment Share on other sites More sharing options...
zipb Posted April 10, 2018 Share Posted April 10, 2018 Hmm. Using the adapted SSDT from the first page I just slept my hack thrice without losing my tb - ethernet device + attached audio interface, and the SSD attached to my USB3.1 port is properly reattached too... That's progress! Nice! Thank you! Log looks not too shabby either. Tons of bluetooth related stuff, but that's probably nomal advertising of services. I wonder what has changed that suddenly made it work. I will try a couple of reboots and do some more testing. 1 Link to comment Share on other sites More sharing options...
TheRacerMaster Posted April 10, 2018 Share Posted April 10, 2018 I don't know if simply adding the Thunderbolt EFI drivers will actually fix anything (that was more of a test than anything else). Besides, for Apple EFI device property injection to work, you'd also need EfiDevicePathPropertyDatabase.efi. Link to comment Share on other sites More sharing options...
123456789323 Posted April 11, 2018 Share Posted April 11, 2018 @TheRacerMaster definitely a try worth Link to comment Share on other sites More sharing options...
jya Posted April 11, 2018 Share Posted April 11, 2018 Where are those efi from? Are they even 64 bits? Sent from my SM-G950F using Tapatalk Link to comment Share on other sites More sharing options...
zipb Posted April 11, 2018 Share Posted April 11, 2018 11 hours ago, zipb said: Hmm. Using the adapted SSDT from the first page I just slept my hack thrice without losing my tb - ethernet device + attached audio interface, and the SSD attached to my USB3.1 port is properly reattached too... That's progress! Nice! Thank you! Log looks not too shabby either. Tons of bluetooth related stuff, but that's probably nomal advertising of services. I wonder what has changed that suddenly made it work. I will try a couple of reboots and do some more testing. Hot swap definitely doesn't work. Everything on the 2 TB ports(TB and USB) gets hosed if I unplug a TB device. Nothing visible in the About This Mac... PCi and Thunderbolt sections... 7 hours ago, TheRacerMaster said: I don't know if simply adding the Thunderbolt EFI drivers will actually fix anything (that was more of a test than anything else). Besides, for Apple EFI device property injection to work, you'd also need EfiDevicePathPropertyDatabase.efi. Pray tell, where do I find this efi and how does this work? More info much appreciated! Link to comment Share on other sites More sharing options...
lelet Posted April 11, 2018 Share Posted April 11, 2018 10 hours ago, TheRacerMaster said: I don't know if simply adding the Thunderbolt EFI drivers will actually fix anything (that was more of a test than anything else). Besides, for Apple EFI device property injection to work, you'd also need EfiDevicePathPropertyDatabase.efi. 3 hours ago, jya said: Where are those efi from? Are they even 64 bits? These are the two efi files: https://github.com/al3xtjames/Gigabyte-GA-Z77X-macOS-Install/blob/master/efi/drivers/ThunderboltNhi.efi https://github.com/al3xtjames/Gigabyte-GA-Z77X-macOS-Install/blob/master/efi/drivers/ThunderboltXDomainDevice.efi They are for a Gigabyte motherboard with integrated Thunderbolt DSL3510, and they probably have to be adapted, but I do not know how to modify them. Both must be placed in the folder: EFI/CLOVER/drivers64uefi Link to comment Share on other sites More sharing options...
jya Posted April 11, 2018 Share Posted April 11, 2018 48 minutes ago, lelet said: These are the two efi files: https://github.com/al3xtjames/Gigabyte-GA-Z77X-macOS-Install/blob/master/efi/drivers/ThunderboltNhi.efi https://github.com/al3xtjames/Gigabyte-GA-Z77X-macOS-Install/blob/master/efi/drivers/ThunderboltXDomainDevice.efi They are for a Gigabyte motherboard with integrated Thunderbolt DSL3510, and they probably have to be adapted, but I do not know how to modify them. Both must be placed in the folder: EFI/CLOVER/drivers64uefi you don't answer either of my question By where are they coming from, I don't mean the github path.... nor does that tell me those are 64 bits efi files Link to comment Share on other sites More sharing options...
lelet Posted April 11, 2018 Share Posted April 11, 2018 (edited) 6 hours ago, jya said: you don't answer either of my question By where are they coming from, I don't mean the github path.... nor does that tell me those are 64 bits efi files Simply because I do not know, If I knew it I would have already written it However I want to bring back a PARTIAL SUCCESS! My computer is still empty, so I can afford certain experiments. I added the two efi files to my drivers64uefi folder and... in some cases the hotplug works! To be successful, the devices must be turned on before booting (as before), but now if I turn them off and turn them on again, they often reconnect. However, everything is very unstable: - If I turn off the last device in the chain, almost all others are also disconnected; - If I open the UAD app to manage the audio interfaces, after I turn off the devices, when I turn them back on they will not reconnect anymore and the app will crash; - If I turn on the computer with the devices turned off, the hotplug does not work; And there are many other variables that I do not list. Obviously this is already a lot, considering that they should not even be compatible. However it seems that the solution is not an SSDT, but the driver. Now it would be useful to find drivers from a original machine with Thunderbolt 3. EDIT: Added IOreg with only the efi drivers loaded: IOreg efithunderboltdriver.zip Edited April 11, 2018 by lelet Link to comment Share on other sites More sharing options...
TheRacerMaster Posted April 11, 2018 Share Posted April 11, 2018 (edited) Both of those are extracted from Apple firmware updates (in that case, from iMac13,2). You probably want the drivers from a TB3 Mac if you'd like to experiment (use UEFITool, or use the attached ones from iMacPro1,1). Note that I haven't looked at them at all, so they most likely will not work without additional research! Proper Thunderbolt functionality probably requires more research regarding the NHI. goodwin_c was looking into this a while ago, but I'm not sure if anything came of it. tb-efi.zip Edited April 11, 2018 by TheRacerMaster 1 1 Link to comment Share on other sites More sharing options...
lelet Posted April 11, 2018 Share Posted April 11, 2018 False alarm, the efi drivers are not responsible. I tried to clean my system from every patch and it happens the same (by now I do not understand anything). Thanks @TheRacerMaster, but at this point the only test to do is with the efi drivers for the TB3 from an iMac18,3 or iMacPro1,1 Link to comment Share on other sites More sharing options...
jya Posted April 12, 2018 Share Posted April 12, 2018 A bit of an update.. I received the ASRock x299 Professional Gaming XE board, still using the ASRock TB3 card... Good thing on this board is that all PCI slots are hooked to the CPU PCI lanes, except for the PCI1x that is connected to the PCH. Getting the ASRock TB3 card to properly work turned out to be an absolute pain, you must fully clear the CMOS if you want the card to work once you move it... Graphic card in PCIx16_1, TB3 card in PCIx16_2: TB3 Hotplug works, USB-C doesn't work. TB3 devices plugged don't fully work. In particular the webcam, audio device, microphone and USB hub on the Apple Display screen don't work (they work in windows) same issue as I posted there: Graphic card in PCIx16_1, TB3 card in PCIx16_3: TB3 Hotplug doesn't work, USB-C doesn't work. TB3 devices plugged work fully. Unplugging/Plugging however doesn't crash/hang the machine. Graphic card in PCIx16_3, TB3 card in PCIx16_5: TB3 hotplug works, USB-C doesn't work. TB3 devices plugged work fully Good news is that while USB-C doesn't work, it doesn't hang the mac when I plug something. So at least I can charge my phone Now I have a lot of USB ports that don't work anyway, so maybe it's just a matter of getting USB to work on those other ports first. For some reasons, like the Asus Prime Deluxe, the pci12d8,400f doesn't get its driver loaded depending on the slot the card is loaded. On the Asus I had to plug the TB3 card in Slot 4, it wouldn't work fully anywhere else So the best result I've achieved is with the Gigabyte Gaming 7 pro, however the TB3 card must be in slot 4, and is wired via the PCH which is non-optimal. 1 Link to comment Share on other sites More sharing options...
zipb Posted April 12, 2018 Share Posted April 12, 2018 17 hours ago, TheRacerMaster said: Both of those are extracted from Apple firmware updates (in that case, from iMac13,2). You probably want the drivers from a TB3 Mac if you'd like to experiment (use UEFITool, or use the attached ones from iMacPro1,1). Note that I haven't looked at them at all, so they most likely will not work without additional research! Proper Thunderbolt functionality probably requires more research regarding the NHI. goodwin_c was looking into this a while ago, but I'm not sure if anything came of it. tb-efi.zip Thanks, but what am I supposed to do with this efi? Open it with what and then change what? Can someone give (a link to) an overview of what should happen exactly and where and how a driver talks to efi talks to what? This installing SSDT's and hoping they will magically fix everything is not leading to much. This is probably way over my head, but now I feel like I'm stumbling in the dark without even knowing what I am looking for. Best, Zip Link to comment Share on other sites More sharing options...
lelet Posted April 12, 2018 Share Posted April 12, 2018 As reported by @jya, probably the chipset makes some differences, but it is not the main problem. If so, on Windows it would not work. In fact, from the tests carried out, it seems a problem of how the various ACPI paths are managed. Previously I had attached the files of an iMac18,3 on purpose to make comparisons. Link to comment Share on other sites More sharing options...
Recommended Posts