Zero3W WiFi aic8800_fdrv-Does supoort forward traffic from virtual wlan0.1 to wlan0.2?

My goal is using create 1 Ap (wlan0.1)& 1 Station(wlan0.2) at the same time, and forword the traffic from wlan0.1 to wlan0.2 , from iw list ,
Supported interface modes:
* managed
* AP
* AP/VLAN
* monitor
* mesh point
* P2P-client
* P2P-GO
* P2P-device
valid interface combinations:
* #{ managed, mesh point } <= 1, #{ AP } <= 1, #{ P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1,
total <= 4, #channels <= 3
seems support such combinations, ,i want to know if aic8800 support using iptables to do
sudo iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o wlan0.2 -j MASQUERADE
mysetup is
wlan0.1 as AP mode, static ip addrss 192.168.50.1,
wlan0.2 as client ,connet to other ssid which can access to the internet , i want to client connect to wlan0.1 as can access internet

It would be possible as long as you set your ZERO 3W as a router: separate sub net, providing DHCP & DNS, etc.

Wi-Fi hardware will block other devices if you just bridge it with another interface, unless both ends enable WDS.

--------ip addr show for wlan0.1 (ap-static ip 192.168.50.1)------
------- wlan0.2(client which can access to internet -------
‘’’’
radxa@radxa-zero3:~$ ip addr show wlan0.1
7: wlan0.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 98:03:cf:d2:26:4d brd ff:ff:ff:ff:ff:ff
inet 192.168.50.1/24 brd 192.168.50.255 scope global noprefixroute wlan0.1
valid_lft forever preferred_lft forever
inet 169.254.181.61/16 brd 169.254.255.255 scope global noprefixroute wlan0.1

radxa@radxa-zero3:~$ ip addr show wlan0.2
8: wlan0.2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 98:03:cf:d2:26:4e brd ff:ff:ff:ff:ff:ff
inet 192.168.5.106/24 brd 192.168.5.255 scope global dynamic noprefixroute wlan0.2
valid_lft 40689sec preferred_lft 40689sec
inet 192.168.5.110/24 brd 192.168.5.255 scope global secondary dynamic noprefixroute wlan0.2
valid_lft 40697sec preferred_lft 35297sec
‘’’’

i have one ethernet port ( usb NIC through usb3.0 host ,use udev rule rename it to rad2-aslo can access internet) –
below works fine, - phone conect to wlan0.1 - then can access to internet through rad2

--------------- iptables commands for traffic from wlan0.1 to rad2 this works-------------------
radxa@radxa-zero3:~$ sudo iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o rad2 -j MASQUERADE
radxa@radxa-zero3:~$ sudo iptables -t nat -L -v -n
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
2 144 MASQUERADE 0 – * rad2 192.168.50.0/24 0.0.0.0/0

remove above rule,change it to (wlan0.2 can also access internet)
below not work, phone only can ping 192.168.50.*, the traffic can not forward to wlan0.2,
is this right behavior of the specified aic8800 wireless card, or some wireless card can support this mode( one wlan virtual interface as AP,the other one as station/client mode, and forward the traffic between those 2 virtual interfaces)

--------------- iptables commands for traffic from wlan0.1 to wlan0.2 this does’n work -------------------
radxa@radxa-zero3:~$ sudo iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o wlan0.2 -j MASQUERADE
radxa@radxa-zero3:~$ sudo route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.5.1 0.0.0.0 UG 1005 0 0 rad2
0.0.0.0 192.168.5.1 0.0.0.0 UG 3008 0 0 wlan0.2
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 rad2
169.254.0.0 0.0.0.0 255.255.0.0 U 3007 0 0 wlan0.1
192.168.5.0 0.0.0.0 255.255.255.0 U 1005 0 0 rad2
192.168.5.0 0.0.0.0 255.255.255.0 U 3008 0 0 wlan0.2
192.168.50.0 0.0.0.0 255.255.255.0 U 600 0 0 wlan0.1

Can’t read your message. You should use
```
code block
```
to quote your command output.

Are you referring to this guide?
https://wiki.radxa.com/Rock/Wireless/AP_mode_manually

I’m trying to setup the same on 5c.
I tried
https://wiki.radxa.com/Rock5/guide/apmode
but there seems to be an issue with virtual interfaces support on AIC8800

radxa@rock-5c:~$ sudo create_ap wlan0 wlan0 ROCK5
Config dir: /tmp/create_ap.wlan0.conf.PRD7UERx
PID: 5615
Network Manager found, set ap0 as unmanaged device... DONE
wlan0 is already associated with channel 48 (5240 MHz)
multiple channels not supported,

fallback to channel 48
Creating a virtual WiFi interface... command failed: Invalid argument (-22)

ERROR: Maybe your WiFi adapter does not fully support virtual interfaces.
       Try again with --no-virt.


Doing cleanup.. done

When I try to create virtual interface like here


I get error:

radxa@rock-5c:~$ sudo iw phy phy0 interface add myCli type station
command failed: Invalid argument (-22)

I’ve also tried to use managed instead of station but getting same error

@lesiehzcn how you managed to create your wlan0.1 and wlan0.2?

Can you run zcat /proc/config.gz | grep INOTIFY and paste the result?

CONFIG_INOTIFY_USER=y

Wiki is deprecated so no need to reference that, but I followed link in our Docs that despite seeing the same -22 error, it worked fine:

radxa@rock-5c:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: end1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether e2:87:24:fb:78:98 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.235/24 brd 192.168.2.255 scope global dynamic noprefixroute end1
       valid_lft 3489sec preferred_lft 3489sec
    inet6 fdaa::dfc/128 scope global dynamic noprefixroute 
       valid_lft 3488sec preferred_lft 3488sec
    inet6 240e:3b7:324d:4cf0::dfc/128 scope global dynamic noprefixroute 
       valid_lft 3488sec preferred_lft 3488sec
    inet6 240e:3b7:324d:4cf0:32ce:7e30:9215:c99e/64 scope global dynamic noprefixroute 
       valid_lft 212431sec preferred_lft 126031sec
    inet6 fdaa::e6a0:1869:fa31:8184/64 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::e04e:910:3bde:368/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DORMANT group default qlen 1000
    link/ether 88:00:03:00:00:05 brd ff:ff:ff:ff:ff:ff
4: mySta: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 88:00:03:00:00:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.31.118/24 brd 192.168.31.255 scope global dynamic noprefixroute mySta
       valid_lft 3581sec preferred_lft 3581sec
    inet6 fdaa:0:0:30::dfc/128 scope global dynamic noprefixroute 
       valid_lft 3579sec preferred_lft 3579sec
    inet6 240e:3b7:324d:4cf2::dfc/128 scope global dynamic noprefixroute 
       valid_lft 3579sec preferred_lft 3579sec
    inet6 240e:3b7:324d:4cf2:8ee6:b0d9:ee06:1005/64 scope global dynamic noprefixroute 
       valid_lft 212431sec preferred_lft 126031sec
    inet6 fdaa::30:e365:850b:6d1:e187/64 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::a2ad:8f8:90fa:8e31/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
5: myAcc: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 88:00:03:00:00:06 brd ff:ff:ff:ff:ff:ff
    inet 10.42.0.1/24 brd 10.42.0.255 scope global noprefixroute myAcc
       valid_lft forever preferred_lft forever
    inet6 fe80::8a00:3ff:fe00:6/64 scope link 
       valid_lft forever preferred_lft forever
radxa@rock-5c:~$ ping 10.42.0.172
PING 10.42.0.172 (10.42.0.172) 56(84) bytes of data.
64 bytes from 10.42.0.172: icmp_seq=1 ttl=64 time=172 ms
64 bytes from 10.42.0.172: icmp_seq=2 ttl=64 time=557 ms
64 bytes from 10.42.0.172: icmp_seq=3 ttl=64 time=517 ms
^C
--- 10.42.0.172 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 171.918/415.250/557.006/172.842 ms

You just need to follow the instruction there.

after restart I have

radxa@rock-5c:~$ sudo iw dev
phy#0
        Unnamed/non-netdev interface
                wdev 0x2
                addr 88:00:03:00:11:18
                type P2P-device
        Interface wlan0
                ifindex 3
                wdev 0x1
                addr 88:00:03:00:11:19
                ssid home
                type managed
                channel 132 (5660 MHz), width: 80 MHz, center1: 5690 MHz

and this

radxa@rock-5c:~$ ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
    2: end1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 5a:f3:d6:db:bf:9d brd ff:ff:ff:ff:ff:ff
    3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 88:00:03:00:11:19 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.110/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
       valid_lft 86171sec preferred_lft 86171sec
    inet6 2600:1700:38c0:3e60::29/128 scope global dynamic noprefixroute 
       valid_lft 3374sec preferred_lft 3374sec
    inet6 2600:1700:38c0:3e60:e8c3:c8f1:57f6:16ec/64 scope global dynamic noprefixroute 
       valid_lft 3424sec preferred_lft 3424sec
    inet6 fe80::26bf:58c6:6f5:f7b7/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

next I run two first commands from doc

radxa@rock-5c:~$ sudo iw phy phy0 interface add mySta type station
radxa@rock-5c:~$ sudo iw phy phy0 interface add myAcc type __ap
radxa@rock-5c:~$ sudo iw dev
phy#0
        Interface wlx88000300111a
                ifindex 5
                wdev 0x4
                addr 88:00:03:00:11:1a
                type managed
        Interface wlx88000300111b
                ifindex 4
                wdev 0x3
                addr 88:00:03:00:11:1b
                type managed
        Unnamed/non-netdev interface
                wdev 0x2
                addr 88:00:03:00:11:18
                type P2P-device
        Interface wlan0
                ifindex 3
                wdev 0x1
                addr 88:00:03:00:11:19
                ssid home
                type managed
                channel 132 (5660 MHz), width: 80 MHz, center1: 5690 MHz

and

radxa@rock-5c:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: end1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 5a:f3:d6:db:bf:9d brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 88:00:03:00:11:19 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.110/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
       valid_lft 85806sec preferred_lft 85806sec
    inet6 2600:1700:38c0:3e60::29/128 scope global dynamic noprefixroute 
       valid_lft 3008sec preferred_lft 3008sec
    inet6 2600:1700:38c0:3e60:e8c3:c8f1:57f6:16ec/64 scope global dynamic noprefixroute 
       valid_lft 3555sec preferred_lft 3555sec
    inet6 fe80::26bf:58c6:6f5:f7b7/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: wlx88000300111b: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DORMANT group default qlen 1000
    link/ether 88:00:03:00:11:1b brd ff:ff:ff:ff:ff:ff
5: wlx88000300111a: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DORMANT group default qlen 1000
    link/ether 88:00:03:00:11:1a brd ff:ff:ff:ff:ff:ff

Looks like interfaces are created incorrectly. Maybe I have to update driver or reset something?