Отключить usb порт linux

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.

Читайте также:  Vmware workstation linux console

Если вы взаимодействуете с внешним концентратором, » концентратор указывает, поддерживает ли он переключение мощности установкой Логическое поле режима переключения мощности в 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 может коснуться этой линии питания.

Источник

Отключение и подключение USB-устройства из консоли

Я счастливый обладатель хуаевейого GPRG/UMTS модема. Работает исправно. Однако, порой подвисает и пропадает из /dev/, подключение, соответственно, отваливается. Спасает физическое извлечение и подключение модема.

Поскольку USB порт на ноуте не бесконечен, интересуюсь: какими командами можно отключить и подключить устройство? Как вариант, включить и выключить питание на USB порте?

Сто раз обсуждалось, ищите по моим комментариям.

Спасибо большое. Мне удалось найти решение.

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

>Я счастливый обладатель хуаевейого GPRG/UMTS модема.

Обсуждалось уже, ЕМНИП.

Не стесняйтесь, вы всё верно прочитали.

> Спасибо большое. Мне удалось найти решение

Если не трудно, добавь в LOR Wiki пожалуйста. Или дай прямую ссылку, сам добавлю

>>Спасибо большое. Мне удалось найти решение.

Ну так опубликуй его здесь, чего ты ждешь-то?

Все решения принято публиковать, береги время других.

Читайте также:  Как восстановить систему до заводских настроек windows

Если честно, скрипт исправно включает и выключает питание на устройстве. Однако выводит модем из ступора в среднем через раз, что опечаливает.

Может это связано с тем, что он лишь отключает питание, а сигнал остается?

Ведь есть же устройства, которым питание USB не нужно, но тем не менее есть реакция на plug-unplug.

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

Если не трудно, добавь в LOR Wiki пожалуйста.

Нет, сигнал тут не при чём. Возможно надо задержку побольше поставить. Пока, тфу-тфу, не зависал и не было возможности поэкспериментировать.

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

Источник

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

Как программно включить и отключить питание конкретного USB-порта в Linux? Возможно ли такое? (нет – см. ниже) Ответы на Mac также оценены!

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

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

Обход по закладкам

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

Что-то вроде: echo on > /sys/bus/usb/devices/usb5/power/level

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

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

Найдите номер шины и устройства:

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

Синтаксис кажется “bus-port.port.port.port.port…” Например, моя мышь подключена к внешнему хабу, который подключается к моему концентратору компьютера, который внутренне подключается к корневому концентратору:

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

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

См. также команду udevadm .

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

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

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

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

Это пример беспроводной мыши Logitech USB под Linux.

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

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

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

Читайте также:  Windows 10 виснет диск 100

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

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

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

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

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

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

: action = “off” или “0” для выключения – действие = “on” или “1” для включения (без кавычек)

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

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

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

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

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

Шаг 1:, поэтому у меня есть, usb1, usb2, usb3, usb4….

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

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

Необязательный 2: в случае, если не обнаружено – перезагрузка не работает с циклом питания. Реле Arduino через udp

Реле Arduino:

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

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

Чтобы просмотреть статус всех концентраторов и портов, которые можно контролировать с помощью uhubctl:

Вам может потребоваться добавить -i , чтобы просмотреть состояние внутренних USB-концентраторов (они по умолчанию исключены).

Чтобы отключить питание порта 5 одного совместимого концентратора:

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

Чтобы отключить питание, выполните следующие действия:

Отказ от ответственности – я автор uhubctl.

Я был бы более склонен вырезать провод и подключить его к последовательному порту с некоторым типом простого ретрансляционного режима F из одного из “ready ready”. Тогда вы можете просто вывести линию вниз (сигнал “я готов к получению” ) в файл последовательного порта каждый раз, когда есть некоторые isssue. Когда это будет сделано, просто подайте сигнал “Я полный”

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

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

У вас работает только “echo” как root, попробуйте:

A несколько узлов USB могут включать и выключать свои порты, как объясняется в ссылке. Я еще не нашел материнскую плату с USB-портами, которые можно включить или отключить.

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

Arduino Nano ™ ATmega328 *

Nano – это 16-мегагерцовый 8-разрядный компьютер с 2 КБ оперативной памяти и 32 тыс. Флэш-памяти.
Он имеет 22 программируемые контакты (8 аналоговых и 14 цифровых).
Он может читать/записывать USB и питаться от его порта 5.0USB microUSB (до 12,0 В внешнего).

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

C4Labs Zebra Black Ice Case

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

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

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

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

Источник

Оцените статью