问题
将 USB 设备组设置为usrp
模式的 udev 规则用于0660
允许组中的用户usrp
访问 USB 设备。不再。
平台
x86_64 Fedora 34 / 库存 Fedora UHD 4.0.0.0 uhd-4.0.0.0-3.fc34.x86_64
硬件发现
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 0bda:568b Realtek Semiconductor Corp. Integrated_Webcam_HD
Bus 001 Device 003: ID 04f3:20d0 Elan Microelectronics Corp. Touchscreen
Bus 001 Device 002: ID 8087:0a2b Intel Corp. Bluetooth wireless interface
Bus 001 Device 009: ID 2500:0020 Ettus Research LLC USRP B210
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
/usr/lib/udev/rules.d/10-usrp-uhd.rules 中的规则似乎运行良好:
…
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2500", ATTRS{idProduct}=="0020", GROUP:="usrp" MODE:="0660", ENV{ID_SOFTWARE_RADIO}="1"
…
导致
$sudo udevadm test /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1
…
1-1: /usr/lib/udev/rules.d/10-usrp-uhd.rules:15 GROUP 1000
1-1: /usr/lib/udev/rules.d/10-usrp-uhd.rules:15 MODE 0660
1-1: Handling device node '/dev/bus/usb/001/009', devnum=c189:8
1-1: Setting permissions /dev/bus/usb/001/009, uid=0, gid=1000, mode=0660
…
经证实ls -l
:
crw-rw----. 1 root usrp 189, 8 Nov 9 14:53 /dev/bus/usb/001/009
我很确定我在usrp
:
$ groups
marcus wheel libvirt usrp mockbuild
症状
$ export UHD_IMAGES_DIR=/usr/share/uhd/images
$ uhd_usrp_probe
[INFO] [UHD] linux; GNU C++ version 11.0.1 20210324 (Red Hat 11.0.1-0); Boost_107500; UHD_4.0.0.0
[ERROR] [USB] USB open failed: insufficient permissions.
See the application notes for your device.
Error: LookupError: KeyError: No devices found for ----->
Empty Device Address
(但以 root 身份工作)
更多侧面信息
- 以前工作得很好
- /var/log/audit/audit.log 中没有条目
答案1
我在 Fedora 35 下使用另一个 SDR 时遇到了同样的问题,并通过添加“OWNER”/设备访问用户名解决了该问题:
子系统==“usb”,ATTR {idVendor} ==“xxxx”,ATTR {idProduct}==“xxxx”,MODE =“0660”,所有者=“我的用户”
然后,运行
sudo udevadm control --reload-rules && sudo udevadm trigger
该命令通知 udev deamon 重新加载新添加的设备规则并再次重新触发服务,而无需重新启动该系统。现在无需 root 权限即可运行!