WIFI Keeps Dropping
In this case, the adapter was restarting...
ejm3@bender:~$ sudo journalctl -u NetworkManager -f
[sudo] password for ejm3:
Sep 13 11:47:35 bender NetworkManager[955]: <info> [1757782055.7840] device (wlp0s20f3): supplicant interface state: associated -> 4way_handshake
Sep 13 11:47:35 bender NetworkManager[955]: <info> [1757782055.7841] device (p2p-dev-wlp0s20f3): supplicant management interface state: associated -> 4way_handshake
Sep 13 11:47:35 bender NetworkManager[955]: <info> [1757782055.8053] device (wlp0s20f3): supplicant interface state: 4way_handshake -> completed
Sep 13 11:47:35 bender NetworkManager[955]: <info> [1757782055.8195] device (wlp0s20f3): ip:dhcp4: restarting
Sep 13 11:47:35 bender NetworkManager[955]: <info> [1757782055.8460] dhcp4 (wlp0s20f3): canceled DHCP transaction
Sep 13 11:47:35 bender NetworkManager[955]: <info> [1757782055.8461] dhcp4 (wlp0s20f3): state changed no lease
Sep 13 11:47:35 bender NetworkManager[955]: <info> [1757782055.8462] dhcp4 (wlp0s20f3): activation: beginning transaction (timeout in 45 seconds)
Sep 13 11:47:35 bender NetworkManager[955]: <info> [1757782055.8463] device (p2p-dev-wlp0s20f3): supplicant management interface state: 4way_handshake -> completed
Sep 13 11:47:35 bender NetworkManager[955]: <info> [1757782055.8507] dhcp4 (wlp0s20f3): state changed new lease, address=192.168.245.10, acd pending
Sep 13 11:47:35 bender NetworkManager[955]: <info> [1757782055.8510] dhcp4 (wlp0s20f3): state changed new lease, address=192.168.245.10
Sep 13 11:48:06 bender NetworkManager[955]: <info> [1757782086.1129] device (wlp0s20f3): ip:dhcp4: restarting
Turned out the adapter was roaming to different access points because it was going to sleep and then grabbing the closest one. Two of them were about the same strength so we were having some issues.
ejm3@bender:~$ sudo dmesg | grep -i "wlp0s20f3\|firmware\|intel"
[ 0.022107] Reserving Intel graphics memory at [mem 0x99800000-0x9b7fffff]
[ 0.099871] smpboot: CPU0: Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz (family: 0x6, model: 0x8e, stepping: 0xc)
[ 0.099871] Performance Events: PEBS fmt3+, Skylake events, 32-deep LBR, full-width counters, Intel PMU driver.
[ 0.012731] [Firmware Bug]: TSC ADJUST differs within socket(s), fixing all errors
[ 0.507969] DMAR: Intel(R) Virtualization Technology for Directed I/O
[ 0.901959] intel_pstate: Intel P-state driver initializing
[ 0.902827] intel_pstate: HWP enabled
[ 1.576706] intel-lpss 0000:00:15.0: enabling device (0004 -> 0006)
[ 1.577161] idma64 idma64.0: Found Intel integrated DMA 64-bit
[ 1.595718] intel-lpss 0000:00:15.1: enabling device (0004 -> 0006)
[ 1.596184] idma64 idma64.1: Found Intel integrated DMA 64-bit
[ 1.615131] intel-lpss 0000:00:19.0: enabling device (0004 -> 0006)
[ 1.822796] iTCO_wdt iTCO_wdt: Found a Intel PCH TCO device (Version=6, TCOBASE=0x0400)
[ 3.518355] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
[ 7.569939] systemd[1]: systemd-hibernate-clear.service - Clear Stale Hibernate Storage Info was skipped because of an unmet condition check (ConditionPathExists=/sys/firmware/efi/efivars/HibernateLocation-8cf2644b-4b0b-428f-9387-6d876050dc67).
[ 8.094698] intel_pmc_core INT33A1:00: initialized
[ 8.411110] intel_rapl_common: Found RAPL domain package
[ 8.411115] intel_rapl_common: Found RAPL domain dram
[ 8.600827] intel_rapl_common: Found RAPL domain package
[ 8.600833] intel_rapl_common: Found RAPL domain core
[ 8.600835] intel_rapl_common: Found RAPL domain uncore
[ 8.600837] intel_rapl_common: Found RAPL domain dram
[ 8.600839] intel_rapl_common: Found RAPL domain psys
[ 8.726111] snd_hda_intel 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver
[ 8.851293] Bluetooth: hci0: Found device firmware: intel/ibt-19-0-1.sfi
[ 8.851406] Bluetooth: hci0: Firmware Version: 132-3.24
[ 8.851408] Bluetooth: hci0: Firmware already loaded
[ 8.855449] Intel(R) Wireless WiFi driver for Linux
[ 8.863650] iwlwifi 0000:00:14.3: Detected Intel(R) Wireless-AC 9560 160MHz
[ 8.880941] iwlwifi 0000:00:14.3: firmware: failed to load iwl-debug-yoyo.bin (-2)
[ 8.880965] iwlwifi 0000:00:14.3: firmware: failed to load iwl-debug-yoyo.bin (-2)
[ 8.880986] iwlwifi 0000:00:14.3: firmware: failed to load iwl-debug-yoyo.bin (-2)
[ 8.880993] iwlwifi 0000:00:14.3: loaded firmware version 77.2753b721.0 QuZ-a0-jf-b0-77.ucode op_mode iwlmvm
[ 9.482561] sof-audio-pci-intel-cnl 0000:00:1f.3: enabling device (0000 -> 0002)
[ 9.482825] sof-audio-pci-intel-cnl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100
[ 9.482919] sof-audio-pci-intel-cnl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[ 9.489993] sof-audio-pci-intel-cnl 0000:00:1f.3: use msi interrupt mode
[ 9.569599] iwlwifi 0000:00:14.3 wlp0s20f3: renamed from wlan0
[ 9.575294] sof-audio-pci-intel-cnl 0000:00:1f.3: hda codecs found, mask 5
[ 9.575302] sof-audio-pci-intel-cnl 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now
[ 9.575306] sof-audio-pci-intel-cnl 0000:00:1f.3: BT link detected in NHLT tables: 0x0
[ 9.575311] sof-audio-pci-intel-cnl 0000:00:1f.3: DMICs detected in NHLT tables: 2
[ 9.580366] sof-audio-pci-intel-cnl 0000:00:1f.3: Firmware paths/files for ipc type 0:
[ 9.580372] sof-audio-pci-intel-cnl 0000:00:1f.3: Firmware file: intel/sof/sof-cml.ri
[ 9.580374] sof-audio-pci-intel-cnl 0000:00:1f.3: Topology file: intel/sof-tplg/sof-hda-generic-2ch.tplg
[ 9.583517] sof-audio-pci-intel-cnl 0000:00:1f.3: Firmware info: version 2:2:0-57864
[ 9.583522] sof-audio-pci-intel-cnl 0000:00:1f.3: Firmware: ABI 3:22:1 Kernel ABI 3:23:1
[ 9.583531] sof-audio-pci-intel-cnl 0000:00:1f.3: unknown sof_ext_man header type 3 size 0x30
[ 9.695627] sof-audio-pci-intel-cnl 0000:00:1f.3: Firmware info: version 2:2:0-57864
[ 9.695634] sof-audio-pci-intel-cnl 0000:00:1f.3: Firmware: ABI 3:22:1 Kernel ABI 3:23:1
[ 9.776861] sof-audio-pci-intel-cnl 0000:00:1f.3: Topology: ABI 3:22:1 Kernel ABI 3:23:1
[ 13.000524] wlp0s20f3: authenticate with 80:cc:9c:e7:a5:a6 (local address=00:42:38:e9:b7:81)
[ 13.001716] wlp0s20f3: send auth to 80:cc:9c:e7:a5:a6 (try 1/3)
[ 13.042514] wlp0s20f3: authenticated
[ 13.044753] wlp0s20f3: associate with 80:cc:9c:e7:a5:a6 (try 1/3)
[ 13.046798] wlp0s20f3: RX AssocResp from 80:cc:9c:e7:a5:a6 (capab=0x1131 status=0 aid=15)
[ 13.059593] wlp0s20f3: associated
[ 13.185972] wlp0s20f3: Limiting TX power to 30 (30 - 0) dBm as advertised by 80:cc:9c:e7:a5:a6
[ 138.037459] wlp0s20f3: deauthenticating from 80:cc:9c:e7:a5:a6 by local choice (Reason: 3=DEAUTH_LEAVING)
[ 138.753507] intel_pch_thermal 0000:00:12.0: CPU-PCH is cool [39C]
[ 157.599617] wlp0s20f3: authenticate with 80:cc:9c:e7:a5:a6 (local address=00:42:38:e9:b7:81)
[ 157.600707] wlp0s20f3: send auth to 80:cc:9c:e7:a5:a6 (try 1/3)
[ 157.640006] wlp0s20f3: authenticated
[ 157.642960] wlp0s20f3: associate with 80:cc:9c:e7:a5:a6 (try 1/3)
[ 157.644914] wlp0s20f3: RX AssocResp from 80:cc:9c:e7:a5:a6 (capab=0x1131 status=0 aid=15)
[ 157.652551] wlp0s20f3: associated
[ 157.743729] wlp0s20f3: Limiting TX power to 30 (30 - 0) dBm as advertised by 80:cc:9c:e7:a5:a6
[ 2674.763667] wlp0s20f3: disconnect from AP 80:cc:9c:e7:a5:a6 for new auth to 80:cc:9c:e7:a5:a5
[ 2674.861381] wlp0s20f3: authenticate with 80:cc:9c:e7:a5:a5 (local address=00:42:38:e9:b7:81)
[ 2674.862769] wlp0s20f3: send auth to 80:cc:9c:e7:a5:a5 (try 1/3)
[ 2674.949850] wlp0s20f3: authenticated
[ 2674.954354] wlp0s20f3: associate with 80:cc:9c:e7:a5:a5 (try 1/3)
[ 2675.003274] wlp0s20f3: RX ReassocResp from 80:cc:9c:e7:a5:a5 (capab=0x1c31 status=0 aid=15)
[ 2675.010363] wlp0s20f3: associated
[ 2675.026358] wlp0s20f3: Limiting TX power to 30 (30 - 0) dBm as advertised by 80:cc:9c:e7:a5:a5
[ 2706.328366] wlp0s20f3: disconnect from AP 80:cc:9c:e7:a5:a5 for new auth to 80:cc:9c:e7:a5:a6
[ 2706.418301] wlp0s20f3: authenticate with 80:cc:9c:e7:a5:a6 (local address=00:42:38:e9:b7:81)
[ 2706.419521] wlp0s20f3: send auth to 80:cc:9c:e7:a5:a6 (try 1/3)
[ 2706.490630] wlp0s20f3: authenticated
So, make sure this shows "on" and not "auto";
ejm3@bender:~$ cat /sys/class/net/wlp0s20f3/device/power/control
auto
If it shows auto set it to "on" and make it permanent;
ejm3@bender:~$ echo 'on' | sudo tee /sys/class/net/wlp0s20f3/device/power/control
on
ejm3@bender:~$ # Create a udev rule to disable power management on boot
echo 'ACTION=="add", SUBSYSTEM=="net", KERNEL=="wlp0s20f3", RUN+="/bin/sh -c '\''echo on > /sys/class/net/wlp0s20f3/device/power/control'\''"' | sudo tee /etc/udev/rules.d/70-wifi-power-management.rules
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wlp0s20f3", RUN+="/bin/sh -c 'echo on > /sys/class/net/wlp0s20f3/device/power/control'"