How to Fix WiFi Issues on Raspberry Pi: Slow Speeds, Drops, and Connection Failures
Raspberry Pi WiFi can be frustrating — dropped connections, slow speeds, and rfkill blocks are all common. Here’s a step-by-step guide to diagnosing and fixing every major WiFi problem on Raspberry Pi 4 and Pi 5.
The Raspberry Pi is one of the most popular single-board computers in the world, but its built-in WiFi has a reputation for being finicky. Whether your Pi refuses to connect at all, drops its connection every few hours, or delivers disappointingly slow speeds, the fix is almost always a software or configuration issue — not a hardware defect. This guide walks through every major WiFi problem on Raspberry Pi 4 and Pi 5 and how to solve each one.
Raspberry Pi WiFi Hardware: What You’re Working With
Before diving into fixes, it helps to know what the hardware is capable of. Both the Raspberry Pi 4 and Pi 5 use dual-band WiFi (2.4 GHz and 5 GHz) with a single antenna (1x1 MIMO). The Pi 5 uses the Infineon CYW43455 chip, which supports WiFi 5 (802.11ac) with a theoretical maximum of 433 Mbps on 5 GHz using an 80 MHz channel width. In real-world iperf3 tests, expect roughly 80–120 Mbps throughput at close range — more than enough for most Pi projects, but far below a modern desktop or laptop.
The 2.4 GHz performance on the Pi 4 and Pi 5 is nearly identical, topping out around 50–65 Mbps in practice. If your speeds are far below these baselines, something is misconfigured.
Fix 1: WiFi Is Blocked by rfkill
The most common reason WiFi simply doesn’t work on a fresh Raspberry Pi OS install is that the radio is soft-blocked by rfkill. This is a kernel-level mechanism that disables radios until a country code is configured, ensuring the Pi complies with local radio regulations.
Run this command to check:
rfkill list all
If you see “Soft blocked: yes” next to phy0 or wlan0, WiFi is disabled at the kernel level. To unblock it:
sudo rfkill unblock wifi
This is a temporary fix. The permanent solution is to set your WiFi country code properly so rfkill never blocks it again. Use raspi-config:
sudo raspi-config
Navigate to Localisation Options → WLAN Country and select your country. Reboot afterward. You can also set it directly in /etc/wpa_supplicant/wpa_supplicant.conf — make sure the country code is uppercase (e.g., country=US, not country=us).
Fix 2: Correct Your wpa_supplicant.conf File
If your Pi can see WiFi networks but won’t connect, the credentials file is the next place to look. Check the contents:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
It should look like this:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US
network={
ssid="YourNetworkName"
psk="YourPassword"
}
Two common mistakes: (1) a missing or lowercase country code, and (2) the file was edited on Windows and has CRLF line endings, which confuse the parser. Fix the second issue with:
sudo dos2unix /etc/wpa_supplicant/wpa_supplicant.conf
Fix 3: Disable WiFi Power Management
By default, the Linux WiFi driver puts the wireless adapter into a low-power state after a period of inactivity. This is the #1 cause of periodic connection drops on headless Raspberry Pi servers and project boards. The adapter goes to sleep and doesn’t wake up properly, causing the SSH session to hang or the Pi to fall off the network entirely.
Check if power management is on:
iwconfig wlan0
If you see “Power Management:on”, disable it:
sudo iwconfig wlan0 power off
To make this permanent across reboots, create a file at /etc/network/if-up.d/disable_power_management:
#!/bin/sh
/sbin/iwconfig wlan0 power off
Then make it executable: sudo chmod +x /etc/network/if-up.d/disable_power_management. After a reboot, power management stays off permanently.
Fix 4: Router Band Steering Confusion
Many modern routers merge 2.4 GHz and 5 GHz into a single network name and use “Smart Switching” or “Band Steering” to decide which band each device uses. The Raspberry Pi’s WiFi driver doesn’t always play nicely with these algorithms, leading to repeated disconnects as the router tries to move the Pi between bands.
The fix: log into your router and split the bands into separate SSIDs (e.g., HomeNet_2.4G and HomeNet_5G). Then explicitly connect your Pi to one of them in wpa_supplicant.conf. If you’re experiencing drops near thick walls, force the Pi onto 2.4 GHz for better range stability. If you’re close to the router and need throughput, force it onto 5 GHz. You can also add a band preference in the network block:
network={
ssid="HomeNet_5G"
psk="YourPassword"
proto=RSN
key_mgmt=WPA-PSK
freq_list=5180 5200 5220 5240
}
Fix 5: HDMI Cable Interference on 2.4 GHz
This one surprises most Pi users: unshielded HDMI cables running at high resolutions (2560×1440 or 4K) emit RF noise squarely in the 2.4 GHz band. If your WiFi signal drops or slows down whenever you connect a 4K monitor, HDMI interference is likely the culprit.
Solutions: switch to a shielded HDMI cable, reduce your display resolution to 1080p, or connect the Pi to the 5 GHz band (which is unaffected by HDMI noise). The Raspberry Pi Foundation has acknowledged this as a known issue on Pi 4 hardware.
Fix 6: Inadequate Power Supply
An underpowered Pi will throttle the CPU and can destabilize the WiFi radio. The Raspberry Pi 5 requires a 5V/5A USB-C power supply (27W). The Pi 4 needs at least 5V/3A. Cheap phone chargers that claim these ratings often can’t sustain them under load.
Check if your Pi is throttling due to low voltage:
vcgencmd get_throttled
A result of 0x0 means no throttling. Any other value indicates under-voltage has occurred. Use the official Raspberry Pi power supply for guaranteed performance.
Fix 7: Update Firmware and the Kernel
WiFi driver bugs are patched regularly in Raspberry Pi OS updates. If none of the above fixes resolve your problem, bring the system fully up to date:
sudo apt update && sudo apt full-upgrade -y
sudo reboot
After rebooting, check the kernel version with uname -r to confirm the update applied. Newer kernels often contain WiFi fixes that aren’t backported to older firmware packages.
When to Use a USB WiFi Adapter Instead
If you’ve tried everything and your Pi’s built-in WiFi is still unreliable — especially in electrically noisy environments like workshops or server racks — a USB WiFi adapter is a practical solution. Adapters based on the Realtek RTL8812AU (for dual-band AC1200 speeds) have good Linux driver support on Raspberry Pi OS. Plug it in, install the driver, and connect with NetworkManager or nmcli. The external adapter sidesteps any on-board antenna or interference issues entirely.
For most Pi users, the combination of setting the country code, disabling power management, and separating router bands will solve persistent WiFi problems. Check our guide on how to use WiFi Analyzer to identify channel congestion if you’re still seeing intermittent slowdowns after applying these fixes.
Related Articles
How to Fix WiFi Not Working on Linux: Ubuntu, Fedora, and Debian Troubleshooting
WiFi not working on Linux? Whether you're on Ubuntu, Fedora, or Debian, this guide covers every fix — from missing drivers and rfkill blocks to NetworkManager issues and Broadcom adapter quirks.
How to Fix WiFi Issues on Apple TV: Slow Speeds and Connection Drops
Apple TV WiFi disconnecting, buffering, or running far slower than your other devices? Here are the most effective fixes for every Apple TV model, from a quick restart to advanced router settings.
How to Fix WiFi DHCP Errors: “Failed to Obtain IP Address” and Related Issues
Seeing a “Failed to obtain IP address” or “DHCP is not enabled for WiFi” error? Here are the most effective fixes for Android, iPhone, Windows, and the router itself.