Raspberry Pi 4 wifi disconnections

Revisiting this old issue with recent equipment. I have a new RPi 4B and a new stock 3A RPi branded power supply for it. I've staged it with a USB Wifi A-C dongle and the same issue arises here. Whether it is the USB Wifi or the onboard WiFi adapter, they both have connect then disconnect issues. When restarted, the adapters will connect to the uplink router and then disconnect and (in Luci) subsequently display as disabled.

MUCH (oh yeah) reading has been done to troubleshoot without success. Any help would be greately appreciated.

I moved your post into a new thread because the old one may not be relevant anymore (it was 3 years old -- a lot has changed). Further, this will keep things specific to your situation.

Let's start with this: What is the purpose of your Pi4B? Are you trying to use this as a travel router? A wifi extender? something else?

And which version of OpenWrt os running on the device?

@psherman -- Thank you for the quick reply. The purpose of the Pi4B is a travel router. I have the Travelmate pkg installed along with the drivers for the onboard Wifi and the USB3 one.

@lleachii -- I downloaded and flashed the microUSB with 24.10.5 .

Just to be clear, this is among the worst options available for this purpose. There are many very good devices that are purpose built for use as a travel router -- they have far better performance and are more physically robust and convenient than a Pi. Some are pretty inexpensive, too... likely cheaper than what you are trying to use now (and if you can return any of the hardware, that would be a bonus).

We can help you, but are you sure you really want to go down this path -- it's really not a good option, but yes, it can (usually) work.

1 Like

Ouch.
I was trying to use equipment that I have along with garner a learning experience with regards to openwrt with which I am quite impressed.

FWIW, I have sourced a very good case for the pi and the uplink dongle was chosen for range as the target usage is at sites where the source (uplink) WiFi is sometimes at distance.

Yeah... I get that.

This part makes a lot of sense.

But the quirks and limitations of the Pi (for wireless and/or travel router usage) are severe enough that this isn't the device I'd recommend using.

That said... if you want to invest the time/energy on this hardware, by all means.

Even th best cases for the Pi are going to be a bit clunky when you compare it against a proper travel router when you consider the fact that you need to use USB dongles that stick out the side of the case, etc. For example, look at the GL-Inet MT3000 or the Cudy TR3000 which have the radios inside and folding antennas.

Sure... but the downstream wifi (built into the Pi) has extremely limited performance.

Anyway, if you want to move forward, let's start by looking at your base configs (and we'll go from there):

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

@psherman: I am unfortunately unable to perform your diagnostics and status gathering immediately due to very late local time and the fact that I need to reconnect everything to do so. I will gather the requested info and post it a.s.a.p. tomorrow. Your help is greatly appreciated (assume such when I no longer post it!). À demain as is said in places over here.

-- DHCP --

config dnsmasq
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option cachesize '1000'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option localservice '1'
	option ednspacket_max '1232'

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'
	option piofolder '/tmp/odhcpd-piofolder'

config host
	list mac 'redacted'
	option ip '15.15.15.208'
	option name 'MacBookPro-eda'


config dnsmasq
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option cachesize '1000'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option localservice '1'
	option ednspacket_max '1232'

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'
	option piofolder '/tmp/odhcpd-piofolder'

config host
	list mac 'redacted'
	option ip '15.15.15.208'
	option name 'MacBookPro-eda'
- - -
-- firewall --
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 'trm_wwan'
	list network 'trm_wwan6'
	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'


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'

config zone
	option name 'wan'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'
	list network 'wan'
	list network 'wan6'
	list network 'trm_wwan'
	list network 'trm_wwan6'
	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'
- - -
-- 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 'fd10:d46d:c305::/48'
	option packet_steering '1'

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

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '15.15.15.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

config interface 'wwan'
	option proto 'dhcp'

config interface 'trm_wwan'
	option proto 'dhcp'
	option metric '100'

config interface 'trm_wwan6'
	option device '@trm_wwan'
	option proto 'dhcpv6'


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 'fd10:d46d:c305::/48'
	option packet_steering '1'

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

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

config interface 'wwan'
	option proto 'dhcp'

config interface 'trm_wwan'
	option proto 'dhcp'
	option metric '100'

config interface 'trm_wwan6'
	option device '@trm_wwan'
	option proto 'dhcpv6'
- - -
-- system --
{
	"kernel": "6.6.119",
	"hostname": "OpenWrtPD",
	"system": "ARMv8 Processor rev 3",
	"model": "Raspberry Pi 4 Model B Rev 1.5",
	"board_name": "raspberrypi,4-model-b",
	"rootfs_type": "ext4",
	"release": {
		"distribution": "OpenWrt",
		"version": "24.10.5",
		"revision": "r29087-d9c5716d1d",
		"target": "bcm27xx/bcm2711",
		"description": "OpenWrt 24.10.5 r29087-d9c5716d1d",
		"builddate": "1766005702"
	}
}
{
	"kernel": "6.6.119",
	"hostname": "OpenWrtPD",
	"system": "ARMv8 Processor rev 3",
	"model": "Raspberry Pi 4 Model B Rev 1.5",
	"board_name": "raspberrypi,4-model-b",
	"rootfs_type": "ext4",
	"release": {
		"distribution": "OpenWrt",
		"version": "24.10.5",
		"revision": "r29087-d9c5716d1d",
		"target": "bcm27xx/bcm2711",
		"description": "OpenWrt 24.10.5 r29087-d9c5716d1d",
		"builddate": "1766005702"
	}
}
- - -
-- wireless --
config wifi-device 'radio0'
	option type 'mac80211'
	option path 'platform/soc/fe300000.mmcnr/mmc_host/mmc1/mmc1:0001/mmc1:0001:1'
	option band '5g'
	option htmode 'VHT40'
	option cell_density '0'

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb2/2-2/2-2:1.0'
	option band '5g'
	option htmode 'VHT40'
	option cell_density '0'
	option country 'CA'
	option channel 'auto'

config wifi-device 'radio2'
	option type 'mac80211'
	option path 'scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1/1-1.1:1.0'
	option band '2g'
	option channel '1'
	option htmode 'HT20'
	option country 'CA'
	option cell_density '0'

config wifi-iface 'wifinet1'
	option device 'radio2'
	option mode 'ap'
	option ssid 'Minoudle'
	option encryption 'sae-mixed'
	option key 'redacted'
	option ocv '0'
	option network 'lan'

config wifi-iface 'wifinet2'
	option device 'radio1'
	option mode 'sta'
	option network 'trm_wwan'
	option ssid 'Netgear17'
	option encryption 'psk2'
	option key 'redacted'
	option disabled '1'


config wifi-device 'radio0'
	option type 'mac80211'
	option path 'platform/soc/fe300000.mmcnr/mmc_host/mmc1/mmc1:0001/mmc1:0001:1'
	option band '5g'
	option htmode 'VHT40'
	option cell_density '0'

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb2/2-2/2-2:1.0'
	option band '5g'
	option htmode 'VHT40'
	option cell_density '0'
	option country 'CA'
	option channel 'auto'

config wifi-device 'radio2'
	option type 'mac80211'
	option path 'scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1/1-1.1:1.0'
	option band '2g'
	option channel '11'
	option htmode 'HT20'
	option country 'CA'
	option cell_density '0'

config wifi-iface 'wifinet1'
	option device 'radio2'
	option mode 'ap'
	option ssid 'Minoudle'
	option encryption 'sae-mixed'
	option key 'redacted'
	option ocv '0'
	option network 'lan'
	option disabled '1'

config wifi-iface 'wifinet2'
	option device 'radio2'
	option mode 'sta'
	option network 'wwan'
	option ssid 'Netgear17'
	option encryption 'psk2'
	option key 'redacted'
- -

As an overview, the above posted config files relate to the following interfaces:

  • Radio 0: Pi4B onboard Cypress CYW43455
  • Radio 1: USB Brostrend AC3L with RTL8822BU
    Generic MAC80211 802.11ac/b/g/n
  • Radio 2: USB TP-Link TL-WN725N with RTL8188CUS
    Generic MAC80211 802.11b/g/n
  • Radio 3: auto-generated when trying to configure driver for Radio 2 --> don't know how to delete this from configuration

Running 2 wifi radio devices on the Pi is not recommended and may be the source of your issues. The reason is related to the power budget of the USB ports.

In theory, the TP-Link dongle consumes 500mA or less since it is USB 2.0, but the USB 3.0 Brostrend unit might consume 900mA or more (I couldn't find a verifiable datasource, though). That would potentially exceed the 1.2A total (across all 4 ports) available current from the Pi. That, in itself would explain the disconnections.

Meanwhile, other things I see:

Is this the actual config, or did you replace the IP address with something else?

Always stick with RFC1918 addresses. Using non-RFC1918 ranges may cause you major headaches.
Do not use sae-mixed as it can be the source of issues.

Use only WPA2 (psk2) or WPA3 (sae) for the encryption mode.

And oddly... all of your config files are doubled up. For example, if you look at the wireless file as you posted it here, it repeats. But with a subtle but important difference...

  • In the upper set, wifinet1 is assigned to radio2 and wifinet2 is assigned to radio1
  • In the lower set, both wifinet1 and wifinet2 are assigned to the same radio (radio2).
  • In the upper set, wifinet2 is disabled, but it is enabled the lower set. Vice versa for wifinet1

What is going on with that file (and the others)? Can you verify the configs as posted (specifically the doubled up issue) with the actual files on your Pi (which is the ground truth). If doubled up in the real files, that will cause a problem for sure. But not just that, the wireless file shows contradictions which will really mess things up.

I don't see anything about radio3 in the files.

Also, 2 other things...

  1. You've selected pretty old USB wifi dongles -- only wifi 4. Those will probably outperform the onboard wifi, but still are quite limited. I would not recommend using multiple wifi 5 dongles, though, because of the power limitations. Maybe a single wifi 5 dongle (with dual band AP support) could work... but not worth the investment, IMO.
  2. Going back to my earlier recommendations to seek another option for travel router hardware... the power limitations and the clunkiness of using external radio dongles is yet another reason that this is just not well suited for the task. Hopefully it is becoming more clear why I was strong in my endorsement of basically any real travel router in lieu of a Pi based solution.

Woof, my apologies! I seem to have duplicated text when exporting, scp transferring and then copying text to this forum.

My use of the non-RFC1918 addresses is something I've done for many years to help clearly isolate local/private LANs from public LANs that were then uplinked to WANs. Somehow this way, I found it easier to see what device was where.

Your suggestion of using a single wifi 5 (or 4) dongle is a surprise to me as I didn't know one could configure that dongle as BOTH a client to the public wifi LAN and an access point to my Rpi based private wifi LAN.

Regarding the power requirements....well there I'm stumped. My goal was to use the Brostrend AC3L because of its significant range capabilities. The travel router needs to sometimes uplink to public wifi's that are physically quite a distance from our location.

Using wifi 4 vs 5 wasn't really a deal-breaker for me as we found that the throughput was generally usable, many public wifi's we've visited don't yet support wifi 5 and lastly, we don't have many devices to connect to our private wi-lan.