用命令行远程重置USB设备

有时家里的NAS一些USB设备因为莫名的原因工作不正常,需要插拔一下,但是你又不在家同时又找不到人帮忙怎么办呢?

今天刚好因为这个原因,上网搜了一下,果然有大神帮你想好了,做过了小工具给你断电重置某个USB接口,相当于插拔一次。

我的是PVE系统,基于Debian的,按理所有Linux版本应该都没问题,步骤如下:

$ mkdir usbreset
$ cd usbreset
$ wget $ https://raw.githubusercontent.com/jkulesza/usbreset/master/usbreset.c
$ cc usbreset.c -o usbreset
$ chmod +x usbreset

上面执行完毕就编译好了自己的工具了,接下来就是重置USB设备电源了。

@pve:~/usbreset# lsusb
 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 Bus 001 Device 008: ID 8087:0a2b Intel Corp. 
 Bus 001 Device 003: ID 03f0:e111 HP, Inc 
 Bus 001 Device 002: ID 0665:5161 Cypress Semiconductor USB to Serial
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

运行了$ lsusb命令,就看到了插在电脑上的USB设备情况,这里我需要重置下Bus 001 Device 008: ID 8087:0a2b Intel Corp.,这个是我的无线网卡的蓝牙模块。接着运行如下命令就可以热插拔一次了。

@pve:~/usbreset# ./usbreset /dev/bus/usb/001/008
 Resetting USB device /dev/bus/usb/001/008
 Reset successful

这里001对应的是BUS001,008对应的是Device 008。如果需要热插拔其他设备,根据lsusb结果选自己需要的这样子就可以了。

参考资料如下:https://olimex.wordpress.com/2020/07/17/linux-tip-how-to-reset-device-connected-to-usb-port/

Leave a Reply

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注