If you're running Ubuntu Desktop and your WiFi stops working every time you wake your laptop from sleep or suspend, you're not alone. This is one of the most frustrating recurring bugs on Linux — your machine wakes up fine, the screen turns on, but the WiFi adapter sits there silently disconnected. Sometimes it reconnects on its own after a minute; often, it doesn't reconnect at all until you manually restart NetworkManager or reboot.
This guide walks you through seven proven methods to permanently fix Ubuntu WiFi dropping after sleep or suspend, covering Ubuntu 22.04, 23.10, 24.04, and newer releases. We'll go from the simplest quick fix to more advanced driver and firmware solutions.
Why Ubuntu WiFi Drops After Sleep or Suspend
The root cause is almost always one of the following:
- Power management: The kernel aggressively powers down the WiFi adapter during suspend. On resume, the driver fails to bring the adapter back to a fully operational state.
- Driver bugs: Intel (iwlwifi), Realtek (rtlwifi, r8188eu), and Atheros (ath9k, ath10k) drivers all have known suspend/resume issues in certain kernel versions.
- USB autosuspend: If you use a USB WiFi dongle, Linux's USB autosuspend feature cuts power to the device during sleep — and the device doesn't always recover cleanly.
- NetworkManager race conditions: Sometimes NetworkManager tries to reconnect before the driver is fully ready, fails silently, and gives up.
- Outdated firmware: Firmware blobs for WiFi chips are separate from the kernel driver. Outdated firmware can cause the adapter to fail on resume.
The good news: all of these have well-established fixes. Work through the methods below in order — most users are fixed by Method 1 or Method 2.
Method 1 – Restart NetworkManager After Wake (Quick Fix)
Before making any permanent changes, confirm that restarting NetworkManager fixes the problem after each wake event. Open a terminal and run:
sudo systemctl restart NetworkManager
If your WiFi reconnects within a few seconds, NetworkManager is the culprit — it lost track of the adapter on resume. You can automate this with a systemd hook (see Method 3), but first try the permanent power management fix in Method 2, which is cleaner.
You can also bring the interface back manually if you know its name:
ip link show
This lists all network interfaces. Note your WiFi interface name (typically wlan0, wlp2s0, or similar), then run:
sudo ip link set wlan0 down
sudo ip link set wlan0 up
Replace wlan0 with your actual interface name. This toggles the interface and often triggers a reconnect without restarting the full NetworkManager service.
Method 2 – Disable WiFi Power Management (Most Common Fix)
This is the single most effective fix for the majority of Ubuntu users. By default, NetworkManager enables WiFi power saving, which tells the kernel to aggressively reduce power to the adapter — including during sleep. Disabling it keeps the adapter in a more stable state through the suspend/resume cycle.
Step 1: Check the current power management state:
iwconfig wlan0 | grep "Power Management"
If it shows Power Management:on, that's your problem.
Step 2: Disable it immediately (until next reboot):
sudo iwconfig wlan0 power off
Step 3: Make it permanent via NetworkManager configuration. Create the following file:
sudo nano /etc/NetworkManager/conf.d/wifi-powersave-off.conf
Add this content:
[connection]
wifi.powersave = 2
Save the file, then restart NetworkManager:
sudo systemctl restart NetworkManager
The value 2 means "disabled". The default is 3 (enabled). This change persists across reboots and is the cleanest permanent solution.
For Intel iwlwifi adapters specifically, also disable power saving at the module level:
echo 'options iwlwifi power_save=0' | sudo tee /etc/modprobe.d/iwlwifi.conf
Then update the initramfs:
sudo update-initramfs -u
Reboot and test. Most users are fixed at this point.
Method 3 – Add a Wake-Up Script with systemd
If disabling power management doesn't fully solve the issue, you can create a systemd service that automatically restarts NetworkManager every time the system resumes from suspend. This is a reliable belt-and-suspenders approach.
Step 1: Create a new systemd service file:
sudo nano /etc/systemd/system/wifi-resume.service
Add the following content:
[Unit]
Description=Restart NetworkManager on resume from suspend
After=suspend.target hibernate.target hybrid-sleep.target
[Service]
Type=oneshot
ExecStartPre=/bin/sleep 2
ExecStart=/usr/bin/systemctl restart NetworkManager
[Install]
WantedBy=suspend.target hibernate.target hybrid-sleep.target
Step 2: Enable and start the service:
sudo systemctl enable wifi-resume.service
sudo systemctl daemon-reload
Now every time the system wakes from suspend, hibernate, or hybrid-sleep, it waits 2 seconds (to let the kernel finish bringing up hardware) then restarts NetworkManager. The 2-second delay is important — without it, the restart can happen before the driver is ready and fail silently.
You can also ensure NetworkManager waits for network online before marking the resume complete:
sudo systemctl enable systemd-networkd-wait-online
Test by suspending and waking your machine. Check the service ran:
sudo journalctl -u wifi-resume.service --since "10 minutes ago"
Method 4 – Update or Reinstall WiFi Drivers
Driver bugs are the second most common cause of WiFi dropping after suspend. Updating your kernel and drivers often resolves issues that were fixed upstream but haven't reached your installation yet.
Step 1: Update everything:
sudo apt update && sudo apt full-upgrade -y
Reboot after the upgrade and test. Many suspend/resume WiFi bugs have been fixed in recent kernel point releases.
Step 2: If you're on Ubuntu 22.04 or 23.10 and the issue persists, try the Hardware Enablement (HWE) kernel, which tracks newer kernel versions:
sudo apt install --install-recommends linux-generic-hwe-22.04
(Adjust 22.04 to your Ubuntu version.)
Step 3: For Realtek adapters, the in-tree driver is often worse than the out-of-tree version. Install the DKMS package:
sudo apt install rtl8821ce-dkms
Or for RTL8188EE:
sudo apt install r8168-dkms
Step 4: To identify your exact WiFi chip:
lspci -k | grep -A 3 -i wireless
lsusb | grep -i wireless
Use the chip name to search for specific driver fixes. GitHub repositories like morrownr/USB-WiFi maintain updated driver lists for common adapters.
Method 5 – Disable USB Autosuspend for USB WiFi Adapters
If your WiFi adapter is connected via USB (external dongle), Linux's USB autosuspend feature is likely the culprit. The kernel cuts power to idle USB devices — and the WiFi dongle doesn't always come back cleanly after a resume.
Step 1: Find your WiFi adapter's USB vendor and product ID:
lsusb | grep -i wireless
Note the ID in the format XXXX:YYYY (e.g., 0bda:8179 for a Realtek adapter).
Step 2: Create a udev rule to disable autosuspend for that specific device:
sudo nano /etc/udev/rules.d/70-disable-usb-autosuspend.rules
Add (replacing XXXX and YYYY with your actual IDs):
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="XXXX", ATTR{idProduct}=="YYYY", ATTR{power/control}="on"
To disable autosuspend for all USB devices (simpler but broader):
ACTION=="add", SUBSYSTEM=="usb", ATTR{power/control}="on"
Step 3: Reload udev rules and reboot:
sudo udevadm control --reload-rules
sudo reboot
Alternatively, disable USB autosuspend globally at the kernel level by editing GRUB:
sudo nano /etc/default/grub
Find the line starting with GRUB_CMDLINE_LINUX_DEFAULT and add usbcore.autosuspend=-1 to the quoted options. Then update GRUB and reboot:
sudo update-grub
sudo reboot
Method 6 – Adjust Suspend and Wake Settings in GNOME
Sometimes the issue isn't the driver — it's how GNOME handles suspend. GNOME's power settings interact with systemd's sleep targets and can create inconsistent suspend states.
Step 1: Install and open GNOME Tweaks:
sudo apt install gnome-tweaks
gnome-tweaks
Go to General → Suspend when laptop lid is closed and check whether lid-close suspend is behaving differently from manual suspend. If lid-close suspends cause WiFi issues but manual suspend doesn't, the issue is with the lid-close power event rather than suspend itself.
Step 2: Check which suspend method your system uses:
cat /sys/power/mem_sleep
This returns something like s2idle [deep]. The bracketed value is the active mode. deep (S3 suspend-to-RAM) is more aggressive and more likely to cause resume issues. s2idle (s2 idle) keeps more hardware awake.
To switch to s2idle temporarily:
echo s2idle | sudo tee /sys/power/mem_sleep
To make it permanent, add mem_sleep_default=s2idle to the GRUB kernel options (same procedure as Step 3 in Method 5, adding the option to GRUB_CMDLINE_LINUX_DEFAULT).
Note: s2idle uses more power than deep sleep. It's a trade-off — better hardware compatibility in exchange for slightly shorter battery life.
Method 7 – Check and Update Firmware for Intel/Realtek/Atheros Cards
WiFi adapter firmware is separate from the kernel driver. Outdated firmware is a common cause of erratic behaviour on resume, and it's often the last thing users think to update.
For Intel WiFi cards (iwlwifi):
sudo apt install firmware-iwlwifi
On Ubuntu, this package is in the non-free component. If it's not found, add the repository:
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -cs) main restricted universe multiverse"
sudo apt update && sudo apt install linux-firmware
Check what firmware your Intel card is using:
sudo dmesg | grep iwlwifi | head -20
Look for lines like loaded firmware version X.X.X. Compare with the latest available at Intel's wireless firmware page.
For Realtek cards:
sudo apt install firmware-realtek
For Atheros cards:
sudo apt install firmware-atheros
Update all firmware at once using the linux-firmware package:
sudo apt install linux-firmware
sudo update-initramfs -u
sudo reboot
After rebooting, check if the newer firmware loaded:
sudo dmesg | grep -E "firmware|iwlwifi|rtlwifi|ath"
If you're still experiencing issues after all seven methods, it's time to get professional help. Our team at CloudHouse expert Linux support can remotely diagnose your specific hardware and kernel combination and apply targeted fixes that generic guides can't cover.
FAQ
Why does Ubuntu WiFi stop working after sleep?
Ubuntu WiFi drops after sleep because the kernel's power management puts the WiFi adapter into a deep sleep state that it fails to recover from cleanly on resume. This is especially common with Intel (iwlwifi), Realtek, and Atheros adapters. The most reliable fix is disabling WiFi power saving mode via NetworkManager configuration.
How do I restart WiFi on Ubuntu after waking from sleep?
Run sudo systemctl restart NetworkManager in a terminal. This restarts the network management service and usually reconnects WiFi within a few seconds. For a permanent automated fix, create a systemd resume hook as described in Method 3 above.
How do I permanently disable WiFi power management on Ubuntu?
Create the file /etc/NetworkManager/conf.d/wifi-powersave-off.conf with the content [connection] on the first line and wifi.powersave = 2 on the second line. Then run sudo systemctl restart NetworkManager. This permanently disables WiFi power saving across reboots.
Does Ubuntu 24.04 have a WiFi suspend bug?
Yes, Ubuntu 24.04 has known WiFi suspend/resume issues affecting Intel iwlwifi and some Realtek adapters, particularly on laptops with newer hardware. Running sudo apt update && sudo apt full-upgrade to get the latest kernel point release, combined with disabling power management, resolves the issue for most users.
How do I fix a USB WiFi adapter that stops working after suspend on Ubuntu?
USB WiFi adapters are subject to USB autosuspend, which cuts power during sleep and often causes recovery failures. Disable autosuspend by creating a udev rule in /etc/udev/rules.d/70-disable-usb-autosuspend.rules as detailed in Method 5, or add usbcore.autosuspend=-1 to your GRUB kernel options for a system-wide fix.
