Как отключить отдельные порты USB скриптом?

Я ищу сценарий, который позволит мне отключить один конкретный USB-порт на моем Mac mini. Он будет служить цели, только если он работает в режиме реального времени и не требует перезагрузки. Я нашел сценарии для различных дистрибутивов Linux, которые, казалось, делали что-то подобное, однако большинство из них требовали перезагрузки.

У меня есть окружающее освещение за моим монитором, которое питается от USB и не выключается, когда система спит. Так что мой офис постоянно горит, было бы неплохо, если бы я мог написать скрипт, который отключил бы этот конкретный USB-порт.

Как отключить отдельные порты USB скриптом?

Ответы (3)

Вы видели эту тему и код здесь ? Возможно, оболочку можно использовать для «ручного» переименования идентификатора устройства или порта во что-то странное, что не будет работать, при указанном событии, а затем переименовывает его в то, что должно быть позже.

Привет, я просмотрел рекомендуемую тему, но указанный код больше недоступен на сайте Apple. Не могли бы вы вставить его в свой ответ, если у вас все еще есть копия?
Я нашел кеш Google кода и отредактировал свой комментарий выше. Я надеюсь, что это поможет — я не знаю, работает это или нет, это была только идея.
Спасибо, мне просто интересно, так как я просматриваю случайные вопросы, и после прочтения ответа ниже мне очень хотелось попробовать ваше решение самостоятельно.

Другим способом решения проблемы может быть добавление в систему 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. Последнее, конечно, для вас невыполнимо, поэтому, к сожалению, решения этой проблемы нет. Извини. :(

Удачи и счастливого сна!

Можете ли вы указать причину или документацию для «OS X не была создана для такого тонкого контроля над своими компонентами, как Linux». Конечно, и Linux, и OSX являются Unix-подобными ОС и имеют равный контроль над интерфейсами.
Я думаю, что питание USB контролируется отдельно от программного обеспечения. Я временно удалил все файлы IOUSB*.kext, и хотя встроенный трекпад и клавиатура были мертвы, мой Kindle продолжал заряжаться. (iPhone не будет, но это может быть какое-то вуду Apple). Кстати, не удаляйте все файлы IOUSB*.kext, если у вас нет хорошей стратегии восстановления (этот конкретный macbook имеет несколько загрузочных разделов, поэтому это будет легко исправить).