Non-root access to a wifi adapter via ioctl in Linux app - how to grant?

78 views Asked by At

I'm trying to debug a Qt5 c app in Ubuntu 20.04 on Odroid board. The app communicates with wifi adapter via ioctl(), eg:

int fd = iw_sockets_open();
struct ifreq ifreq;
//ifreq.ifr_name holds "wlxe894f617ebe6" from "iw dev" output
if (ioctl(fd, SIOCGIFFLAGS, &ifreq) == -1) {
  return FALSE;
}

The problem is that it works only when run as sudo. When I run it from QtCreator, it fails at above ioctl() call returning -1, perror() saying "Operation not permitted". From under sudo it passes and works furhter normally.

lsusb names adapter as:

Bus 001 Device 012: ID 148f:5572 Ralink Technology, Corp. RT5572 Wireless Adapter

iw dev gives:

phy#0
        Interface wlxe894f617ebe6
                ifindex 3
                wdev 0x1
                addr e8:94:f6:17:eb:e6
                type managed
                txpower 20.00 dBm

Also, the adapter seems to have no corresponding file in the /dev/ directory. How to grant user access to ioctl() in this case?

I tried to grant the access like with other usb devices, adding the line

SUBSYSTEM=="usb", ATTRS{idVendor}=="148f", ATTRS{idProduct}=="5572", MODE="0666"

to /etc/udev/rules.d/50-myusb.rules, but with no result. I thought I should add the user to some group like "wlan" or alike, but can't find any group name which could be related here.

0

There are 0 answers