GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ausschalten der Stromversorgung zum USB-Port. Oder schalten Sie das gesamte USB-Subsystem aus?

Ich habe eine USB-Lampe, die ich speziell gekauft habe, um sie programmgesteuert zu einer bestimmten Zeit auszuschalten, daher muss ich die Stromversorgung zu ihrem USB-Anschluss unterbrechen.

Ich glaube, ich habe einen USB-Hub an USB6. Die Lampe ist mit einem der Ports in diesem Hub verbunden:

#myhost$ lsusb 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
...
Bus 008 Device 006: ID 050d:0234 Belkin Components F5U234 USB 2.0 4-Port Hub

Folgendes habe ich versucht:

Zwei Lösungen sind hier, die erste schlägt vor:

echo disabled > /sys/bus/usb/devices/usb1/power/wakeup 
echo suspend > /sys/bus/usb/devices/usb1/power/level  # turn off

aber ich erhalte write error: Invalid argument beim Versuch, in /sys/bus/usb/devices/usb1/power/level zu schreiben :

$sudo bash -c 'echo disabled > /sys/bus/usb/devices/usb6/power/wakeup'
$echo suspend|sudo tee /sys/bus/usb/devices/usb6/power/level suspend
tee: /sys/bus/usb/devices/usb6/power/level: Invalid argument
$sudo bash -c 'echo suspend> /sys/bus/usb/devices/usb6/power/level'bash: line 0: echo: write error: Invalid argument

Die zweite Lösung:

sudo bash -c 'echo 0 > /sys/bus/usb/devices/usb6/power/autosuspend_delay_ms; echo auto > /sys/bus/usb/devices/usb6/power/control'

wodurch das USB-Hub-Gerät ausgeschaltet wird.

Ich habe auch versucht, dies zu befolgen:

Aber die Ausgabe von lsusb -t hängt nur:

$lsusb -t
4-1:0.0: No such file or directory
4-1:0.1: No such file or directory
^C

Was mich daran hindert, diese Methode zu verwenden, um den Teil „2-1.1“ dazu zu bekommen:

echo '2-1.1' > /sys/bus/usb/drivers/usb/unbind

Gibt es eine alternative Möglichkeit, diese Informationen zu erhalten?

Gibt es alternativ eine Möglichkeit, die Stromversorgung des gesamten USB-Subsystems abzuschalten? Etwas wie modprobe -r usb_etc ?

Mein Kernel ist:

$uname -r
3.2.0-4-amd64

Akzeptierte Antwort:

Sie könnten mein Tool uhubctl verwenden – Befehlszeilenprogramm zur Steuerung der USB-Stromversorgung pro Port für kompatible USB-Hubs.

Es funktioniert nur auf Hubs, die eine Stromumschaltung pro Port unterstützen, aber beachten Sie, dass viele moderne Motherboards USB-Hubs haben, die diese Funktion unterstützen.

Kompilieren:

git clone https://github.com/mvp/uhubctl
cd uhubctl
make

Zur systemweiten Installation als /usr/sbin/uhubctl :

sudo make install

Um den Status aller Hubs, ihre Standorte und Ports aufzulisten, die von uhubctl gesteuert werden können:

sudo uhubctl

(Sie können die Verwendung von sudo vermeiden wenn Sie udev-USB-Berechtigungen konfigurieren).

Verwandte:Warum gibt das Löschen einer Datei auf einem USB-Stick keinen Speicherplatz frei?

So schalten Sie Port 5 eines einzelnen kompatiblen Hubs aus:

sudo uhubctl -a 0 -p 5

Wenn Sie mehr als einen kompatiblen Hub angeschlossen haben, verwenden Sie -l So geben Sie den Hub-Standort an, um ihn zu steuern:

sudo uhubctl -a 0 -p 5 -l 3-1.2

So schalten Sie das Gerät aus und wieder ein:

sudo uhubctl -a 2 -p 5

Beachten Sie, dass USB 3.0-Hubs ebenfalls unterstützt werden und einige neue USB 3.0-Hubs tatsächlich gut funktionieren.

Lesen Sie hier mehr.


Linux
  1. Linux USB:Strom ein- und ausschalten?

  2. Steuern einer USB-Stromversorgung (ein/aus) mit Linux

  3. Deaktivieren Sie den Linux-Dateicache

  4. Wie schalte ich den Bildschirm mit einer Verknüpfung in Linux aus?

  5. USB Typ-C, wie wird die Richtung der Stromversorgung gesteuert?

3 Möglichkeiten, Debian auszuschalten

So deaktivieren Sie das Durchsuchen von Verzeichnissen auf Apache und Nginx

Wie überprüfen Sie, wie viel Strom ein USB-Anschluss liefern kann?

So schalten Sie die drahtlose Energieverwaltung dauerhaft aus

Wann sollte TCP SACK deaktiviert werden?

Deaktivieren des interaktiven Modus des Befehls cp (copy) (cp :overwrite ?)