Как отключить (и повторно включить) мой порт Thunderbolt из терминала?

8

У меня была эта проблема с моим Matrox DualHead2Go ME и моим 15-дюймовым MBP конца 2011 года (работает 10.9.2). Когда дисплеи выходят из спящего режима, внешний монитор не просыпается.

Я понял, что это потому, что устройство Matrox переходит в собственный режим ожидания и не вызывается сигналом пробуждения ОС.

Что работает, так это отключение и подключение кабеля Thunderbolt, с которым связан мой Matrox. Однако это далеко не идеально, так как я беспокоюсь об износе при подключении / отключении кабеля несколько раз в день.

Можно ли каким-либо образом включать и выключать накопитель Thunderbolt от терминала, чтобы избежать постоянного подключения / отсоединения кабеля Thunderbolt?

Деннис
источник
1
Обратите внимание на принятый ответ: оба были хорошими и полезными. Я дал вознаграждение за ответ с более конкретной информацией о моем случае и принял ответ, который обеспечивает самое простое (imho) решение.
Деннис

Ответы:

2

Сообщество Hackint0sh щедро создало некоторые инструменты управления kext, которые могут использовать все, даже те, кто владеет и управляет настоящим Macintosh.

Вы можете использовать эти инструменты, чтобы экспериментировать и быстро узнать, что именно будет работать для вас. SRTools, по крайней мере, даже имеет историю и функции отмены, чтобы помочь вам не оставлять машину в незагружаемом состоянии, что возможно при работе с расширениями OS X. Видите ли ... userland - это userland, а пространство ядра - это пространство ядра, и никогда не встречаться с ними, кроме как на странице википедии .

Идея и то, для чего используются эти инструменты, состоит в том, чтобы экспериментировать. В Finder, в меню Переход выберите «Перейти в папку ...» или тип ⇪ shift- ⌘ command- gи тип / System / Library / Extensions в адресном поле , которое появляется, и в открывшемся окне, вид расширений с «молнией "в имени файла. Используйте одну из вышеупомянутых связанных утилит, чтобы протестировать вашу установку с разгрузкой и загрузкой различных kexts, чтобы увидеть, какой из них, если он действительно есть, покажет себя как тот, который вам нужен. Затем вы можете упростить процесс позже (например, с помощью очень простого скрипта bash , который был применен для выгрузки / перезагрузки kext).

Отличным ресурсом для изучения того, как настроить вашу конкретную настройку, является просмотр Библиотеки разработчиков , и, конечно же, википедия довольно часто необходима для открытия, а порой и блестящего понимания.

Chillin
источник
3

У Apple есть несколько кексов для 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

У меня есть порт Thunderbolt в моем Mac Pro, но в настоящее время нет устройств. Так что я не могу точно сказать, какой кекст делает свое дело.

-- Дальнейшая информация :

Thunderbolt в основном PCIe туннелируется через соединение DisplayPort. Я могу представить, что он основан на расширении ядра ACPIPlatform или IOPCIFamily. В любом случае, если вы разгрузите их, вы, вероятно, отрежете ветку, на которой сидите.

Apple выпустила документ о создании драйверов Thunderbolt и о том, как проверить, находится ли устройство здесь в сети .

В нем также говорится: «В случае PCI семейство PCI I / O (IOPCIFamily) в наборе I / O отвечает за перечисление моста PCI в микросхеме контроллера и любых нисходящих мостах или устройствах».

Более того: «Драйверы устройств PCI могут определить, подключено ли устройство Thunderbolt, путем рекурсивного поиска в родительском регистре ввода-вывода ключа IOPCITunnelled (...)».

Также загляните в библиотеку разработчиков .

Thunderbolt - сложная технология, и вы можете написать небольшую программу или написать скрипт запуска, который проверяет и перезагружает драйвер, если устройство находится в автономном режиме. Вы можете сделать это вручную, а не отключать его и подключать его снова.

rwenz3l
источник
Я понимаю, что это 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).Любая идея, как бы я переопределить это?
Деннис
@ Денис Я столкнулся с той же проблемой при попытке сделать это. Я нашел объяснение для stackexchange: stackoverflow.com/questions/13536970/… И затем я попробовал SRTools, перечисленный chillin, и это, похоже, работает для моего TB-> Ethernet-адаптера. Но я должен выгрузить как минимум 3 kexts
rwenz3l
2
@ Денис, у этих Kexts есть зависимости: «Если другой загруженный kext имеет зависимость от выгружаемого kext, выгрузка завершится неудачей. Вы можете определить, есть ли у kext зависимости, используя инструмент kextstat (8)».
njboot
@Dennis Попробуйте после отключения SIP
Саян