After upgrading to Ubuntu 21.10 I noticed that my WiFi was disconnecting semi-regularly and trying to reconnect multiple times without success until after roughly 1 minute it was connected again. I’ve never had this kind of issues even after switching to iwd several years back.
Trying to find out what was happening I looked into my WiFi daemons logs with journalctl -eu iwd
. Around the time a disconnect happened there were roughly 30 lines each 1-2 seconds apart all saying:
Received Deauthentication event, reason: 4, from_ap: false
There was no other information warning or error. The timings between these blocks are not always consistent. Mostly it’s 2 hours or 2 hours 15 minutes.
NetworkManager’s logs only had this to say (also repeated multiple times):
device (wlan0): new IWD device state is disconnected device (wlan0): state change: activated -> failed (reason 'supplicant-disconnect', sys-iface-state: 'managed') manager: NetworkManager state is now DISCONNECTED device (wlan0): Activation: failed for connection '<SSID>' device (wlan0): state change: failed -> disconnected (reason 'none', sys-iface-state: 'managed') dhcp4 (wlan0): canceled DHCP transaction dhcp4 (wlan0): state changed bound -> terminated dhcp6 (wlan0): canceled DHCP transaction dhcp6 (wlan0): state changed bound -> terminated device (wlan0): new IWD device state is connecting device (wlan0): Activation: starting connection '<SSID>' (<UUID>) device (wlan0): state change: disconnected -> prepare (reason 'none', sys-iface-state: 'managed') manager: NetworkManager state is now CONNECTING device (wlan0): state change: prepare -> config (reason 'none', sys-iface-state: 'managed') device (wlan0): new IWD device state is connected device (wlan0): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed') dhcp4 (wlan0): activation: beginning transaction (timeout in 45 seconds) dhcp4 (wlan0): state changed unknown -> bound, address=<IP ADDRESS> device (wlan0): state change: ip-config -> ip-check (reason 'none', sys-iface-state: 'managed') device (wlan0): state change: ip-check -> secondaries (reason 'none', sys-iface-state: 'managed') device (wlan0): state change: secondaries -> activated (reason 'none', sys-iface-state: 'managed') manager: NetworkManager state is now CONNECTED_LOCAL manager: NetworkManager state is now CONNECTED_SITE policy: set '<SSID>' (wlan0) as default for IPv4 routing and DNS device (wlan0): Activation: successful, device activated. manager: NetworkManager state is now CONNECTED_GLOBAL
I tried to search the internet for the error message from iwd, but nothing useful came up. Just forum posts with random suggestions like “turn off IPv6” and old kernel bug reports about the Intel wireless drivers exhibiting similar disconnections. 😞
I tried to look up what a modern setup + configuration should look like and tried to combine the guides from Ubuntu and Arch … no change.
The Gentoo Wiki and the iwd Wiki also suggest (wifi.iwd.autoconnect=yes
) for NetworkManager. After applying this setting the issue seems to have gone away. 😀
Update 2021-10-31
The last “fix” only lasted for about 9 hours. 😕
I’m now suspecting something with power management 🤔 … I’m still investigating.
Update 2021-11-26
I have a configuration that seems to work for a few weeks now. My final system state was adding
[device]
wifi.backend=iwd
wifi.iwd.autoconnect=yes
to NetworkManager’s configuration, masking wpa_supplicant.service
, commenting out the contents of /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
, installing all recommended packages for TLP (i.e. also tlp-rdw) and finally masking Gnome 40’s new power-profiles-daemon.service
which seems to interfere with TLP.
I’m not sure if this is the minimal set of changes necessary, but it works for me. 😀 It first started showing the dis-/reconnection notification, but e.g. SSH connections didn’t seem to drop and after a while even the notifications stopped. Logs are also clean. I’m happy. 😀