![Udev 规则允许已知 USB 设备检测不到我的集线器](https://linux22.com/image/97003/Udev%20%E8%A7%84%E5%88%99%E5%85%81%E8%AE%B8%E5%B7%B2%E7%9F%A5%20USB%20%E8%AE%BE%E5%A4%87%E6%A3%80%E6%B5%8B%E4%B8%8D%E5%88%B0%E6%88%91%E7%9A%84%E9%9B%86%E7%BA%BF%E5%99%A8.png)
我添加了一条 udev 规则,该规则仅允许已知的 USB 设备,但它不会授权我的集线器,因此每个 USB 端口都未经授权。这是我的集线器 udev 规则:
# Skeep not USB
SUBSYSTEM!="usb", GOTO="usb_end"
# Skeep remove actions
ACTION=="remove", GOTO="usb_end"
# 2.0 root hub
SUBSYSTEMS=="usb", ACTION=="add", ATTR{product}=="EHCI Host Controller", ATTR{serial}=="0000:00:1a.0", \
ATTR{idVendor}=="1d6b", ATTR{idProduct}=="0002", ATTR{bDeviceClass}=="09", ATTR{authorized}="1", GOTO="usb_end"
# Disable all other USB devices
SUBSYSTEMS=="usb", ACTION=="add", ATTR{authorized}="0"
LABEL="usb_end"
操作系统:Gentoo 强化版
内核:4.7.9-硬化
答案1
您可以通过设置 udev 规则执行脚本来调试 udev 规则。该脚本可以记录各种项目。
例如:$DEVNAME、$ACTION
从 USB 集线器记录所有数据后,您将能够看到缺少哪些设备或缺少哪些信息。
udev 规则,需要 RUN+="/usr/local/bin/log.sh"
在 log.sh 中, env >> /tmp/blabla.log,或 echo "$DEVNAME $ACTION ..." >> /tmp/blabla.log