打开/关闭 USB 端口的电源

打开/关闭 USB 端口的电源

是否可以使用 Ubuntu 中的终端打开/关闭特定的 USB 端口?

lsusb显示以下结果:

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.

希捷是我的外部硬盘驱动器。我可以在终端中将其关闭吗?

我试过使用 Linux 控制 USB 电源(开/关)。但我搞不清楚应该用什么来代替usbX

答案1

之前的所有答案都谈到了USB 暂停机制,即“逻辑断电”,它们永远不会从 USB 端口物理切断 VBUS +5V。

只有少数集线器可以真正切断 VBUS这里

枢纽动力工具可以做到这一点(如果集线器支持它)。

答案2

遇到同样的问题后,我发现应该以不同的方式输入命令,以便“sudo”能够适当地应用权限。

使用“tee”命令。

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

将应用 root 权限到“tee”命令,该命令会将 0 写入指定文件,替换当前存在的所有内容。要附加,请使用带有选项 -a 的 tee 命令。

有关信息请参阅手册页tee

答案3

其实usbX只是 USB 端口号,其中X表示数字,如12等等。例如,usb1对于usb2端口12一般而言,笔记本电脑可能有三个或四个USB端口,其中USB 2.0端口和USB 3.0端口。

在 Ubuntu 中,usb1usb2...usbX是 的链接/sys/devices/pci000:00/*。为了更好地理解它,请运行以下命令:

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

因此,启用/禁用 USB 端口usbX将被替换为usb1您想要启用/禁用的时间USB Port Number 1(或参考 Stack Exchange):


编辑:谢谢斯蒂芬·丹切夫告诉正确的方法回声使用一些文本到文件须藤(也请查看他的评论。)你不应该得到没有权限现在留言。

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"

查看lsusb结果后,您的 Seagate 设备似乎已连接到Port No. 2,因此您需要禁用usb2。然后命令将是:

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"

答案4

udisksctlpower-off标志,我建议你结合使用 unmount

来自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

演示

这是我卸载 USB 闪存盘并关闭电源的过程

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:$ 

相关内容