Wie deaktiviere ich einzelne USB-Ports per Skript?

Ich suche nach einem Skript, mit dem ich einen bestimmten USB-Anschluss an meinem Mac mini deaktivieren kann. Es würde nur dann einen Zweck erfüllen, wenn es in Echtzeit funktioniert und keinen Neustart erfordert. Ich habe Skripte für verschiedene Linux-Distributionen gefunden, die etwas Ähnliches zu tun schienen - die meisten erforderten jedoch einen Neustart.

Ich habe eine Umgebungsbeleuchtung hinter meinem Monitor, die über USB mit Strom versorgt wird und sich nicht ausschaltet, wenn das System schläft. Mein Büro ist also ständig beleuchtet, es wäre schön, wenn ich ein Skript schreiben könnte, das diesen bestimmten USB-Anschluss deaktiviert.

Wie deaktiviere ich einzelne USB-Ports per Skript?

Antworten (3)

Hast du diesen Thread und den Code hier gesehen ? Vielleicht könnte die Shell verwendet werden, um die Geräte-ID oder den Port bei einem bestimmten Ereignis "manuell" in etwas Seltsames umzubenennen, das nicht funktioniert, und benennt es dann in das um, was es später sein soll.

Hey, ich habe mir den empfohlenen Thread angesehen, aber der angegebene Code ist auf der Apple-Site nicht mehr verfügbar. Könnten Sie es bitte in Ihre Antwort einfügen, wenn Sie noch eine Kopie haben?
Ich habe den Google-Cache des Codes gefunden und meinen Kommentar oben bearbeitet. Ich hoffe, es hilft – ich weiß nicht, ob das funktioniert oder nicht, es war nur eine Idee.
Danke, ich bin nur interessiert, da ich zufällige Fragen durchforste und nachdem ich die Antwort unten gelesen hatte, wollte ich Ihre Lösung unbedingt selbst ausprobieren.

Eine andere Möglichkeit, das Problem anzugehen, könnte darin bestehen, dem System einen USB-Hub hinzuzufügen und die Umgebungsbeleuchtung daran anzuschließen.

Einige USB-Hubs unterstützen das Aktivieren/Deaktivieren einzelner Ports per Software – dies wird als „Ganged Power Switching“ bezeichnet. Auf diese Weise können Sie die Beleuchtung von einem Skript aus steuern. Sie müssen jedoch einen unterstützten USB-Hub auswählen.

Ich habe diese Methode zum Steuern der Stromversorgung unter Linux verwendet - aber die gleiche Methode könnte auch unter Mac OS X verwendet werden. Der USB-Hub war sehr billig.

Den Quellcode zur Steuerung der Stromversorgung des externen Hubs finden Sie hier:

http://www.advistatech.com/software/hub-ctrl-20060120.c

Ich weiß nicht, ob es mit libusb unter Mac OS X erstellt wird, aber es könnte sein.

Ist das nicht „Pro Port Power Switching“, wenn Sie die Stromversorgung einzelner Ports steuern können, und „Ganged Power Switching“, wenn Sie nur alle gleichzeitig ein- und ausschalten können?

Leider ist das, was Sie fragen, mit keiner OS X-API oder AppleScript-Hook möglich. Dies wird von der Hardwareebene des Betriebssystems gesteuert und erfordert weit mehr Arbeit, als es wert ist. Obwohl es ähnliche Skripte für Linux gibt, müssen Sie bedenken, dass OS X, obwohl OS X und Linux entfernte Verwandte sind, nicht für eine so feinkörnige Kontrolle über seine Komponenten wie Linux entwickelt wurde. Leider haben Sie in diesem Fall nur die Möglichkeit, das Gerät vom Stromnetz zu trennen oder die USB-Schnittstelle vollständig zu deaktivieren. Letzteres ist für Sie natürlich nicht machbar, daher gibt es leider keine Lösung für dieses Problem. Es tut uns leid. :(

Viel Glück und guten Schlaf!

Können Sie einen Grund oder eine Dokumentation für "OS X wurde nicht für eine so feinkörnige Kontrolle über seine Komponenten wie Linux entwickelt" nennen. Sicherlich sind sowohl Linux als auch OSX Unix-ähnliche Betriebssysteme und haben die gleiche Kontrolle über Schnittstellen
Ich denke, die USB-Stromversorgung wird separat von der Software gesteuert. Ich habe vorübergehend alle IOUSB*.kext entfernt, und während das eingebaute Trackpad und die Tastatur tot waren, wurde mein Kindle immer noch aufgeladen. (Das iPhone würde nicht; aber das könnte ein Apple-Voodoo sein). Entfernen Sie übrigens nicht alle IOUSB*.kext-Dateien, es sei denn, Sie haben eine gute Wiederherstellungsstrategie (dieses spezielle Macbook hat mehrere Boot-Partitionen, daher ist es einfach zu reparieren).