如何从终端禁用(并重新启用)Thunderbolt端口?


8

我的Matrox DualHead2Go ME和2011年末的15英寸MBP(运行10.9.2)一直存在此问题。当显示器从睡眠状态唤醒时,外接显示器不会重新唤醒。

我已经收集到这是因为Matrox单元进入了自己的睡眠模式,并且没有被操作系统的唤醒信号唤醒。

起作用的是拔下并重新插入与Matrox连接的雷电电缆。但是,这并不理想,因为我担心一天多次插拔电缆会造成磨损。

有什么方法可以在终端上打开和关闭雷电驱动器,从而避免雷电电缆不断​​插拔?


1
关于公认答案的注意事项:两者都很好而且很有帮助。我提供了有关我的案情的更具体信息,以给予悬赏,并接受了提供最简单(恕我直言)解决方案的答案。
丹尼斯2014年

Answers:


2

Hackint0sh社区慷慨地创建了一些kext管理工具,供所有人使用,甚至包括那些拥有和操作正版Macintosh的人。

您可以使用这些工具进行实验,并快速准确地找到适合您的方法。至少SRTools甚至具有历史记录和撤消功能,以帮助您避免使计算机处于无法引导的状态,这在搞乱OS X扩展时是可能的。您会看到... userland是userland,内核空间是内核空间,除非在Wikipedia页面上,否则twain永远不会见面。

这里的想法以及这些工具的用途是实验。在Finder中,转到菜单下,选择“转到文件夹...”或类型⇪ shift- ⌘ command- g和类型/系统/图书馆/扩展在地址栏中出现,然后在打开,查找具有“霹雳扩展窗口文件名中的“”。使用上述链接的实用程序之一,通过卸载和加载各种kext来测试您的设置,以查看哪一个(如果确实存在)将显示为您所需的那个。然后,您可以在以后简化流程(例如使用非常简单的bash脚本,该脚本已被应用来卸载/重新加载kext)。

发现如何自定义特定设置的重要资源是浏览开发人员库,当然,维基百科通常对于发现至关重要,有时甚至闪闪发光。


3

苹果为Thunderbolt-Connection提供了一些辅助功能:

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

我认为您正在寻找的命令是:

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

要么

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

我的Mac Pro中有一个Thunderbolt端口,但目前没有任何设备。因此,我无法确切告诉您哪个kext可以解决问题。

- 更多的信息 :

Thunderbolt基本上是通过DisplayPort连接建立的PCIe通道。我可以想象它是基于ACPIPlatform或IOPCIFamily内核扩展的。无论哪种方式,如果您卸载那些分支,都可能会切断您所在的分支。

Apple在此处发布了有关创建Thunderbolt驱动程序以及如何验证设备是否仍在线的文档。

它还说:“对于PCI,I / O套件中的I / O PCI系列(IOPCIFamily)负责枚举控制器芯片中的PCI桥以及任何下游桥或设备。”

此外:“ PCI设备驱动程序可以通过在I / O注册表中的父级上递归搜索密钥IOPCITunnelled(...)来确定是否已连接Thunderbolt设备。”

还可以查看开发人员库

Thunderbolt是一项复杂的技术,您可以编写一个小程序,也可以编写启动脚本来检查设备是否处于脱机状态并重新加载驱动程序。您可以手动执行此操作,而不必先拔下电源再重新插入。


我收集到的是sudo kext[un]load /System/Library/Extensions/IOThunderboltFamily.kext命令,但是出现以下错误:(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).我知道如何覆盖它吗?
丹尼斯

@Dennis尝试执行此操作时遇到了相同的问题。我找到了关于 stackexchange 的解释:stackoverflow.com/questions/13536970 / ...然后我尝试了chillin列出的SRTools,这似乎适用于我的TB->以太网适配器。.但是我必须卸载至少3个kexts
rwenz3l

2
@Dennis这些Kexts具有依赖关系:“如果另一个已加载的kext对要卸载的kext具有依赖关系,则卸载将失败。您可以使用kextstat(8)工具确定kext是否具有依赖关系。”
njboot,2014年

@Dennis禁用SIP后尝试一下
Sayan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.