Меню Рубрики

Linux usb отключить питание

Системное администрирование и мониторинг Linux/Windows серверов и видео CDN

Статьи по настройке и администрированию Windows/Linux систем

Включение/выключение питания USB устройств из консоли

Иногда бывают ситуации, когда нужно отключить USB флешку, сделать настройку какой-то программы и потом опять подключить для нормальной работы. Но что делать если эти действия нужно сделать на удаленном сервере, к которому у нас нет физического доступа. Можно обратиться в службу поддержки, но можно и сделать все своими силами «не отходя от кассы». Расскажу как это делается.

Допустим, наша флешка уже втыкнута в USB-порт. Первым делом нужно проверить так ли это.

Как видим, USB-флешка находиться на шине Bus 001. Следовательно нам нужно найти в /sys/bus/usb/devices/ соответствующее USB устройство и выключить питание.

Чтобы копаться в системных устройствах нужны права суперпользователя.

По скольку мы знаем, что наша USB флешка на физической шине с номером 1. Следовательно, нужно отключить питание устройства 1-6, так как именно оно отвечает за первую шину.

Приведенная выше команда, отключит питание устройства на лету. Проверим теперь, так ли это.

Как видим — устройство отключено.
После внесения нужных изменений, подключаем питание USB устройства.

Источник

Linux USB: включение и выключение питания?

Как программно включить и отключить питание определенного USB-порта в Linux? Возможно ли такое вообще? Ответы Mac также оценили!

Я пытался BOC (не притворяйтесь, что вы не пытались получить его тоже!) и закончил с одним из них, и хотел бы получить некоторую пользу от этой вещи, подключив ее к нашему монитору сервера.

13 ответов

Похоже, вам нужно подключить его к концентратору и контроль питания хаба. Ни один из корневых концентраторов, которые я видел, не может поддерживать управление питанием.

что-то типа: echo on > /sys/bus/usb/devices/usb5/power/level

возможно, Вам также придется играть с настройкой autosuspend. Не говоря ядру прекратить попытки, оно может автоматически приостановить работу порта.

взаимодействие usbfs, похоже, изменилось несколько раз, так как на этот вопрос был первоначально дан ответ. Итак, вот как я задействую питание порта концентратора на Ubuntu Oneiric Ocelot из оболочки Bash.

Поиск Шины и номер устройства:

найдите устройство в иерархии портов шины / концентратора, используя шину и номер устройства:

синтаксис, кажется, ” автобусный порт.порт.порт.порт.порт. Например, мышь подключена к внешнему концентратор, который подключается к концентратору моего компьютера, который внутренне подключается к корневому концентратору:

Итак, – 2-1.1.1 в приведенном выше случае. Наконец, цикл питания порта:

Я не подключил анализатор протокола, чтобы увидеть, что на самом деле происходит в автобусе, но я знаю, что моя мышь выключается, когда я ее развязываю. Я предполагаю, что на нижнем уровне это взаимодействует с хост-контроллером EHCI, чтобы фактически отключить питание порта. Это особенно полезно для встраиваемых устройства, такие как веб-камеры UVC, которые никогда не функционируют должным образом и в противном случае потребуют перезагрузки системы для сброса.

вы могли бы использовать uhubctl – утилита командной строки для управления мощностью USB на порт для совместимых USB-концентраторов.

он работает только на концентраторах, которые поддерживают переключение питания на порт, но обратите внимание, что многие современные материнские платы имеют USB-концентраторы, которые поддерживают эту функцию. Кроме того, последняя версия uhubctl поддерживает концентраторы USB 3.0, и хорошей новостью является то, что довольно много новых концентраторов USB 3.0 поддерживают эту функцию.

для список состояния всех концентраторов и портов, которые могут управляться uhubctl:

для отключения питания на Порту 5 одного совместимого концентратора:

включить питание для всех портов всех совместимых концентраторов:

для выключения питания, а затем на:

раскрытие информации – я автор uhubctl.

это пример с беспроводной мышью Logitech USB под linux.

прочитайте соответствующий абзац “/ proc / bus / usb / devices “в соответствии с вашими устройствами “Vendor” (идентификатор поставщика) и “ProdID” (идентификатор продукта) или “производитель” и “продукт” (все эти значения постоянны для каждого устройства).

(первый абзац с устройством включен, второй с тем же устройством выключен, но все еще подключен)

здесь нужны две переменные. Они расположены в строка” T: “(первая строка абзаца). Эти переменные : Bus (Bus=01 в данном примере) Cnt (Cnt=01 в данном примере)

вам нужно будет добавить “1” (арифметический) в “Cnt”, чтобы получить ранг Rank=Cnt+1 (это математическая функция, Rank=2 в данном примере)

таким образом, устройство, которое вы ищете, является следующей строкой : Bus-Rank (это не математическая функция, это строка, 1-2 в этом примере)

ум также “C:” линия. Он содержит информацию о мощности (токе) устройства. Если есть звездочка в “C: “(как в нашем 1-м примере), то устройство питается. Если нет (“C:”), то устройство” более или менее ” отключено, что означает, что всегда есть крошечный ток, когда устройство подключено, иначе мы не смогли бы прочитать всю эту информацию.

обратите внимание на строку “I:”. Если поле “I:*” содержит звездочку (как в нашем 1-м примере) , то есть вход, от или к устройству, я не уверен, может быть, оба. Поле заключительная строка содержит используемый драйвер (“usbhid” в нашем 1-м примере)

мы готовы включить питание устройства :

ниже приведен простой скрипт bash “USBMS” (USB Mouse Switch), который контролирует мощность устройства в нашем примере выше. Это не очень динамично, и он использует константы” продукт “и” производитель”, чтобы найти соответствующий пункт “/proc / bus / usb / устройства” Вместо этого следует использовать “поставщик” (идентификатор поставщика) и “ProdID” (идентификатор продукта). Он также проверяет состояние питания устройства. Запуск от имени суперпользователя.

команда : ./ USBMS action

параметр: action = ” off ” или ” 0 “для выключения питания-action =” on “или” 1 ” для включения питания (без кавычек)

@Kristian обычно вы не найдете программное обеспечение, контролируемое портом, контролируемым питанием, потому что пользователи не должны осознавать этот уровень. Я не думаю, что есть много вариантов использования для него, кроме как заставить устройства с питанием от шины в известное состояние и обрабатывать тупые как почтовые устройства, которые используют только USB для питания. Возможно, устройство Марка относится ко второй категории. Это грубый механизм в крайнем случае.

Как я уже упоминал, я не рассматривал реализацию детали для разматывания взлома, и я только попробовал его на хост-контроллере EHCI, встроенном в мою материнскую плату, “Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller (rev 05).”Я бы предположил, что этот хост-контроллер имеет бит PPC набора HCSPARAMS, указывающий программное управление коммутаторами питания портов, согласно спецификации EHCI.

Если вы взаимодействуете с внешним концентратором, ” концентратор указывает, поддерживает ли он переключение мощности установкой Логическое поле режима переключения мощности в wHubCharacteristics”, согласно спецификации USB 2.0. Я не помню, обеспечивают ли тесты соответствия эту функциональность или нет, но если они это делают, вам нужно только найти концентратор с логотипом USB 2.0. Я предполагаю, что Хак отправит запрос функции set port, но он может задействовать больше, чем просто целевой порт. Опять же, в спецификации USB 2.0 ” концентратор с выключателями питания может переключать питание на все порты как группа / Банда, на каждый порт по отдельности или иметь произвольный номер банд одного или нескольких портов.”Я не уверен, есть ли хороший инструмент командной строки для получения wHubCharacteristics.

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

в OS X вы можете получить доступ к USB-устройству из пользовательского пространства и запросить его приостановку.

вы можете найти общий пример в руководство по интерфейсу USB-устройства. Вам нужно будет использовать IOUSBDeviceInterface182 (или выше) USBDeviceSuspend метод.

Примечание: концентраторы и порты контроллера могут иметь объединенные источники питания, что означает, что один и тот же коммутатор разделяется несколькими портами. если это так, и ваше устройство находится в одной группе как другое активное устройство, он не будет выключен.

” on ” означает, что устройство должно быть возобновлено, а autosuspend-нет допустимый.(Конечно, системные приостановки все еще разрешены.)

“auto” – это нормальное состояние, в котором ядру разрешено autosuspend и автозапуск устройства.

“приостановить” означает, что устройство должно оставаться приостановлено, и autoresume не допускается. (Но удаленное пробуждение все еще может быть разрешено, в виду того что она проконтролирована separaely атрибут питания / пробуждения.)

Шаг 1: так что я, с USB1, USB2, с, с USB3, usb4 .

Шаг 2: как я узнаю, какой из них какой? (

Optional 1: в случае, если lsusb показывает и нужно найти конкретный

дополнительно 2: в случае, если никто не найден-перезагрузка не удается использовать цикл питания Arduino реле над udp

Arduino реле:

Я был бы более склонен отрезать провод и подключить его к последовательному порту с каким-то простым реле, работающим с одного из “готовых” штырей. Затем вы можете просто потянуть линию вниз (сигнал “Я готов к приему”) в файл последовательного порта каждый раз, когда есть какая-то isssue. Когда это будет сделано, просто сигнал ‘я’

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

каждый раз, когда мой будильник гаснет, компьютер выключается!

вы работаете просто ” эхо ” как root, попробуйте:

A несколько USB-концентраторов может включать и выключать свои порты, как описано в ссылке. Мне еще предстоит найти материнскую плату с USB-портами, которые можно включить или отключить.

Не покупайте дорогой смарт-концентратор только для включения и выключения USB-гаджетов.
Все, что вам нужно-это микроконтроллер.

Arduino Nano™ ATmega328 *

Nano – это 16mhz 8-битный компьютер с 2K RAM и 32K флэш-памяти.
Он имеет 22 программируемый контакты (8 аналоговых и 14 цифровых).
Может!–19–>читать/писать USB, и приведено в действие своим портом microUSB 5.0 V (до 12.0 V внешнего).

Изысканные крошечные случаи доступны (также бесплатно 3d печатные).

C4labs Зебра Черный Лед Чехол

* используйте только подлинный Arduino Nano™. Остерегайтесь подделки.

обновление: миниатюризации ATtiny и беспроводной интернет микроконтоллеры также доступный.

Как я понимаю, ваши устройства поставляются USB-линией питания VCC (

5V). Проблема в том, что эта линия питания не может управляться из пользовательского пространства в стандартной платформе linux, если вы не взаимодействуете с концентраторами, включенными с управлением питанием. Код ядра Ony может коснуться этой линии питания.

Источник

Популярные записи


Adblock
detector