Как отключить usb в debian

Обновлено: 06.07.2024

Можно ли включать/отключать источники питания с 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-портов концентратора, вы можете отсоединить концентратор от ядра, используя:

PowerTOP от Intel позволяет в реальном времени переключать устройства, такие как USB-периферия. Они называются перестраиваемыми.

Обратите внимание, что Bad означает, что устройство всегда включено. Переключение на Хорошо выключит устройство после заданного неактивного времени сохранения (по умолчанию 2000 мс).

См. документацию PowerTOP для получения подробной информации о том, как сделать эти изменения постоянными.
Он генерирует скрипты конфигурации для вас (в значительной степени как описано другими авторами в этой теме).

ПРИМЕЧАНИЕ. Эти сценарии не влияют на питание контактов USB (которое всегда включено).
Они только отправляют протокол драйвера для активации и деактивации устройства.

Если вы хотите контролировать питание контактов, вы можете использовать либо поддерживаемый интеллектуальный USB-концентратор, либо, что еще лучше, микроконтроллер.

работает для ubuntu

Питание USB 5 В всегда включено (даже когда компьютер выключен, на некоторых компьютерах и на некоторых портах.) Вам, вероятно, потребуется запрограммировать Arduino с каким-то переключателем и управлять им через последовательную библиотеку с USB-подключенного устройства в компьютер.

Другими словами, комбинация this переключает учебник и это руководство по передаче через Serial libary в Arduino, подключенное через USB.

Краткий ответ:

Затем обратите внимание, что после ТОЛЬКО установки usbcore.autosuspend=-1 в Grub эти значения теперь становятся отрицательными (отключенными) после перезагрузки. Это избавит меня от необходимости редактировать отдельные значения и теперь может отключить автоматическое отключение USB.

Надеюсь, что это делает отключение автоподвески USB немного легче и более scriptable-

Оригинал: How to Block access of USB and CD/DVD in Debian and Derivatives
Автор: Naga Ramesh
Дата публикации: 31 марта 2016 года
Перевод: А. Кривошей
Дата перевода: февраль 2017 г.

Сегодня в вопросах безопасности нельзя допускать компромиссов. Неважно, касается ли это офиса, дома, или любого другого места работы, настройки безопасности должны предотвращать несанкционированный доступ к вашей системе и заражение ее вирусами. Наиболее распространенный путь доступа к содержимому компьютера - порты USB. Они используются для передачи данных и различных сетевых соединений. Любой может попытаться украсть ваши данные с помощью флешки, или заразить вашу систему вирусами или шпионскими программами. Для обеспечения повышенного уровня безопасности вы можете заблокировать доступ к портам USB в вашей системе.
Для администратора Linux основным рабочим инструментом является командная строка. Мы также будем выполнять необходимые операции в терминале.

Для блокировки доступа к USB и CD-ROM можно использовать права доступа файловой системы. Обычно все съемные диски монтируются в /media.

разрешает только пользователю root монтировать съемные диски.

Для разблокировки доступа используется следующая команда:

Второй способ - использование списка блокировки. Настроить его можно в файле blacklist.conf.
В Ubuntu или других дистрибутивах на базе Debian необходимо редактировать файл blacklist.conf в директории /etc/modprobe.d/.

Для редактирования файла blacklist.conf введите команду:

Содержимое файла выглядит следующим образом:

Добавьте следующие две строки в конец файла.

Сохраните и закройте файл, затем перезагрузите систему. Теперь порты USB отключены.

Для активации портов USB снова откройте файл, удалите эти строки (или закомментируйте их).

Еще один, более простой метод для добавления USB-дисков в список блокировки:

Для блокировки CD-ROM просто удалите пользователя из группы "cdrom". После этого пользователь не сможет с ним работать.

Можно ли в Linux включать / выключать источники питания от USB вручную?

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

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

Эта функция действительно заслуживает хорошего графического интерфейса

Заметка. Информация в этом ответе относится к более старым ядрам (до 2.6.32). Смотрите ответ tlwhitec для информации о более новых ядрах.

(Вам может понадобиться изменить usb1 на usb n )

Источник: Документация / usb / power-management.txt.gz

Вау, спасибо за это. Я думал, что должен был пройти через libUSB, несмотря ни на что. Любая идея, как получить имена подключенных устройств, а? Я получаю ошибку «Отказано в разрешении», даже если я использую sudo! В разрешении отказано, потому что команда в форме sudo foo > bar анализируется как непосредственный вывод bar , а затем запускается foo с использованием sudo . Перенаправление не происходит, потому что это происходит до того, как вы получите root-доступ. Решение состоит в том, чтобы использовать sudo sh -c 'echo disabled > /sys/bus/usb/devices/usb1/power/wakeup' и так далее: получить root, запустить новый ад, чтобы выполнить перенаправление, затем вывести что-то в дескриптор перенаправленного файла.

Согласно документам , в ядре 2.6.32 произошли некоторые изменения в управлении питанием USB , которые, похоже, установились в 2.6.38 . Теперь вам нужно дождаться простоя устройства , которое определяется конкретным драйвером устройства. Драйвер должен поддерживать его, иначе устройство никогда не достигнет этого состояния. К сожалению, теперь у пользователя нет шансов форсировать это. Однако, если вам повезло, и ваше устройство может бездействовать, то чтобы отключить это, вам нужно:

или, для ядер около 2.6.38 и выше:

Это буквально означает « приостановить работу» в тот момент, когда устройство бездействует.

Так что, если ваш поклонник не является чем-то «интеллектуальным», который можно рассматривать как устройство и которым управляет драйвер, вам вряд ли повезет с нынешними ядрами.

Кажется, это приведет к постоянному отключению USB-устройства . (?) Как мне возобновить подачу питания после того, как это сработало? Моя цель - один раз перезагрузить устройство, а не навсегда изменить его конфигурацию подвески. Чтобы возобновить работу приостановленного устройства, вы можете снова отключить функцию «Автоподвеска» echo "on" > "/sys/bus/usb/devices/usbX/power/control" , но я думаю, что вам нужно понять первоначальную цель. Функция автоматической приостановки здесь предназначена только для того, чтобы позволить бездействующим устройствам переходить в состояние пониженного энергопотребления (где оно может казаться выключенным), и возобновляться позже, когда это необходимо, либо хостом, либо каким-либо внешним событием. Это происходит (или должно происходить) автоматически. Сам порт на самом деле никогда не отключается. Действительно, прочитайте документы ;) Я могу подтвердить, что это работает с ядрами> 3.10. Просто должны быть уверены , что устройство «идентификатор» используется правильно: dmesg | grep "usb" и использовать номер после того, как «USB», например: usb 2-4.4: SerialNumber: A0848020 вы будете использовать: /sys/bus/usb/devices/2-4.4/power/. . Также убедитесь, что устройство не используется. Я создал скрипт, чтобы упростить этот процесс Есть ли способ сохранить эту конфигурацию, чтобы при каждом ее подключении она не возвращалась к настройкам по умолчанию? У меня есть устройство, для которого мне нужно установить управление питанием, чтобы оно заряжалось.

Я нашел эти решения, которые по крайней мере работают для правильно сконфигурированного чипа-концентратора Terminus FE 1.1 USB:

1.Чтобы отключить питание всех портов USB концентратора, вы можете отсоединить концентратор от ядра, используя:

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

2. Переключение питания на каждом порту в отдельности более сложное: я смог использовать hubpower для управления каждым портом - но у него есть и обратная сторона: hubpower сначала отключает usbdevfs, что приводит к отключению всех USB-устройств от системы, по крайней мере, в ubuntu :

С этим ioctl отключенным я смог отключить питание отдельного порта, не отключая все устройства, но питание сразу же включается (вероятно, из-за того, что ядро ​​видит неинициализированное устройство), что заставляет USB-устройство просто выполнить «холодный перезапуск», что я в общем хотел сделать. Мой исправленный Hubpower здесь

Подтверждено, что записи bind / unbind работают на ядре linux 2.6.34, чипсете ICH8 и Ubuntu 10.04. bind / unbind не отключает USB-порт независимо от набора микросхем. Устройство по-прежнему получает питание . Лазер мыши выключен, клавиатура не может работать, модем перестает мигать - все хорошо на моей платформе

PowerTOP от Intel позволяет переключать устройства, такие как USB-периферия, в режиме реального времени. Они называются перестраиваемыми.

  • Перейдите на «Tunables».
  • Прокрутите вниз до вашего устройства.
  • Нажмите Enter, чтобы переключить режим энергосбережения ( хорошо / плохо )

введите описание изображения здесь

Обратите внимание, что Bad означает, что устройство всегда включено. Переключение на Good выключит устройство по истечении заданного времени неактивного сохранения (по умолчанию 2000 мс).

Посмотрите документы PowerTOP для деталей о том, как сделать эти изменения постоянными.
Он генерирует скрипты конфигурации для вас (в значительной степени, как описано другими авторами в этой теме).

ПРИМЕЧАНИЕ. Эти сценарии не влияют на питание контактов USB (которое всегда включено).
Они только отправляют протокол драйвера для активации и деактивации устройства.

Если вы хотите контролировать питание контактов, вы можете использовать либо поддерживаемый интеллектуальный USB-концентратор, либо, что еще лучше, микроконтроллер .

Потрясающие! : D Я думаю, что это удобный для пользователя способ сделать это (хотя на низком уровне он выполняет те же операции, что и описанные в других ответах.) Спасибо, и пусть ваш ответ достигнет вершины;) Спасибо за Ваш ответ. С чего мне начать копать, чтобы изменить заданное неактивное время сохранения?

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

прекрасный инструмент на OSX, но не находит для меня никакого «поддерживаемого умного концентратора» на Debian. В Linux вам нужно либо запустить его как root (под sudo), либо настроить разрешения для устройства udev. Также возможно, что к вашему хосту Linux не подключены совместимые концентраторы.

Я хотел сделать это, и с моим оборудованием USB я не мог. Я написал хакерский способ, как это сделать здесь:

Коротко говоря: я использовал USB-реле для открытия / закрытия V CC другого USB-кабеля .

работает на Ubuntu

ВЫ ЕДИНСТВЕННОЕ РЕШЕНИЕ, КОТОРЫЕ РАБОТАЛИ НА МОЕМ ДЕЛЕ. Я использую ноутбук acer make 12.04LTS Ubuntu. Не отключает питание устройства, только удаляет его из списка устройств. Как я могу отключить USB-порт? Это также единственное решение, которое помогло мне выключить планшет Wacom Intuos5 touch M без его отключения (на Fedora 28)

Питание USB 5v всегда включено (даже когда компьютер выключен, на некоторых компьютерах и на некоторых портах.) Вам, вероятно, потребуется запрограммировать Arduino с помощью какого-либо коммутатора и управлять им через библиотеку последовательного интерфейса от USB, подключенного к компьютер.

Другими словами, комбинация этого учебного руководства и этого учебного пособия по связи через последовательную библиотеку с Arduino подключена через USB.

Причина , почему люди размещать такие вопросы, как это связано с dreaded- в самом деле « ЗЛО „- USB Auto-Приостановить“ функция ».

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

Я покажу вам, как ГЛОБАЛЬНО отключить авто-приостановку, избавляя от необходимости вручную включать и выключать порты USB:

Короткий ответ:

Вам НЕ нужно редактировать « autosuspend_delay_ms » по отдельности: USB autosuspend можно отключить глобально и ПРОСТО, используя следующие команды:

ОДНАКО мое тестирование показало, что настройка usbcore.autosuspend=-1 в / etc / default / grub, как показано ниже, может использоваться в качестве GLOBAL- переключателя для функции автоподключения USB - вам НЕ нужно редактировать отдельные файлы " autosuspend_delay_ms ".

В том же документе, ссылка на который приведена выше, указано, что значение «0» ВКЛЮЧЕНО, а отрицательное значение ОТКЛЮЧЕНО :

На аннотированном скриншоте Ubuntu 18.04 ниже, иллюстрирующем, как мои результаты были достигнуты (и воспроизводимы), пожалуйста, отметьте, что по умолчанию «0» ( включено ) в autosuspend_delay_ms .

Затем обратите внимание, что после ТОЛЬКО настройки usbcore.autosuspend=-1 в Grub, эти значения теперь отрицательны ( отключены ) после перезагрузки. Это избавит меня от необходимости редактировать отдельные значения и теперь может отключить автоматическое отключение USB.

снимок экрана: автоматическое приостановление значений до и после глобального редактирования

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

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

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


рылся в закладки

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

что-то типа: 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 *


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

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

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

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

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

Читайте также: