我正在尝试在 Odroid 板上的 Ubuntu 20.04 中调试 Qt5 c 应用程序。该应用程序通过 ioctl() 与 wifi 适配器通信,例如:
int fd = iw_sockets_open();
struct ifreq ifreq;
//ifreq.ifr_name holds "wlxe894f617ebe6" from "iw dev" output
if (ioctl(fd, SIOCSIFFLAGS, &ifreq) == -1) {
return FALSE;
}
问题是它仅在作为 sudo 运行时才有效。当我从 QtCreator 运行它时,它在上面的 ioctl() 调用中失败,返回 -1,perror() 说“不允许操作”。从 sudo 下它可以正常通过并进一步工作。
lsusb 将适配器命名为:
Bus 001 Device 012: ID 148f:5572 Ralink Technology, Corp. RT5572 Wireless Adapter
iw dev 给出:
phy#0
Interface wlxe894f617ebe6
ifindex 3
wdev 0x1
addr e8:94:f6:17:eb:e6
type managed
txpower 20.00 dBm
另外,适配器似乎在/dev/目录中没有相应的文件。在这种情况下如何授予用户对 ioctl() 的访问权限?
我尝试像其他 USB 设备一样授予访问权限,添加行
SUBSYSTEM=="usb", ATTRS{idVendor}=="148f", ATTRS{idProduct}=="5572", MODE="0666"
到/etc/udev/rules.d/50-myusb.rules,但没有结果。我想我应该将用户添加到某个组,例如“wlan”或类似组,但找不到任何可能与此处相关的组名称。