Unstable Wi-Fi connection

Hello,

I recently moved to openSUSE Tumbleweed on my laptop (XPS 13 7390), and I’m experiencing a lot of issues with my Wi-Fi connection, i.e. it stays connected to the router but for some reason internet access drops randomly every 5–10 minutes and I have to manually restart NetworkManager to get it back on, so I’m basically unable to make a video call at this point…
I can say it’s not an issue with the router nor the fiber company, as it works very well on other computers and smartphones. Also, I believe it could be related to some Tumbleweed upgrade as it didn’t happen before, but I’m not sure how to check this hypothesis.

Here are a few logs of what happens when the connection drops:

❯ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.1.13 icmp_seq=1 Destination Host Unreachable
From 192.168.1.13 icmp_seq=2 Destination Host Unreachable
^C
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 0 received, +2 errors, 100% packet loss, time 3052ms
pipe 2
❯ sudo systemctl status NetworkManager
● NetworkManager.service - Network Manager
     Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; preset: disabled)
     Active: active (running) since Thu 2024-02-01 10:04:09 EST; 1h 52min ago
       Docs: man:NetworkManager(8)
   Main PID: 17071 (NetworkManager)
      Tasks: 4 (limit: 4915)
        CPU: 6.885s
     CGroup: /system.slice/NetworkManager.service
             └─17071 /usr/sbin/NetworkManager --no-daemon

Feb 01 11:49:15 localhost.localdomain NetworkManager[17071]: <info>  [1706806155.5992] device (wlp58s0): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed')
Feb 01 11:49:15 localhost.localdomain NetworkManager[17071]: <info>  [1706806155.5998] dhcp4 (wlp58s0): activation: beginning transaction (timeout in 45 seconds)
Feb 01 11:49:19 localhost.localdomain NetworkManager[17071]: <info>  [1706806159.0952] dhcp4 (wlp58s0): state changed new lease, address=192.168.1.13
Feb 01 11:49:19 localhost.localdomain NetworkManager[17071]: <info>  [1706806159.0957] policy: set 'ORBI49' (wlp58s0) as default for IPv4 routing and DNS
Feb 01 11:49:19 localhost.localdomain NetworkManager[17071]: <info>  [1706806159.2476] device (wlp58s0): state change: ip-config -> ip-check (reason 'none', sys-iface-state: 'managed')
Feb 01 11:49:19 localhost.localdomain NetworkManager[17071]: <info>  [1706806159.4548] device (wlp58s0): state change: ip-check -> secondaries (reason 'none', sys-iface-state: 'managed')
Feb 01 11:49:19 localhost.localdomain NetworkManager[17071]: <info>  [1706806159.4549] device (wlp58s0): state change: secondaries -> activated (reason 'none', sys-iface-state: 'managed')
Feb 01 11:49:19 localhost.localdomain NetworkManager[17071]: <info>  [1706806159.4551] manager: NetworkManager state is now CONNECTED_SITE
Feb 01 11:49:19 localhost.localdomain NetworkManager[17071]: <info>  [1706806159.4560] device (wlp58s0): Activation: successful, device activated.
Feb 01 11:49:19 localhost.localdomain NetworkManager[17071]: <info>  [1706806159.4564] manager: NetworkManager state is now CONNECTED_GLOBAL

❯ sudo iwconfig
[sudo] password for root: 
lo        no wireless extensions.

wlp58s0   IEEE 802.11  ESSID:"ORBI49"  
          Mode:Managed  Frequency:5.24 GHz  Access Point: 44:A5:6E:61:87:50   
          Bit Rate=234 Mb/s   Tx-Power=30 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=61/70  Signal level=-49 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:41   Missed beacon:0

enp57s0u1u1  no wireless extensions.
❯ ifconfig 
enp57s0u1u1 Link encap:Ethernet  HWaddr 00:E0:4C:68:5E:61  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:200714 errors:0 dropped:0 overruns:0 frame:0
          TX packets:200714 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:97137360 (92.6 MiB)  TX bytes:97137360 (92.6 MiB)

wlp58s0   Link encap:Ethernet  HWaddr 40:5B:D8:8F:6F:3B  
          inet addr:192.168.1.13  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::7ec4:69ab:9503:1ee2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1919271 errors:0 dropped:1972 overruns:0 frame:0
          TX packets:773399 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1982903871 (1.8 GiB)  TX bytes:160691846 (153.2 MiB)
❯ lspci | grep Network
3a:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32)

Any idea how I could fix this issue?

I wouild check in network manager and see if power save is turned on if it is I would turn it off and see if that stops the disconnects. Also some networks have a problem with IPV6 you may want to try disabling that as well. Good luck.
you can turn off the power save feature with this command

sudo iw dev wlan0 set power_save off

Check for installed firmware - serch in YaST for Qualcomm and Atheros.

Apparently the power saving feature was off already:

❯ sudo iw dev wlp58s0 get power_save
Power save: off

The Qualcomm Atheros Firmware seem to be already installed:

Should I try to downgrade the firmware?

Hi, does the wifi card stay on while the network is off?

If it was power saving, the card would drop the wifi connection.
If the wifi is connected, but there’s no network, it can potentially be a DNS/DHCP issue.

For power saving, some settings can come from the BIOS, check if there’s any power saving set there where it can potentially affect the system even if such config is not enabled on openSUSE.

For wifi on but no internet, I would look for possible log messages in journalctl/dmesg where it might point to a failure with network manager or perhaps dnsmask.

If you have a VPN connection with a kill switch enabled (protonvpn, nordvpn, etc), if the VPN drops, it would kill the entire internet connection to avoid any leaks.

An issue that I have from time to time is that my router (ASUS with Merlin) gets lost with DHCP, and every couple of months I need to restart it.

To rule out network configuration issues, I would also try 2.4ghz, older protocols (b,g), and perhaps other channels and signal strength.