- Управление питанием USB (отключение/включение)
- Нашёл
- как узнать « номер устройства» ?
- Программно передёрнуть питание на USB-порте
- Системное администрирование и мониторинг Linux/Windows серверов и видео CDN
- Статьи по настройке и администрированию Windows/Linux систем
- Включение/выключение питания USB устройств из консоли
- Управление питанием USB (вкл./Выкл.) С помощью linux
- Краткий ответ:
- Длинный ответ:
Управление питанием USB (отключение/включение)
Собственно в преддверии того что я опять пошел учится я выполнил свое давнее желание и засунул внутрь своего EeePc 1000H 3G модем. Хотел подцепить к не используемым mini PCIe, но один из них не был распаян на самой материнке а от второго модем отказался работать ( как впрочем и другие usb устройства ) вследствие чего я решился пожертвовать одним из распаянных usb портов. Уже когда закончил встал вопрос о питании, а точнее расходе аккумулятора. Ведь даже когда я не использую 3G — модем работает.
Собственно как можно программно ( bash сойдет но можно и GUI ) отключить питание одного порта или контроллера?
Интернеты почитал но ничего конкретного не нашел.
P.S. знаю что сказал много лишнего.
Ищи по форуму, мнократно было, например, [как в винде] отключение usb девайса
В вики ЛОРа добавляли управление питанием юсб устройств.
Нашёл
echo suspend > /sys/bus/usb /devices/« номер устройства »/power/level
echo on > /sys/bus/usb /devices/« номер устройства» /power/level
От себя добавлю: ядро должно быть собрано с опцией CONFIG_USB_SUSPEND
как узнать « номер устройства» ?
[ 121.923467] exe (2799): /proc/2799/oom_adj is deprecated, please use /proc/2799/oom_score_adj instead. [ 164.214887] usb 2-1: USB disconnect, device number 2 [ 164.214890] usb 2-1.1: USB disconnect, device number 5 [ 164.215963] sierra ttyUSB0: Sierra USB modem converter now disconnected from ttyUSB0 [ 164.216077] sierra ttyUSB1: Sierra USB modem converter now disconnected from ttyUSB1 [ 164.216138] sierra ttyUSB2: Sierra USB modem converter now disconnected from ttyUSB2 [ 164.216151] sierra 2-1.1:1.0: device disconnected [ 172.502081] usb 2-1: new high speed USB device number 6 using ehci_hcd [ 172.617733] usb 2-1: New USB device found, idVendor=05e3, idProduct=0608 [ 172.617739] usb 2-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0 [ 172.617744] usb 2-1: Product: USB2.0 Hub [ 172.618677] hub 2-1:1.0: USB hub found [ 172.618952] hub 2-1:1.0: 4 ports detected [ 173.824386] usb 2-1.1: new full speed USB device number 7 using ehci_hcd [ 173.901358] usb 2-1.1: New USB device found, idVendor=1199, idProduct=0120 [ 173.901365] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 173.901370] usb 2-1.1: Product: Sierra Wireless AC595U Device [ 173.901374] usb 2-1.1: Manufacturer: Sierra Wireless, Incorporated [ 173.902157] sierra 2-1.1:1.0: Sierra USB modem converter detected [ 173.902470] usb 2-1.1: Sierra USB modem converter now attached to ttyUSB0 [ 173.902579] usb 2-1.1: Sierra USB modem converter now attached to ttyUSB1 [ 173.902685] usb 2-1.1: Sierra USB modem converter now attached to ttyUSB2 [ 194.582860] usb 2-1: clear tt 1 (9072) error -71 [ 194.591812] usb 2-1: clear tt 1 (9072) error -71 [ 194.599834] usb 2-1: clear tt 1 (9072) error -71
Посмотри, по какому порту цепляется gnome-ppp или kppp. У модемов обычно 3 порта, для фейкового сидирома, карты памяти и собственно модема. У zte /dev/ttyUSB2, huawei /dev/tty/USB0.
Lorcode лучше используй в следующий раз.
# echo suspend > /sys/bus/usb/devices/usb1/1-2/power/level -bash: echo: ошибка записи: Недопустимый аргумент
Вот так он меня посылает, параметры on и auto проходят на ура
Не могу проверить, ноут навернулся. С оперы мини писал. Остаётся проверить, собрано ли ядро с поддержкой usb suspend.
>Re: отключить питание на USB программно
посмотрел конфиг ядра. CONFIG_PM is not set
find /sys/bus/usb/devices/*-*/power/ -name level
zgrep CONFIG_USB_SUSPEND /proc/config.gz
В этом треде мегабакс много интересных наводок давал. Там камрад бился, пока в биосе управление юсб устройствами не отрубил.
Может адрес устройства не тот, вот тут хороший совет. Кстати, у автора топика такая же ошибка записи.
find /sys/bus/usb/devices/*-*/power/ -name level Находит 3 штуки, посылаю suspend и off, все та же ошибка.
/proc/config.gz нету такого файла.
по линку прошелся, поставил powertop, из него стало известно что мопед весит на usb 2-2 и жрет оно 15% от всего энергопотребления в выключенном состоянии, в включенном немного больше — 16%
Итак usb найден нужный, осталось его выключить и включить. Куда еще можно копать? повторюсь on и auto проходят успешно
UPD. бук кушает от 8,6 до 12 Ватт в час при серфинге и выключенной вафле ( серфинге от мопеда ), и около 12-15 Ватт при серфе через wifi, мопед то работает.
Сейчас от родных 55,3Wh осталось только 34Wh на батареи, т.е. около 2,2 часа работы от батареи, что весьма мало. заказал новую расширенную батарею на 130Wh но все равно модем нужно выключить >_>
Сегодня буду играться с антеной модема ( т.к. сигнал упал чутка из за корпуса )
Если я правильно понял, ядро не собрано с CONFIG_USB_SUSPEND. Тогда понятно, почему не срабатывает. Что за дистрибутив-то? У дебианоподобных можно ядро от liquorix поставить, чтобы не собирать.
Источник
Программно передёрнуть питание на USB-порте
Сабж. Найденные варианты (точнее, один, с echo suspend > /sys/bus/usb/devices/4-1/power/level или подобным) не прокатили, поскольку в power просто нет таких файлов.
Debian 7.
Ты бы на ЛОРе и искал бы. Не раз обсуждалось. Вкратце — именно напряжение по стандарту, афаик, снять нельзя. Исключение — хабы, в которых это замутили. Вещь редкая.
Подойдет? Мне помогает оживить usb свисток после гибернации.
Хм, помогло, но как-то странно — на самом устройстве аптайм не сбросился, значит оно не отключалось. Ребут удалённой машины тоже не помог.
угу, похоже придётся костылять к компорту что-нибудь, что будет разрывать питание юсба при посылке некой последовательности байт(
Примеры тем, где такое перетиралось
Ну, значит, оно отключает систему от устройства но не наоборот. Но почему это не может быть решением проблемы?
Вспомнил что у меня на нетбуке все внутренние USB имеют ключ на линии 5v.
Источник
Системное администрирование и мониторинг Linux/Windows серверов и видео CDN
Статьи по настройке и администрированию Windows/Linux систем
- Полезное
- Карта сайта
- Мой сайт-визитка
- Рубрики
- Linux
- VoIP
- Безопасность
- Видеопотоки
- Системы виртуализации
- Системы мониторинга
- Windows
- Интересное
- Сеть и Интернет
- Linux
- Мета
- Войти
- RSS Feed
Включение/выключение питания USB устройств из консоли
Иногда бывают ситуации, когда нужно отключить USB флешку, сделать настройку какой-то программы и потом опять подключить для нормальной работы. Но что делать если эти действия нужно сделать на удаленном сервере, к которому у нас нет физического доступа. Можно обратиться в службу поддержки, но можно и сделать все своими силами «не отходя от кассы». Расскажу как это делается.
Допустим, наша флешка уже втыкнута в USB-порт. Первым делом нужно проверить так ли это.
Как видим, USB-флешка находиться на шине Bus 001. Следовательно нам нужно найти в /sys/bus/usb/devices/ соответствующее USB устройство и выключить питание.
Чтобы копаться в системных устройствах нужны права суперпользователя.
По скольку мы знаем, что наша USB флешка на физической шине с номером 1. Следовательно, нужно отключить питание устройства 1-6, так как именно оно отвечает за первую шину.
Приведенная выше команда, отключит питание устройства на лету. Проверим теперь, так ли это.
Как видим — устройство отключено.
После внесения нужных изменений, подключаем питание USB устройства.
Источник
Управление питанием USB (вкл./Выкл.) С помощью linux
Можно ли включать/отключать источники питания с USB вручную с помощью linux?
Там этот внешний USB-вентилятор охлаждения (тот, который вы используете, чтобы остыть, а не ПК), и было бы неплохо управлять им с терминала, потому что я хочу разместить вентилятор где-то далеко.
Я полагаю, это также может быть полезно и для множества других вещей, потому что там много USB-игрушек. Возможно, очистители воздуха и т.д. (Я слышал, что они действительно не работают).
Примечание. Информация в этом ответе актуальна для старых ядер (до 2.6.32). См. ответ tlwhitec для информации о новых ядрах.
(Вам может потребоваться изменить usb1 на usb n)
В соответствии с docs было внесено несколько изменений в управление питанием USB из ядер 2.6.32, которые, по-видимому, оседают в 2.6.38. Теперь вам нужно подождать, пока устройство станет idle, которое определяется конкретным драйвером устройства. Драйверу необходимо его поддерживать, иначе устройство никогда не достигнет этого состояния. К несчастью, теперь у пользователя нет никаких шансов на это. Однако, если вам повезет, и ваше устройство может простаивать, то для его отключения необходимо:
или, для ядер около 2.6.38 и выше:
Это буквально означает, что приостановить в тот момент, когда устройство перестает работать.
Поэтому, если ваш вентилятор не является чем-то “интеллектуальным”, который можно рассматривать как устройство и управляемым драйвером, вам, вероятно, не повезет с текущими ядрами.
Я нашел эти решения, которые, по крайней мере, работают для правильно сконфигурированного микросхемы концентратора Terminus FE 1.1 USB:
1. Чтобы отключить питание всех USB-портов концентратора, вы можете отсоединить концентратор от ядра, используя:
чтобы снова включить питание – вы можете связать его с помощью
2. Мощность переключения на каждом порту индивидуально сложнее: я смог использовать hubpower для управления каждым портом – но он поставляется с недостаток: hubpower сначала отключает usbdevfs, из-за чего все USB-устройства выходят из системы, по крайней мере, на ubuntu:
При отключенном ioctl мне удалось отключить отдельную мощность порта, не отсоединяя все устройства, – но питание сразу возвращается (возможно, из-за того, что ядро видит неинициализированное устройство), что заставляет USB-устройство просто “холодно” перезагрузка “, что я обычно хотел сделать. Мой исправленный hubpower здесь
PowerTOP от Intel позволяет в реальном времени переключать устройства, такие как USB-периферия. Они называются перестраиваемыми.
- Перейдите на “настраиваемые”.
- Прокрутите вниз до своего устройства.
- Нажмите Enter, чтобы переключить режим энергосбережения (Хорошо/Не хорошо)
Обратите внимание, что Bad означает, что устройство всегда включено. Переключение на Хорошо выключит устройство после заданного неактивного времени сохранения (по умолчанию 2000 мс).
См. документацию PowerTOP для получения подробной информации о том, как сделать эти изменения постоянными.
Он генерирует скрипты конфигурации для вас (в значительной степени как описано другими авторами в этой теме).
ПРИМЕЧАНИЕ. Эти сценарии не влияют на питание контактов USB (которое всегда включено).
Они только отправляют протокол драйвера для активации и деактивации устройства.
Если вы хотите контролировать питание контактов, вы можете использовать либо поддерживаемый интеллектуальный USB-концентратор, либо, что еще лучше, микроконтроллер.
Вы можете использовать uhubctl – утилиту командной строки для управления питанием USB на порт для совместимых концентраторов USB.
Раскрытие – я автор uhubctl.
Я хотел сделать это, и с помощью своего USB-оборудования я не смог. Я написал хакерский способ, как это сделать здесь: http://pintant.cat/2012/05/12/power-off-usb-device/. Короче говоря: я использовал USB-реле для открытия/закрытия Vc другого USB-кабеля…
работает для ubuntu
Питание USB 5 В всегда включено (даже когда компьютер выключен, на некоторых компьютерах и на некоторых портах.) Вам, вероятно, потребуется запрограммировать Arduino с каким-то переключателем и управлять им через последовательную библиотеку с USB-подключенного устройства в компьютер.
Другими словами, комбинация this переключает учебник и это руководство по передаче через Serial libary в Arduino, подключенное через USB.
У меня была проблема при подключении моего телефона Android, я не мог заряжать свой телефон, потому что выключатель питания включен, а затем выключен…
PowerTop позволил мне найти этот параметр и был полезен, чтобы исправить проблему (авто значение вызывало проблему):
Причина, по которой люди пишут такие вопросы, связана с тем, что dreaded- действительно “EVIL” – функция “Автоподвеска USB”.
Автоматическая приостановка отключает питание “незанятого” USB-устройства, и если драйвер устройства не поддерживает эту функцию правильно, устройство может стать недоступным. Таким образом, включение/выключение USB-порта является признаком проблемы, а не самой проблемой.
Я покажу вам, как ГЛОБАЛЬНО отключить автоматическую приостановку, избавляя от необходимости вручную переключать порты USB на & выкл:
Краткий ответ:
Вам НЕ нужно редактировать “autosuspend_delay_ms” по отдельности: автоматическое отключение USB можно отключить глобально и НАСТОЯЩЕЕ с помощью следующих команд:
В конце “Длинного ответа” приведен скриншот Ubuntu 18.04, показывающий, как были достигнуты мои результаты.
Длинный ответ:
Действительно, Документация по ядру управления питанием USB заявляет, что автоподвеска не рекомендуется и вместо нее используется autosuspend_delay_ms, используемая для отключения автоподвески USB:
ОДНАКО мое тестирование показало, что настройка usbcore.autosuspend=-1 в /etc/default/grub, как показано ниже, может использоваться в качестве GLOBAL переключателя для автоматической приостановки USB functionality-, которую вы НЕ нужно редактировать отдельные файлы “autosuspend_delay_ms“.
В том же документе, указанном выше, указано, что значение “0” равно ENABLED, а отрицательное значение ОТКЛЮЧЕНО:
На аннотированном скриншоте Ubuntu 18.04 ниже, иллюстрирующем, как мои результаты были достигнуты (и воспроизводимы), обратите внимание, что по умолчанию установлено значение “0” (включено) в autosuspend_delay_ms.
Затем обратите внимание, что после ТОЛЬКО установки usbcore.autosuspend=-1 в Grub эти значения теперь становятся отрицательными (отключенными) после перезагрузки. Это избавит меня от необходимости редактировать отдельные значения и теперь может отключить автоматическое отключение USB.
Надеюсь, что это делает отключение автоподвески USB немного легче и более scriptable-
Источник