Ich muss die USB-Stromversorgung mithilfe eines Skripts oder einer Software aus- und wieder einschalten. Idealerweise sollte es möglich sein, jeden Port separat ein- und auszuschalten, aber auch das gleichzeitige Aus- und Einschalten aller Ports ist ausreichend. Die Maschine, die ich verwende, ist Mac Mini. Hat jemand eine Lösung dafür?
Mit USB-Strom meine ich Vbus, die 5V/500mA-Verbindung. Ich verstehe, dass die Datenverbindung auch abgeschaltet wird und es ist in Ordnung, aber es reicht mir nicht, dass die Datenverbindung abgeschaltet ist und Vbus weiterhin mit Strom versorgt wird. Dieser Bedarf ergibt sich aus der Notwendigkeit, Mobiltelefone für automatische Tests ständig verbunden zu halten. Einige Geräte-/Akku-Kombinationen mögen es nicht, ständig angeschlossen zu sein, und die Akkus schwellen in weniger als einem Jahr an.
Ich erkenne an, dass es mehrere Variationen dieser Frage gibt. Bisher keine Lösung, die ich verwenden könnte. Ich liste hier meine bisherigen Erkenntnisse auf:
Es ist möglich, dies zu erreichen, indem Sie einen externen USB-HUB mit eigener Stromversorgung verwenden und dessen Stromversorgung steuern. Dies ist jedoch keine Option für mich (selbst hochwertige Hubs haben andere Probleme in meiner Verwendung verursacht).
Es ist möglich, USB durch Entfernen von .kext-Dateien zu deaktivieren. Unter anderem wird es im OS X Sicherheitskonfigurationsdokument erklärt . Dies erfordert jedoch einen Neustart und ich bin mir nicht sicher, ob es wirklich die USB-Stromversorgung oder nur die Daten deaktiviert.
Es gibt viele Behauptungen, dass es einfach nicht möglich ist. OS X selbst tut dies jedoch, wenn es ein Gerät erkennt, das zu viel Strom verbraucht, sodass zumindest Hardwareunterstützung vorhanden ist. Diese Fehlermeldung wird aus /System/Library/Extension/IOUSBFamily.kext/Contents/Resources/English.lproj/Localizable.strings kopiert: „Trennen Sie das Gerät, das zu viel Strom verbraucht, um USB-Geräte wieder zu aktivieren.“ (Natürlich weiß ich nicht, ob die Deaktivierung durch Ausschalten der USB-Stromversorgung erfolgt, aber ich würde annehmen, dass dies eine natürliche Aktion für das Gerät ist, das zu viel davon verbraucht).
Es scheint, dass auf dem Macbook die USB-Anschlüsse normalerweise mit Strom versorgt werden, auch wenn der Laptop im Ruhezustand ist. Obwohl dies mein Problem nicht löst, hängt es irgendwie zusammen.
Der Grund, warum ich das brauche, ist, dass ich ein Testsystem habe, bei dem mehrere Geräte an einen Mac Mini angeschlossen sind. Die Geräte werden auch über USB aufgeladen. Es hat sich herausgestellt, dass, wenn das Gerät ständig an ein Ladegerät angeschlossen ist, der Akku in etwa einem Jahr aufgebläht ist, was das Gerät unbrauchbar, unsicher und möglicherweise gefährlich macht. Das Abschalten des Stroms, wenn es nicht benötigt wird, würde die Lebensdauer der Geräte erheblich verlängern.
Ich habe vor einigen Jahren viel Zeit damit verbracht, dieses Problem zu erforschen - meine Schlussfolgerung ist, dass es mit den uns zur Verfügung stehenden Informationen einfach nicht möglich ist. Die Steuerung der Stromversorgung erfolgt auf einer viel niedrigeren Ebene als der macOS-Kernel selbst, sodass es nicht nur darum geht, macOS zu konfigurieren oder an der richtigen Kernel-Datenstruktur herumzustöbern. Sie müssen die Firmware ändern, was für normale Benutzer nicht möglich ist.
Die einzige funktionierende Lösung, die ich gefunden habe, ist die Verwendung eines Hubs. Das hat bei mir sehr gut funktioniert. Wenn Sie einen Hub haben, der Ganged Power Switching unterstützt, können Sie den Strom für jede Gang (Gruppe von Ports) einfach aus- und einschalten. Wenn Sie einen Hub haben, der Power Switching pro Port unterstützt, können Sie jeden Port am Hub einzeln ein- und ausschalten.
Hier können Sie Software für macOS zur Steuerung des Hubs herunterladen:
https://github.com/mvp/uhubctl
Beachten Sie, dass dieses Dienstprogramm nur die Steuerung von Hubs unterstützt, die eine Leistungsumschaltung pro Port zulassen. Die Website enthält eine Liste der unterstützten USB-Hubs.
Nachdem ich mich für die Hub-Lösung entschieden hatte, war der schwierigste Teil wirklich, einen USB-Hub zu finden, der Ganged- oder Per-Port-Power-Switching unterstützt. Der eigentliche Softwareteil ist sehr einfach.
Allan
diidu
diidu
Allan
diidu
diidu
Allan
diidu