是否可以使用 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
答案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
表示数字,如1
或2
等等。例如,usb1
对于usb2
端口1和2一般而言,笔记本电脑可能有三个或四个USB端口,其中USB 2.0端口和USB 3.0端口。
在 Ubuntu 中,usb1
、usb2
...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
udisksctl
有power-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:$