8

I've been having this problem with my Matrox DualHead2Go ME and my late 2011 15" MBP (running 10.9.2). When the displays wake from sleep, the external monitor does not re-awake.

I've gathered that this is because the Matrox unit goes into its own sleep mode and is not re-awoken by the OS's wake signal.

What does work is unplugging and plugging back in the thunderbolt cable my Matrox is connected with. This is less than ideal, however, as I worry about wear and tear from plugging/unplugging the cable multiple times a day.

Is there any way I could toggle my thunderbolt drive on and off from the terminal to avoid the constant plugging/unplugging of the thunderbolt cable?

  • 1
    Note on accepted answer: both were good and helpful. I gave the bounty to the answer with the more specific information about my case and accepted the answer that provides the easiest (imho) solution. – Dennis Jun 2 '14 at 17:40
2

The Hackint0sh Community has generously created some kext management tools for everyone to use, even those that own and operate a bone fide, genuine Macintosh.

You can use these tools to experiment and quickly discover exactly what will work for you. SRTools, at least, even has history and undo functions to help you avoid leaving your machine in an unbootable state, which is possible when messing around with OS X extensions. You see... userland is userland, and kernel space is kernel space, and never the twain shall meet, except on the wikipedia page.

The idea here, and what these tools are used for, is to experiment. In the Finder, under the Go menu, select "Go to Folder..." or type ⇪ shift-⌘ command-g and type /System/Library/Extensions in the address field that appears, and in the window that opens, look for extensions with "thunderbolt" in the filename. Use one of the above linked utilities to test your set up with unloading and loading the various kexts, to see which one, if there is indeed one, that will reveal itself as the one you need. Then you can streamline the process later (such as with a very simple bash script that has been appified to unload/reload a kext).

A great resource for discovering how to customize your particular set up is to browse through the Developer Library, and, of course, wikipedia is quite often essential for discovery, and at times, gleaming understanding.

3
+50

Apple has several kexts for the Thunderbolt-Connection :

AppleThunderboltDPAdapters.kext
AppleThunderboltEDMService.kext
AppleThunderboltIP.kext
AppleThunderboltNHI.kext
AppleThunderboltPCIAdapters.kext
AppleThunderboltUTDM.kext
IOThunderboltFamily.kext

I think the commands you are looking for are either:

sudo kextunload /System/Library/Extensions/AppleThunderboltPCIAdapters.kext
sudo kextload /System/Library/Extensions/AppleThunderboltPCIAdapters.kext

or

sudo kextunload /System/Library/Extensions/IOThunderboltFamily.kext    
sudo kextload /System/Library/Extensions/IOThunderboltFamily.kext

I have a Thunderbolt port in my Mac Pro, but currently no devices. So I can't tell you exactly which kext does the trick.

-- Further Information :

Thunderbolt is basically PCIe tunneled through the DisplayPort Connection. I can imagine that it is based on the ACPIPlatform or IOPCIFamily kernel extension. Either way if you unload those you would probably cut off the branch you're sitting on.

Apple released a document on creating Thunderbolt drivers and how you verify if the device is still online here.

It also says: "In the case of PCI, the I/O PCI family (IOPCIFamily) within the I/O Kit is responsible for enumerating the PCI bridge in the controller chip and any downstream bridges or devices."

Furthermore : "PCI device drivers can determine if a Thunderbolt device is connected by recursively searching over parents in the I/O Registry for the key IOPCITunnelled (...)."

Also have a look into the Developer Library.

Thunderbolt is a complicated technology and you could either write a little program or you can write a launch script that checks and reloads the driver if the device is offline. You could do it manually instead of unplugging it and replugging it in.

  • I gather it's the sudo kext[un]load /System/Library/Extensions/IOThunderboltFamily.kextcommand, but I'm getting the following error: (kernel) Can't remove kext com.apple.iokit.IOThunderboltFamily; services failed to terminate - 0xdc008018. Failed to unload com.apple.iokit.IOThunderboltFamily - (libkern/kext) kext is in use or retained (cannot unload). Any idea how I'd go about overriding this? – Dennis May 27 '14 at 6:03
  • @Dennis I came across the same problem when trying to do this. I found an explanation on stackexchange : stackoverflow.com/questions/13536970/… And I then tried the SRTools listed by chillin and that seems to work for my TB-> Ethernet Adapter.. But I have to unload at least 3 kexts – rwenz3l May 27 '14 at 8:27
  • 2
    @Dennis these Kexts have dependencies: "If another loaded kext has a dependency on the kext being unloaded, the unload will fail. You can determine whether a kext has dependents using the kextstat(8) tool." – njboot May 27 '14 at 11:54
  • @Dennis Try it after disabling SIP – Sayan Dec 4 '18 at 15:50

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .