首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正在关闭单个usb设备...再一次

正在关闭单个usb设备...再一次
EN

Stack Overflow用户
提问于 2013-09-12 21:30:14
回答 3查看 36.9K关注 0票数 23

我知道这个话题已经讨论过很多次了,但没有一个答案对我有帮助。根据记录,我运行的是Debian。

交易是这样的:我买了一盏usb供电的led灯,它非常简单,甚至没有开/关开关(它可以工作,而且总是亮着的)。我希望能够通过命令行打开/关闭它。这是我尝试过的:

代码语言:javascript
运行
复制
    echo on > /sys/bus/usb/devices/usb1/power/level       # turn on
    echo suspend > /sys/bus/usb/devices/usb1/power/level  # turn off

这是我在许多论坛上发现的。打开“打开”是可行的,但“挂起”会产生

代码语言:javascript
运行
复制
    -su: echo: write error: Invalid argument

对于每个usbN。我也试过了

代码语言:javascript
运行
复制
    echo "0" > "/sys/bus/usb/devices/usbX/power/autosuspend_delay_ms"

它不会给出错误,但也不会做任何事情(同样,对于每个usbN)

正在尝试

代码语言:javascript
运行
复制
    echo "usb1" > /sys/bus/usb/drivers/usb/unbind

只适用于更多的“智能”设备,如键盘、鼠标或usb wifi卡。我的意思是,只有tyhose设备被关闭,其他usbN不会给出错误,但灯永远不会熄灭。

sys/bus/usb/devices/的内容如下

代码语言:javascript
运行
复制
    1-0:1.0 1-1:1.0 1-2:1.0 1-2:1.2 2-0:1.0 4-0:1.0 4-1:1.0 6-0:1.0 8-0:1.0 8-2:1.0 usb2 usb4 usb6 usb8
    1-1 1-2 1-2:1.1 1-2:1.3 3-0:1.0 4-1 5-0:1.0 7-0:1.0 8-2 usb1 usb3 usb5 usb7

我试着去做

代码语言:javascript
运行
复制
    echo device_name > /sys/bus/usb/drivers/usb/unbind

对于其中的每一个,但只有usbN和N-M设备发生反应,n-m:x.y形式的设备才会屈服

代码语言:javascript
运行
复制
    tee: /sys/bus/usb/drivers/usb/bind: No such device

(例如,我尝试输入"1-0:1.0“、"1-0\:1.0”和"1-0\:1.0",结果都是一样的)。

最后一件事,执行后显示的是什么

代码语言:javascript
运行
复制
    lsusb -t

当我插入或拔出灯的插头时不会改变。

有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2014-04-15 09:52:29

关闭设备ID 2-1:

echo '2-1' |sudo tee /sys/bus/usb/drivers/usb/unbind

重新打开设备ID 2-1:

echo '2-1' |sudo tee /sys/bus/usb/drivers/usb/bind

在我的例子中,使用设备ID 2-1控制我的U盘的电源,并因此控制指示灯。

  • 提示:如果他们在Debian中为你工作,为他们创建一个别名,让你以后的生活更轻松。

希望这对你有帮助,苏

票数 22
EN

Stack Overflow用户

发布于 2015-02-16 06:15:21

如果您只想在USB设备进入损坏状态时重置它来修复它,那么使用bind/unbind usbfs特殊文件可能有点麻烦(因为设备ID可能会改变,如果您不想重新绑定其他设备,那么要准确识别它们有点棘手)。在这种情况下,我发现在usb_modeswitch中使用lsusb提供的供应商和产品ID要容易得多。例如,如果我使用以下命令识别无线适配器:

代码语言:javascript
运行
复制
$ lsusb
Bus 001 Device 042: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
Bus 001 Device 035: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

然后,我可以使用以下命令重置无线适配器:

代码语言:javascript
运行
复制
$ sudo usb_modeswitch -v 0x7392 -p 0x7811 --reset-usb

如果您有多个连接了相同供应商和产品If的设备,则usb_modeswitch会提供总线和设备号标志。对于上面的无线适配器示例,我会将-b 1 -g 42添加到标志中。

票数 9
EN

Stack Overflow用户

发布于 2018-05-15 18:00:07

试试这段代码,它适用于我(仅适用于rooted用户)

代码语言:javascript
运行
复制
 String[] cmdline = { "su", "-c", "echo '1-1' >/sys/bus/usb/drivers/usb/unbind" };
try {
    Runtime.getRuntime().exec(cmdline);
} catch (IOException e) {
    Log.e("MainActivity","Failed"+e);
}

为了再次绑定,请执行以下操作

代码语言:javascript
运行
复制
    String[] cmdline = { "su", "-c", "echo '1-1' >/sys/bus/usb/drivers/usb/bind" };
try {
    Runtime.getRuntime().exec(cmdline);
} catch (IOException e) {
    Log.e("MainActivity","Failed"+e);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18765725

复制
相关文章

相似问题

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