Comment désactiver (et réactiver) mon port Thunderbolt depuis le terminal?

8

J'ai eu ce problème avec mon Matrox DualHead2Go ME et mon MBP 15 "fin 2011 (exécutant 10.9.2). Lorsque les écrans sortent du sommeil, le moniteur externe ne se réveille pas.

J'ai compris que cela est dû au fait que l'unité Matrox passe dans son propre mode de veille et n'est pas réveillée par le signal de réveil du système d'exploitation.

Ce qui fonctionne, c'est de débrancher et de rebrancher le câble de coup de foudre auquel mon Matrox est connecté. Cependant, ce n'est pas idéal, car je m'inquiète de l'usure causée par le branchement / débranchement du câble plusieurs fois par jour.

Existe-t-il un moyen d'activer et de désactiver mon lecteur Thunderbolt à partir du terminal pour éviter le branchement / débranchement constant du câble Thunderbolt?

Dennis
la source
1
Note sur la réponse acceptée: les deux étaient bonnes et utiles. J'ai donné la prime à la réponse avec des informations plus spécifiques sur mon cas et accepté la réponse qui fournit la solution la plus simple (à mon humble avis).
Dennis

Réponses:

2

La communauté Hackint0sh a généreusement créé des outils de gestion kext pour tout le monde, même ceux qui possèdent et exploitent un véritable Macintosh authentique.

Vous pouvez utiliser ces outils pour expérimenter et découvrir rapidement ce qui fonctionnera pour vous. SRTools, au moins, a même des fonctions d'historique et d'annulation pour vous aider à éviter de laisser votre machine dans un état non amorçable, ce qui est possible lorsque vous vous amusez avec les extensions OS X. Vous voyez ... l'espace utilisateur est l'espace utilisateur, et l'espace noyau est l'espace noyau, et jamais les deux ne doivent se rencontrer, sauf sur la page wikipedia .

L'idée ici, et à quoi servent ces outils, est d'expérimenter. Dans le Finder, sous le menu Aller, sélectionnez "Aller au dossier ..." ou tapez ⇪ shift- ⌘ command- get tapez / Système / Bibliothèque / Extensions dans le champ d'adresse qui apparaît, et dans la fenêtre qui s'ouvre, recherchez les extensions avec "coup de foudre" "dans le nom de fichier. Utilisez l'un des utilitaires liés ci-dessus pour tester votre configuration avec le déchargement et le chargement des divers kexts, pour voir lequel, s'il y en a un, qui se révélera comme celui dont vous avez besoin. Ensuite, vous pouvez rationaliser le processus plus tard (comme avec un script bash très simple qui a été appliqué pour décharger / recharger un kext).

Une excellente ressource pour découvrir comment personnaliser votre configuration particulière est de parcourir la bibliothèque des développeurs , et, bien sûr, Wikipédia est assez souvent essentiel pour la découverte, et parfois, pour une compréhension brillante.

chillin
la source
3

Apple a plusieurs kexts pour la connexion Thunderbolt:

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

Je pense que les commandes que vous recherchez sont soit:

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

ou

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

J'ai un port Thunderbolt dans mon Mac Pro, mais actuellement aucun appareil. Je ne peux donc pas vous dire exactement quel kext fait l'affaire.

- Plus d'informations:

Thunderbolt est essentiellement PCIe tunnelé via la connexion DisplayPort. Je peux imaginer qu'il est basé sur l'extension du noyau ACPIPlatform ou IOPCIFamily. De toute façon, si vous déchargez ceux-ci, vous couperez probablement la branche sur laquelle vous êtes assis.

Apple a publié un document sur la création de pilotes Thunderbolt et sur la façon de vérifier si l'appareil est toujours en ligne ici .

Il indique également: "Dans le cas du PCI, la famille PCI d'E / S (IOPCIFamily) au sein du kit d'E / S est responsable de l'énumération du pont PCI dans la puce du contrôleur et de tout pont ou périphérique en aval."

En outre: "Les pilotes de périphérique PCI peuvent déterminer si un périphérique Thunderbolt est connecté en recherchant récursivement sur les parents dans le registre d'E / S la clé IOPCITunnelled (...)."

Jetez également un œil à la bibliothèque des développeurs .

Thunderbolt est une technologie compliquée et vous pouvez soit écrire un petit programme, soit écrire un script de lancement qui vérifie et recharge le pilote si le périphérique est hors ligne. Vous pouvez le faire manuellement au lieu de le débrancher et de le rebrancher.

rwenz3l
la source
Je suppose que c'est la sudo kext[un]load /System/Library/Extensions/IOThunderboltFamily.kextcommande, mais j'obtiens l'erreur suivante: (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).Une idée de la façon dont j'allais contourner cela?
Dennis
@Dennis je suis tombé sur le même problème en essayant de le faire. J'ai trouvé une explication sur stackexchange: stackoverflow.com/questions/13536970/… Et j'ai ensuite essayé les SRTools répertoriés par chillin et cela semble fonctionner pour mon TB-> Ethernet Adapter .. Mais je dois décharger au moins 3 kexts
rwenz3l
2
@Dennis ces Kexts ont des dépendances: "Si un autre kext chargé a une dépendance sur le kext en cours de déchargement, le déchargement échouera. Vous pouvez déterminer si un kext a des dépendants en utilisant l'outil kextstat (8)."
njboot
@Dennis Essayez-le après avoir désactivé SIP
Sayan