3 votes

Commande de terminal pour réinitialiser les ports USB-C sur les Macs

Existe-t-il une commande terminal qui permet de réinitialiser le port USB sans avoir à débrancher et brancher le périphérique ? Il arrive que mon hub USB (HDMI, Ethernet, USB3) fonctionne mal, et la seule solution consiste à débrancher/rebrancher ou à redémarrer l'ordinateur.

Dans mon cas, il arrive que mon moniteur externe connecté par HDMI ne soit pas détecté lorsqu'il sort de sa veille. Ce qui se passe, c'est que mon Macbook Air M1 pense toujours que le moniteur externe est connecté, mais le moniteur est noir. L'écran intégré se comporte toujours comme le moniteur étendu. J'ai essayé de détecter les écrans dans les options d'affichage ou de mise à l'échelle pour essayer de forcer le système à redétecter le moniteur. La solution est toujours de redémarrer ou de débrancher le hub USB.

Il existe une application appelée "uhubctl", mais elle n'a pas fonctionné sur le port pour HDMI. J'avais des problèmes similaires lorsque j'utilisais Linux avec des hubs USB. Parfois, Ethernet ne serait pas détecté au démarrage, mais il y avait une commande de terminal qui réinitialisait le port que j'ai écrit dans un script et hot keyed. J'essaie donc de faire la même chose avec mon Mac.

3voto

Jose Chavez Points 645

Non, cette commande Terminal n'existe pas sous MacOS.

uhubctl est utilisé pour commander à un hub USB externe d'éteindre/de mettre sous tension un ou plusieurs de ses ports USB. Il ne peut pas être utilisé pour mettre sous tension/hors tension un port HDMI, ni pour mettre sous tension/hors tension le hub lui-même.

Si vous vous souvenez de la commande Terminal que vous avez utilisée dans le passé, il serait peut-être possible de trouver un équivalent MacOS pour cette commande - mais si vous n'avez aucune idée de ce que cela peut être, c'est bien sûr difficile. Le fabricant de votre station d'accueil peut y avoir ajouté toutes sortes de fonctionnalités propriétaires, mais sans savoir quelle station d'accueil vous avez, ou les détails de la commande Linux, il n'est pas possible de vous donner plus de conseils ici.

UPDATE :

Dans les commentaires, vous indiquez que vous avez utilisé cette commande sous Linux à cette fin :

echo -n "0000:00:00" | tee /sys/bus/pci/drivers/ehci_hcd/unbind

Cependant, cela ne désactive pas un port USB, mais réinitialise (désactive) l'ensemble du contrôleur USB2 - c'est-à-dire que cela tue tous les ports USB2.

Vous pouvez probablement faire quelque chose de similaire sous MacOS, mais je ne sais pas si c'est vraiment pratique. D'après la description que vous avez donnée dans votre question, vous n'utilisez pas de ports USB2 à cet endroit, mais plutôt des ports USB3. Ce n'est donc plus le contrôleur EHCI, mais plutôt le contrôleur XHCI, que vous souhaitez potentiellement réinitialiser.

Vous pourriez être en mesure de le faire en utilisant des commandes telles que :

kmutil unload -b com.apple.driver.AppleUSBXHCI
kmutil load -b com.apple.driver.AppleUSBXHCI

Selon le type de matériel que vous avez et ce que vous avez branché, il peut y avoir d'autres extensions du noyau que vous voulez décharger à l'avance. Par exemple, il peut s'agir de com.apple.driver.usb.AppleUSBXHCIPCI . Regardez le résultat de l'exécution de kextstat pour voir ce que vous avez en cours d'exécution avant de faire quoi que ce soit.

0 votes

Merci pour votre réponse. Sous Linux, j'ai utilisé la commande suivante echo -n "0000:00:00" | tee /sys/bus/pci/drivers/ehci_hcd/unbind

0 votes

Cette commande ne réinitialise pas un seul port, mais l'ensemble du contrôleur USB2.

0 votes

J'ai mis à jour la réponse avec quelque chose de similaire pour MacOS.

0voto

ReduX Points 1

Je peux confirmer que la solution UHUBCTL fonctionne pour les problèmes de Dell D6000 usb. Macbook Air M1

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X