首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用USB控制电源条的USB电源

禁用USB控制电源条的USB电源
EN

Unix & Linux用户
提问于 2011-05-16 18:46:05
回答 4查看 13.3K关注 0票数 6

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

如果我的电脑打开,并通过usb连接到电源条,电源条将为所有插座提供电力。我想在程序上禁用电源到计算机上的usb端口,这是连接电源条。

这样做是行不通的:

代码语言:javascript
复制
$ echo suspend > /sys/bus/usb/devices/usb*/power/level
-bash: echo: write error: Invalid argument

还有别的办法吗?我希望能够从其他地方连接到我的服务器,并关闭连接到电源插座的所有设备的电源。

EN

回答 4

Unix & Linux用户

回答已采纳

发布于 2011-05-16 20:25:57

除了读取连接的USB端口提供的+5V之外,电源条还能做什么吗?(你在dmesg上看到什么东西了吗?插入lsusb后,它的输出会改变吗?)如果没有,内核甚至可能不认识到任何附加的东西。如果设备本身从未枚举过,就不能告诉设备挂起:它永远不会出现在/sys/bus/ USB /设备下面,而在USB中,挂起设备而不是端口。

此外,来自Documentation/usb/power-management.txt

代码语言:javascript
复制
 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设备挂起。

很抱歉,我不能给你你真正想要的答案,你想做的事情听起来很不错,但我希望这是有帮助的。

票数 8
EN

Unix & Linux用户

发布于 2014-05-08 02:33:20

我自己也有同样的问题。ls -al显示只有root才有写访问权。

代码语言:javascript
复制
-rw-r--r-- 1 root root 4.0K May  8 10:27 level

所以我试着用sudo做同样的命令,但是仍然有相同的错误。

我发现让它工作的唯一方法是在这个文件上做一个chmod,然后写进它。还有。在我这边,控制和autosuspend_delay_ms是不够的。我必须解开它才能真正挂起它。

代码语言:javascript
复制
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
票数 2
EN

Unix & Linux用户

发布于 2014-09-14 14:56:47

谢谢Patrice给我的解决方案,这个解决方案对我有用。唯一的问题是,我不知道如何重新启动设备!试图通过以下方式扭转这一过程

代码语言:javascript
复制
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上运行。

代码语言:javascript
复制
usbreset /dev/bus/usb/002/001

通过这样做,总线2上的所有设备似乎都返回了它们的默认属性集。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/13281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档