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

Linux USB:Strom ein- und ausschalten?

Die USBFS-Interaktion scheint sich einige Male geändert zu haben, seit diese Frage ursprünglich beantwortet wurde. So schalte ich die Stromversorgung des Hub-Ports auf Ubuntu Oneiric Ocelot von einer Bash-Shell aus ein.

Suchen Sie nach der Bus- und Gerätenummer:

sudo lsusb -v|less

Lokalisieren Sie das Gerät in der Bus-/Hub-Port-Hierarchie anhand der Bus- und Gerätenummer:

sudo lsusb -t|less

Die Syntax scheint 'bus-port.port.port.port.port...' zu sein. Zum Beispiel ist meine Maus mit einem externen Hub verbunden, der mit dem Hub meines Computers verbunden ist, der intern mit einem Root-Hub verbunden ist:

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
        |__ Port 1: Dev 3, If 0, Class=hub, Driver=hub/3p, 480M
            |__ Port 1: Dev 6, If 0, Class=HID, Driver=usbhid, 1.5M

Also '2-1.1.1' im obigen Fall. Schalten Sie schließlich die Stromversorgung des Ports aus und wieder ein:

echo '2-1.1.1'|sudo tee /sys/bus/usb/drivers/usb/unbind
sleep 1
echo '2-1.1.1'|sudo tee /sys/bus/usb/drivers/usb/bind

Ich habe keinen Protokollanalysator angeschlossen, um zu sehen, was tatsächlich auf dem Bus passiert, aber ich weiß, dass das Licht meiner Maus ausgeht, wenn ich sie entbinde. Ich vermute, dass dies auf einer niedrigeren Ebene mit dem EHCI-Hostcontroller interagiert, um den Port tatsächlich auszuschalten. Dies ist besonders nützlich für eingebettete Geräte wie UVC-Webcams, die scheinbar nie richtig funktionieren und andernfalls einen Systemneustart zum Zurücksetzen erfordern würden.

Siehe auch udevadm Befehl.


Unter Linux gibt es dafür einen sys-Eintrag. Aus Documentation/usb/power-management.txt:

Leistung/Stufe

This file contains one of three words: "on", "auto",
or "suspend".  You can write those words to the file
to change the device's setting.

"on" means that the device should be resumed and
autosuspend is not allowed.  (Of course, system
suspends are still allowed.)

"auto" is the normal state in which the kernel is
allowed to autosuspend and autoresume the device.

"suspend" means that the device should remain
suspended, and autoresume is not allowed.  (But remote
wakeup may still be allowed, since it is controlled
separately by the power/wakeup attribute.)

Etwas wie:echo on > /sys/bus/usb/devices/usb5/power/level

Möglicherweise müssen Sie auch mit der Autosuspend-Einstellung spielen. Ohne dem Kernel zu sagen, dass er den Versuch beenden soll, kann er den Port automatisch suspendieren.

Viel Glück!


Linux
  1. So überprüfen Sie die Betriebssystem- und Linux-Version

  2. Finden Sie die größten Dateien und Verzeichnisse in Linux

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

  4. Wie würde ich die Ausgabe der Leistung in USB-Anschlüssen in Linux steuern?

  5. Lesen und Schreiben auf die serielle Schnittstelle in C unter Linux

Linux auf dem Mainframe:Damals und heute

Das Gute, das Schlechte und das Hässliche von Linux im Jahr 2014

Was ist der Unterschied zwischen Linux und Unix?

So erstellen Sie einen Multiboot-USB in Linux und Windows

So finden Sie die Portnummer eines Dienstes in Linux

So ändern Sie den Standard-SSH-Port in Linux [richtig und sicher]