我的(几个)USB 驱动器之一在 dmesg 中报告此错误
usb 5-1: device descriptor read/8, error -110
如何找到所有 USB 设备的 /dev/sdX 名称?
反过来:如果给定设备的 /dev/sdX 名称,我如何找出该设备的 USB 编号?
更新:这里给出了许多优秀的答案。我希望这些信息能够出现在像 的标准工具中lsusb
,但遗憾的是它还没有出现。我选择奖励@sudodus,因为他的回答似乎最能回答获取所有驱动器名称的问题。
回答:
为了生成更清晰的输出,我建议这个稍微长一些的命令
find /sys/ -name dev -path '*usb*block*' | grep -v "sd../" | grep -Po "\/usb.*\/sd."
答案1
在sysfs中找到这个设备
# cd /sys/bus/usb/devices/5-1
查找分配给它的所有块设备
# find . -name dev -path '*block*'
./5-1:1/.../block/sdc/sdc2/dev
./5-1:1/.../block/sdc/dev
./5-1:1/.../block/sdc/sdc1/dev
答案2
恐怕标题中所述的问题的任何好的答案都无法帮助您解决您的确切问题,因为您报告的错误:
usb 5-1: device descriptor read/8, error -110
是内核无法正确识别所述 USB 设备的致命故障的结果。因此,不可能附加任何适当的驱动程序并因此填充 /sys 树。不要寻找任何 /dev/sd* 对应的条目,根本不可能有!
USB错误-110表示“传输完成前超时已过“。造成这种情况的可能原因数量...巨大。
但是,考虑到您编写的系统中插入了 7 个 USB 驱动器,更不用说可能的其他 USB 设备,例如键盘、鼠标、网络摄像头...最有可能的原因是是主机无法为设备提供足够的电力。
为了进行确认,最好的方法是拔掉所有 USB 设备(不仅是驱动器,因为最终我们没有得到任何信息表明关联设备是驱动器),然后将它们依次插入正在看你的邮件。
当然,除非您真的得到了一台要求特别高的设备,否则您就会明白罪魁祸首不是某一台设备,而是它们的集合。
答案3
我在我的计算机中使用 USB 大容量存储设备(USB 闪存盘和 USB 连接的 SSD)进行了一些测试,并认为输出
find /sys/ -name dev -path '*usb*block*'
可以帮助您将设备的 USB 编号与其/dev/sdX
名称进行匹配。
另一种方法是匹配命令lsblk
行lsusb
并通过“型号/产品”和“序列号”标签来识别它们,
lsblk -do name,model,serial,hotplug|grep -e HOTPLUG$ -e 1$
sudo lsusb -v |grep -i -e '^BUS .* Device' -e product -e serial