Я ищу сценарий, который позволит мне отключить один конкретный USB-порт на моем Mac mini. Он будет служить цели, только если он работает в режиме реального времени и не требует перезагрузки. Я нашел сценарии для различных дистрибутивов Linux, которые, казалось, делали что-то подобное, однако большинство из них требовали перезагрузки.
У меня есть окружающее освещение за моим монитором, которое питается от USB и не выключается, когда система спит. Так что мой офис постоянно горит, было бы неплохо, если бы я мог написать скрипт, который отключил бы этот конкретный USB-порт.
Как отключить отдельные порты USB скриптом?
Другим способом решения проблемы может быть добавление в систему USB-концентратора и подключение к нему внешнего освещения.
Некоторые концентраторы USB поддерживают включение/отключение отдельных портов программным обеспечением — это называется «групповое переключение питания». Таким образом, вы можете управлять освещением из сценария. Однако вам нужно будет выбрать поддерживаемый концентратор USB.
Я использовал этот метод для управления питанием в Linux, но тот же метод можно было использовать и в Mac OS X. Концентратор USB был очень дешевым.
Вы можете найти исходный код для управления питанием внешнего концентратора здесь:
http://www.advistatech.com/software/hub-ctrl-20060120.c
Я не знаю, собирается ли он с помощью libusb в Mac OS X, но может.
К сожалению, то, о чем вы просите, невозможно ни с одним OS X API или перехватчиком AppleScript. Это то, что контролируется аппаратным уровнем ОС и требует гораздо больше работы, чем оно того стоит. Хотя аналогичные сценарии существуют и для Linux, вы должны иметь в виду, что хотя OS X и Linux являются дальними родственниками, OS X не была создана для такого точного контроля над своими компонентами, как Linux. К сожалению, в этом случае у вас есть только один вариант — отключить устройство или полностью отключить интерфейс USB. Последнее, конечно, для вас невыполнимо, поэтому, к сожалению, решения этой проблемы нет. Извини. :(
Удачи и счастливого сна!
Деесбек
Эллиотт
Деесбек