Using dumb AP to connect to a wireless network and make its internet available to all devices in the AP network

Hello all!

I have a raspberry pi 4 running as a purely wired router and a Zyxel multi m1 router running as a dumb AP.

Unfortunately I had to move and now I’m a situation where I have to connect my network to another via WiFi. At this moment I have tried to connect the dumb AP to the wireless network, however this does not make the internet available to the whole network. Do I have to bridge it somehow? Any ideas on what I can try?

Raspberry wifi is fairly limited, you need mesh, wds or relayd to connect other wifi as extender.

You'll want to setup a wifi client router. As noted by @brada4, the wifi performance on the Pi is terrible, so it's not a great candidate for this method. It should be functional, but will be low performance.

If your Zyxel is running OpenWrt, you can make that your router per the above link and you should get reasonable performance. If it's not currently using OpenWrt, you should consider that as an option:

https://openwrt.org/toh/zyxel/wsm20

You can wire RPI to zyxel as extra CPU-brain for heavy tasks.

How exactly do you envision this? What would the topology look like and how would the processing be shared or delegated?

@psherman I do have it running openwrt, so I can make it run as a router and have it working, however won’t I lose performance doing this?

My hope would be to maintain the same topology, but I’m guessing there’s no way for the dumb AP (running openwrt) to connect to the wireless and forward that connection to the router (raspberry pi 4).

Thank you all for your help!

In theory, yes. Your radio could suffer as much as a 50% hit insofar as it has to operate in both STA and AP modes simultaneously. However, in practice, no, I don't think so. This is because I suspect that the bandwidth of the wifi uplink will actually be the limiting factor, and the ZyXel is not a bad device in terms of the routing performance capabilities.

The only way to know is to test -- fairly easy to do. Make a backup of your current config so you can easily restore back if/when needed, but then you can reset to defaults and setup the wireless client mode operation.

No, when running sta mode, there is no easy method to bridge to ethernet for the topology you're interested in. And, even if that was practical physically, I think it wouldn't give you any performance advantage over the standard wireless client routed mode that I'm recommending.

1 Like

You can route to Ethernet. Then there is only one hop on wifi and it can be faster than wifi in wifi out.

2 Likes

What @mk24 said is true. However, ethernet to the Pi doesn't help in this situation, as you'd still need to use the wifi on the ZyXel if you want halfway decent performance.

1 Like

I followed your suggestion @psherman , it’s working however now the radio only works as client :pensive:

I tried using travelmate, with no success unfortunately :pensive:

Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button:
grafik
Remember to redact passwords, MAC addresses and any public IP addresses you may have:

ubus call system board
cat /etc/config/network
cat /etc/config/wireless
cat /etc/config/dhcp
cat /etc/config/firewall

The Pi radio cannot operate as a client and an AP at the same time. It is limited to doing only one thing.

Sorry, haven’t had the chance to do that log collecting yet, however it works if I use the 2.4GHz radio on the zyxel to both use it as a client and as an available network! It seems to be an issue only on the 5GHz radio. I’ll post the configs asap!

@psherman here it is:


{
	"kernel": "5.15.150",
	"hostname": "OpenWrt",
	"system": "MediaTek MT7621 ver:1 eco:3",
	"model": "ZyXEL WSM20",
	"board_name": "zyxel,wsm20",
	"rootfs_type": "squashfs",
	"release": {
		"distribution": "OpenWrt",
		"version": "23.05.3",
		"revision": "r23809-234f1a2efa",
		"target": "ramips/mt7621",
		"description": "OpenWrt 23.05.3 r23809-234f1a2efa"
	}
}


config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'
 
config globals 'globals'
	option ula_prefix 'fd4c:f73d:128d::/48'
	option packet_steering '1'
 
config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'lan1'
	list ports 'lan2'
	list ports 'lan3'
 
config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '10.10.1.1'
	option netmask '255.255.255.0'
	option ip6assign '60'
 
config interface 'wan'
	option device 'wan'
	option proto 'dhcp'
 
config interface 'wan6'
	option device 'wan'
	option proto 'dhcpv6'
 
config interface 'wwan'
	option proto 'dhcp'
 
 

config wifi-device 'radio0'
	option type 'mac80211'
	option path '1e140000.pcie/pci0000:00/0000:00:01.0/0000:02:00.0'
	option channel 'auto'
	option band '2g'
	option htmode 'HE20'
	option cell_density '0'
 
config wifi-iface 'default_radio0'
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option ssid 'CybertronM-2.4'
	option encryption 'sae-mixed'
	option key ‘awesome password 0’
 
config wifi-device 'radio1'
	option type 'mac80211'
	option path '1e140000.pcie/pci0000:00/0000:00:01.0/0000:02:00.0+1'
	option channel '100'
	option band '5g'
	option htmode 'HE80'
	option cell_density '0'
 
config wifi-iface 'wifinet1'
	option device 'radio1'
	option mode 'ap'
        option ssid 'CybertronM'
	option encryption 'sae-mixed'
	option key ‘awesome password 1’
	option network 'lan'

config wifi-iface 'wifinet2'
	option device 'radio1'
	option mode 'sta'
	option network 'wwan'
	option ssid 'NOS-A796-5'
	option bssid ’00:00:…'
	option encryption 'psk2'
	option key ‘awesome ‘password 2’
 

config dnsmasq
	option domainneeded '1'
	option boguspriv '1'
	option filterwin2k '0'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option nonegcache '0'
	option cachesize '1000'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option nonwildcard '1'
	option localservice '1'
	option ednspacket_max '1232'
	option filter_aaaa '0'
	option filter_a '0'
 
config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv4 'server'
	option dhcpv6 'server'
	option ra 'server'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'
 
config dhcp 'wan'
	option interface 'wan'
	option ignore '1'
 
config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'
 


config defaults
	option syn_flood '1'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
 
config zone
	option name 'lan'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'ACCEPT'
	list network 'lan'
 
config zone
	option name 'wan'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'
	list network 'wan'
	list network 'wan6'
	list network 'wwan'
 
config forwarding
	option src 'lan'
	option dest 'wan'
 
config rule
	option name 'Allow-DHCP-Renew'
	option src 'wan'
	option proto 'udp'
	option dest_port '68'
	option target 'ACCEPT'
	option family 'ipv4'
 
config rule
	option name 'Allow-Ping'
	option src 'wan'
	option proto 'icmp'
	option icmp_type 'echo-request'
	option family 'ipv4'
	option target 'ACCEPT'
 
config rule
	option name 'Allow-IGMP'
	option src 'wan'
	option proto 'igmp'
	option family 'ipv4'
	option target 'ACCEPT'
 
config rule
	option name 'Allow-DHCPv6'
	option src 'wan'
	option proto 'udp'
	option dest_port '546'
	option family 'ipv6'
	option target 'ACCEPT'
 
config rule
	option name 'Allow-MLD'
	option src 'wan'
	option proto 'icmp'
	option src_ip 'fe80::/10'
	list icmp_type '130/0'
	list icmp_type '131/0'
	list icmp_type '132/0'
	list icmp_type '143/0'
	option family 'ipv6'
	option target 'ACCEPT'
 
config rule
	option name 'Allow-ICMPv6-Input'
	option src 'wan'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	list icmp_type 'router-solicitation'
	list icmp_type 'neighbour-solicitation'
	list icmp_type 'router-advertisement'
	list icmp_type 'neighbour-advertisement'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'
 
config rule
	option name 'Allow-ICMPv6-Forward'
	option src 'wan'
	option dest '*'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'
 
config rule
	option name 'Allow-IPSec-ESP'
	option src 'wan'
	option dest 'lan'
	option proto 'esp'
	option target 'ACCEPT'
 
config rule
	option name 'Allow-ISAKMP'
	option src 'wan'
	option dest 'lan'
	option dest_port '500'
	option proto 'udp'
	option target 'ACCEPT'
 

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.