OpenWrt wifi extender / mesh network

Hi folks,

I've been trying to get a wifi extender from my ISP (https://broadband.yourcoop.coop/) to work for months to no avail. Router in the front room, work-desk at the back of the flat, no easy way to do wired - must be a common story.

First the ISP sent me a Technicolor OWA0131NLK, and now recently they've sent me a TP-Link HX220 to replace it. The first one would somehow crash the main router (a Technicolor DGA0122NKL) daily and I got the second one working briefly yesterday but today it entirely refuses to connect to the router.

I'm frustrated with that situation, and I also enjoy tinkering with open source soft/hard-ware, and so I'm thinking about dumping the above and trying out an OpenWrt One. I could either get one and set it up as a wireless extender (continuing to use the Technicolor DGA0122NKL as a router), or get two (or three?) and replace the main router too.

I'm fairly new to this. I've been using linux for ~6 months. Fairly happy on the command line. Got Wifi Analyzer on my phone. But I'm definitely at the edge of my knowledge/comfort.

I've been reading https://openwrt.org/docs/guide-user/network/wifi/mesh/802-11s and https://github.com/openNDS/mesh11sd/blob/master/README.md this evening and I'm a little daunted but not entirely put off.

I think my question is: am I missing something simple? Is there an obvious reason why I shouldn't do the above, or why I should do something different? Any good pointers to blogs or tutorials I could read? (I'd love a "I bought 3 OpenWrt Ones and set up a mesh network and here's exactly how I did it!" blogpost...)

Are you trying to setup a wired or wireless backhaul between the OpenWrt AP and the main router?

Hi @psherman!

Has to be wireless unfortunately (landlord wouldn't allow the holes etc.).

relayd looks like a good option if I want to keep using my current router. Would there be a benefit to replacing the router with another OpenWrt One?

This device is very good and would probably be a good option. But the value of replacing your ISP device depends on a number of factors -- most notably, your ISP router must be easily removed or bypassed (if it is a modem+router combo, you might need the modem part; maybe you can turn off the routing functions and operate the devices as a pure bridge).

1 Like

In case, you do not really need an extender, you might simply install an openwrt device using your ISPs WiFi router as “WAN”, between front and back room. For a cheap try, a Cudy TR1200 is a low cost, suitable device for this. Some performance penalty, of course, but you might even install an ad-blocker on the Cudy, to (partly) compensate for it.

1 Like

try this on first router
###bonus MESH

uci set wireless.wifinet6=wifi-iface
uci set wireless.wifinet6.device='radio1'
uci set wireless.wifinet6.mode='mesh'
uci set wireless.wifinet6.encryption='sae'
uci set wireless.wifinet6.mesh_id='Mesh5'
uci set wireless.wifinet6.mesh_fwding='1'
uci set wireless.wifinet6.mesh_rssi_threshold='0'
uci set wireless.wifinet6.key='password'
uci set wireless.wifinet6.network='lan'

same thing same canal on second and normaly you are the mesh

Hi @psherman - I've now got an OpenWrt One to use as an extender, and I'm following the set-up instructions you linked to, but I'm on the "Test Connection" setting I'm getting ping: bad address 'openwrt.org' - any troubleshooting tips?

probably missing the gateway and dns from your lan network interface.

Thanks for the quick reply and for your help.

I've tried adding:

  • Network > Interfaces > lan > Edit > IPv4 submask : 192.168.1.1
  • Network > Interfaces > lan > Edit > Advanced Settings > Use custom DNS servers to 8.8.8.8

but I get the same result.
Is the above what you meant?

let's take a look at the config...

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 (red circle; this works best in the 'Markdown' composer view in the blue oval):

Screenshot 2025-10-20 at 8.14.14 PM

Remember to redact passwords, VPN keys, 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
Microsoft Windows [Version 10.0.19045.6691]
(c) Microsoft Corporation. All rights reserved.

C:\Users\cege-user>nslookup openwrt.org
Server:  UnKnown
Address:  REDACTED

*** UnKnown can't find openwrt.org: Query refused

C:\Users\cege-user>ping 8.8.8.8

Pinging 8.8.8.8 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 8.8.8.8:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

C:\Users\cege-user>ssh root@192.168.1.1
ssh: connect to host 192.168.1.1 port 22: Connection timed out

C:\Users\cege-user>ssh root@192.168.2.1
The authenticity of host '192.168.2.1 (192.168.2.1)' can't be established.
ED25519 key fingerprint is REDACTED.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.1' (ED25519) to the list of known hosts.
root@192.168.2.1's password:


BusyBox v1.36.1 (2024-10-22 08:16:16 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt SNAPSHOT, r27876+1-3098b4bf07
 -----------------------------------------------------
root@OpenWrt:~# ubus call system board
{
        "kernel": "6.6.57",
        "hostname": "OpenWrt",
        "system": "ARMv8 Processor rev 4",
        "model": "OpenWrt One",
        "board_name": "openwrt,one",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "SNAPSHOT",
                "description": "OpenWrt SNAPSHOT",
                "revision": "r27876+1-3098b4bf07",
                "target": "mediatek/filogic",
                "builddate": "1729584976"
        }
}
root@OpenWrt:~# cat /etc/config/network

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 'fda3:97a2:3f2b::/48'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'eth1'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.2.1'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option gateway '192.168.1.1'

config interface 'wwan'
        option proto 'static'
        option ipaddr '192.168.1.30'
        option gateway '192.168.1.1'
        list dns '192.168.1.1'

root@OpenWrt:~# cat /etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option path 'platform/soc/18000000.wifi'
        option band '2g'
        option channel '1'
        option htmode 'HT20'
        option num_global_macaddr '7'
        option cell_density '0'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid 'OpenWrt'
        option encryption 'none'
        option disabled '1'

config wifi-device 'radio1'
        option type 'mac80211'
        option path 'platform/soc/18000000.wifi+1'
        option band '5g'
        option channel '36'
        option htmode 'HE80'
        option num_global_macaddr '7'
        option disabled '1'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid 'OpenWrt'
        option encryption 'none'

config wifi-iface 'wifinet2'
        option device 'radio0'
        option mode 'sta'
        option network 'wwan'
        option ssid 'TNCAPED9A34'
        option encryption 'psk2'
        option key 'REDACTED'

root@OpenWrt:~# cat /etc/config/dhcp

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 ignore '1'

config odhcpd 'odhcpd'
        option maindhcp '0'
        option leasefile '/tmp/hosts/odhcpd'
        option leasetrigger '/usr/sbin/odhcpd-update'
        option loglevel '4'

root@OpenWrt:~# cat /etc/config/firewall

config defaults
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option synflood_protect '1'

config zone
        option name 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list network 'lan'
        list network 'wwan'

config zone
        option name 'wan'
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'

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'

I'm uncertain as to what you are trying to achieve here -- it looks like you've got your OpenWrt One in a routed configuration with a wireless uplink. Is that your goal?

If so, you don't want to disable the DHCP server. Remove the ignore line below:

This needs a subnet mask: (likely a /24 upstream, so: option netmask '255.255.255.0'):

And the gateway should be removed from here:

Finally, the wwan network should be added to the wan zone, not the lan zone:

I'm following the GUI instructions here, and have got up to the "Test Connection" stage.


I've just found the bit I missed: a subnet mask (e.g., 255.255.255.0).

(I missed this because my copy of the tutorial hadn't loaded the images, and I didn't equate the text "subnet mask" with the GUI option "IPv4 netmask" and so didn't know what to do there).

Doing this bit correctly I now get a successful ping.


I shall continue working through the instructions tomorrow, and come back to your suggestions above if I encounter any more difficulties.

Thank you!

I tried the next step ("Install relayd package") and get the following error:

Executing package manager

Downloading https://downloads.openwrt.org/snapshots/targets/mediatek/filogic/packages/Packages.gz
*** Failed to download the package list from https://downloads.openwrt.org/snapshots/targets/mediatek/filogic/packages/Packages.gz

Downloading https://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/base/Packages.gz
*** Failed to download the package list from https://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/base/Packages.gz

Errors

Collected errors:
 * opkg_download: Failed to download https://downloads.openwrt.org/snapshots/targets/mediatek/filogic/packages/Packages.gz, wget returned 8.
 * opkg_download: Failed to download https://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/base/Packages.gz, wget returned 8.

The opkg update command failed with code 2.

Try upgrading to 24.10.5

That resolved it, thank you.


I now have the OpenWrt up and running as an extender :tada:
I'll look forward to seeing how it performs over the next few days!

Thanks again for your assistance @psherman

Glad it's working now!

If your problem is solved, please consider marking this topic as [Solved]. See How to mark a topic as [Solved] for a short how-to.
Thanks! :slight_smile: