Ein- / Ausschalten der USB-Anschlüsse

18

Ist es möglich, einen bestimmten USB-Port über das Terminal in Ubuntu ein- oder auszuschalten?

lsusb zeigt folgendes Ergebnis an:

Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 2232:1020
Bus 002 Device 009: ID 0bc2:a013 Seagate RSS LLC
Bus 002 Device 003: ID 0a5c:219c Broadcom Corp.

Seagate ist meine externe Festplatte. Kann ich es im Terminal ausschalten?

Ich habe versucht, ein USB-Netzteil (ein / aus) mit Linux zu steuern . Aber ich bin verwirrt darüber, was anstelle von ersetzt werden sollte usbX.

curious_coder
quelle

Antworten:

7

Alle vorherigen Antworten sprechen von einem USB-Suspend- Mechanismus, dh einer "logischen Abschaltung". Sie werden den VBUS + 5V niemals physisch vom USB-Anschluss trennen.

Nur wenige Hubs können tatsächlich VBUS schneiden, wie hier beschrieben .

Das Hub-Power- Tool kann dies tun (wenn der Hub dies unterstützt).

Rustyx
quelle
7

Nachdem ich auf dasselbe Problem gestoßen war, stellte ich fest, dass die Befehle anders eingegeben werden sollten, damit "sudo" die Rechte entsprechend anwendet.

Verwenden Sie den Befehl "tee".

echo 0 | sudo tee /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms

Wendet Root-Rechte auf den Befehl "tee" an, der die 0 in die angegebene Datei schreibt und alles ersetzt, was derzeit vorhanden ist. Verwenden Sie zum Anhängen den Befehl tee mit der Option -a.

Informationen finden Sie auf der Manpage von tee

JohnMoore
quelle
2
Der teeBefehl hat den Nebeneffekt, dass er auch auf dem Bildschirm gedruckt wird. Wenn du willst, dd of=/sys/bus/...schreibe nur in die Datei und nirgendwo anders.
Brandon Rhodes
4

Eigentlich usbXist nichts anderes als die USB-Portnummern, wobei Xdie Nummer wie 1oder 2so weiter bezeichnet ... Zum Beispiel usb1und usb2für die Ports 1 und 2 . Im Allgemeinen verfügt ein Laptop möglicherweise über drei oder vier USB-Anschlüsse mit USB 2.0- und USB 3.0-Anschlüssen.

In Ubuntu usb1, usb2... usbXsind die Links zu /sys/devices/pci000:00/*. Führen Sie den folgenden Befehl aus, um es gut zu verstehen:

ls -l /sys/bus/usb/devices/

So aktivieren / deaktivieren Sie USB-Ports, usbXdie durch ersetzt werden, usb1wenn Sie sie aktivieren / deaktivieren USB Port Number 1(oder auf Stack Exchange verweisen) möchten :


Edit: Dank Stefan Denchev die richtige Art und Weise zu sagen, Echo einen Text in einer Datei mit sudo . (Überprüfen Sie auch seinen Kommentar.) Sie sollten die Meldung " Erlaubnis verweigert" jetzt nicht erhalten .

sudo sh -c "echo '0' > /sys/bus/usb/devices/usb1/power/autosuspend_delay_ms"
sudo sh -c "echo 'auto' > /sys/bus/usb/devices/usb1/power/control"

Nachdem Sie Ihr lsusbErgebnis gesehen haben, sieht es so aus, als wäre Ihr Seagate-Gerät mit diesem verbunden. Port No. 2Sie müssen es deaktivieren usb2. Dann wären die Befehle:

sudo sh -c "echo '0' > /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms"
sudo sh -c "echo 'auto' > /sys/bus/usb/devices/usb2/power/control"
Saurav Kumar
quelle
Vielen Dank. Wenn ich es versucheecho "0" > "/sys/bus/usb/devices/usb2/power/autosuspend_delay_ms" die Ausgabebash: /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms: Permission denied
curious_coder
dann versuche es mit sudo sehen was passiert ..
Saurav Kumar
Ich habe es versucht. Immer noch derselbe Fehler.
curious_coder
Eigentlich habe ich nicht versucht, Ports in Linux zu aktivieren / deaktivieren. Mein Motto war es, Sie darüber klar zu machen usbX Problem informieren. Wenn Sie sich über die Befehle, die Sie abgerufen haben, im Klaren sind, StackOverflowsollten Sie es nur versuchen. Wie auch immer, jetzt bin ich auch daran interessiert zu wissen, welcher Befehl tatsächlich zum Aktivieren / Deaktivieren von Ports dient. Ich antworte dir bald, wenn es bei mir funktioniert. Sagen Sie dann, dass Sie Ihr Gerät vom Stromnetz trennen und es erneut versuchen. oder versuchen Sie es mit der ersten Antwort unter stackoverflow.
Saurav Kumar
1
sudo sh -c "echo 'on' >> /sys/bus/usb/devices/usb4/power/control"
UIlrvnd
1

udisksctlhat power-offFlagge, die ich empfehle, dass Sie in Verbindung mit verwenden unmount

Aus dem man udisksctl:

power-off
           Arranges for the drive to be safely removed and powered off. On the
           OS side this includes ensuring that no process is using the drive,
           then requesting that in-flight buffers and caches are committed to
           stable storage. The exact steps for powering off the drive depends
           on the drive itself and the interconnect used. For drives connected
           through USB, the effect is that the USB device will be deconfigured
           followed by disabling the upstream hub port it is connected to

Demo

Hier trenne ich meinen USB-Jumpdrive und schalte ihn dann aus

testdir:$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 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 001 Device 009: ID 154b:007a PNY 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

testdir:$ lsblk                                                                
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 111.8G  0 disk 
└─sda1   8:1    0 111.8G  0 part /
sdb      8:16   1    30G  0 disk 
└─sdb1   8:17   1    30G  0 part /media/xieerqi/6A32C4555E1C5B4D
sr0     11:0    1  1024M  0 rom  

testdir:$ udisksctl unmount -b /dev/sdb1 && udisksctl power-off -b /dev/sdb1
Unmounted /dev/sdb1.

testdir:$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 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 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

testdir:$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 111.8G  0 disk 
└─sda1   8:1    0 111.8G  0 part /
sr0     11:0    1  1024M  0 rom  

testdir:$ 
Sergiy Kolodyazhnyy
quelle