OdroidボードのUbuntu 20.04でQt5 cアプリケーションをデバッグしようとしています。アプリケーションはioctl()を介してWi-Fiアダプタと通信します。たとえば、次のようになります。
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」などの一部のグループにユーザーを追加する必要があると思いますが、関連するグループ名を見つけることができません。