我有一个USB控制的电源带,有一个单一的usb端口。

如果我的电脑打开,并通过usb连接到电源条,电源条将为所有插座提供电力。我想在程序上禁用电源到计算机上的usb端口,这是连接电源条。
这样做是行不通的:
$ echo suspend > /sys/bus/usb/devices/usb*/power/level
-bash: echo: write error: Invalid argument还有别的办法吗?我希望能够从其他地方连接到我的服务器,并关闭连接到电源插座的所有设备的电源。
发布于 2011-05-16 20:25:57
除了读取连接的USB端口提供的+5V之外,电源条还能做什么吗?(你在dmesg上看到什么东西了吗?插入lsusb后,它的输出会改变吗?)如果没有,内核甚至可能不认识到任何附加的东西。如果设备本身从未枚举过,就不能告诉设备挂起:它永远不会出现在/sys/bus/ USB /设备下面,而在USB中,挂起设备而不是端口。
此外,来自Documentation/usb/power-management.txt:
power/control
This file contains one of two words: "on" or "auto".
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.
(In kernels up to 2.6.32, you could also specify
"suspend", meaning that the device should remain
suspended and autoresume was not allowed. This
setting is no longer supported.)因此,根据最后一条小语句,如果您的内核比2.6.32更新,听起来似乎无法强制USB设备挂起。
很抱歉,我不能给你你真正想要的答案,你想做的事情听起来很不错,但我希望这是有帮助的。
发布于 2014-05-08 02:33:20
我自己也有同样的问题。ls -al显示只有root才有写访问权。
-rw-r--r-- 1 root root 4.0K May 8 10:27 level所以我试着用sudo做同样的命令,但是仍然有相同的错误。
我发现让它工作的唯一方法是在这个文件上做一个chmod,然后写进它。还有。在我这边,控制和autosuspend_delay_ms是不够的。我必须解开它才能真正挂起它。
sudo chmod 777 /sys/bus/usb/devices/2-1.7/power/control
sudo chmod 777 /sys/bus/usb/devices/2-1.7/power/autosuspend_delay_ms
sudo chmod 777 /sys/bus/usb/drivers/usb/unbind
echo "auto" > "/sys/bus/usb/devices/2-1.7/power/control"
echo "0" > "/sys/bus/usb/devices/2-1.7/power/autosuspend_delay_ms"
echo -n "2-1.7" > /sys/bus/usb/drivers/usb/unbind发布于 2014-09-14 14:56:47
谢谢Patrice给我的解决方案,这个解决方案对我有用。唯一的问题是,我不知道如何重新启动设备!试图通过以下方式扭转这一过程
echo "on" > "/sys/bus/usb/devices/2-1.7/power/control"
echo "2000" > "/sys/bus/usb/devices/2-1.7/power/autosuspend_delay_ms"
echo -n "2-1.7" > /sys/bus/usb/drivers/usb/bind不起作用。最后,我唯一能做的就是使用C代码ioctl(fd,USBDEVFS_RESET,0)重置整个USB总线,这似乎迫使它重新启动。这是通过编译找到的代码这里 (即使用gcc usbreset.c -o bus重置)并在本例中的总线#2上运行。
usbreset /dev/bus/usb/002/001通过这样做,总线2上的所有设备似乎都返回了它们的默认属性集。
https://unix.stackexchange.com/questions/13281
复制相似问题