How to Fix Intel WiFi Not Connecting on Fedora

Fix Intel WiFi on Fedora by installing linux-firmware and enabling the wireless interface with nmcli and modprobe.

The scenario

You boot into Fedora and the network manager applet shows a grayed-out WiFi icon. You click it, and nothing happens. You run nmcli device and the wireless interface is listed as unmanaged or disconnected. You already installed the OS from a USB drive, so the hardware works. The problem appeared after a kernel update or a fresh install on a machine with a modern Intel AX200 or AX210 chip. You need the connection back without reinstalling the entire system.

What is actually happening

Intel WiFi adapters on Linux rely on two separate pieces to function. The kernel contains the driver module, usually named iwlwifi. The driver handles the protocol stack and talks to the operating system. The firmware is a separate binary blob that actually runs on the WiFi chip itself. The kernel driver loads the firmware into the chip's memory at boot time. If the firmware file is missing, the driver loads but refuses to initialize the interface. The hardware sits idle, and NetworkManager sees a dead radio.

Think of the driver as a translator and the firmware as the instruction manual for the hardware. The translator can speak Linux, but without the manual, it cannot tell the chip what to do. Fedora ships with a broad selection of firmware in the linux-firmware package, but minimal installs or older ISO images sometimes leave it out. A kernel update can also shift the expected firmware version, causing a mismatch until the package manager catches up.

The iwlwifi module is a unified driver. It supports dozens of Intel wireless chips from the early 2010s to the latest AX series. When the module loads, it reads the PCI device ID of your specific card. It then constructs a filename pattern and calls the kernel's request_firmware() function. The kernel searches /lib/firmware/ for a matching .ucode file. If it finds it, the binary is uploaded to the chip's internal memory. The chip initializes, exposes a wlan0 interface, and wpa_supplicant takes over authentication. If any step fails, the interface never appears to NetworkManager.

The fix

Start by ensuring the firmware package is present and up to date. Run the standard maintenance command to refresh metadata and pull the latest files.

sudo dnf upgrade --refresh linux-firmware
# --refresh forces dnf to ignore cached metadata and check the repos again
# linux-firmware contains the binary blobs for Intel, Realtek, and AMD chips
# upgrading ensures you have the exact version the current kernel expects
# this is the normal weekly maintenance command, not a major release upgrade

After the package installs, reload the WiFi driver. The kernel does not automatically pick up new firmware files while the module is already loaded. You must remove it from memory and let it load again.

sudo rmmod iwlwifi
# unloads the driver module from the running kernel
# if the command fails with "Module is in use", close any network apps first
sudo modprobe iwlwifi
# reloads the driver and triggers the firmware loading sequence
# the kernel will now search /lib/firmware for the matching Intel binary

Enable the radio at the NetworkManager level. Fedora disables wireless radios by default during installation to comply with regulatory requirements and prevent accidental connections to corporate networks.

sudo nmcli radio wifi on
# toggles the software kill switch in NetworkManager
# this does not affect the physical hardware switch or keyboard shortcut
sudo nmcli device wifi rescan
# forces the interface to scan for available access points immediately
# skips the usual polling interval so you see networks right away

Reboot before you debug. Half the time the symptom is gone.

Verify it worked

Check the interface state and confirm the firmware loaded successfully. The kernel prints a clear message when the firmware handshake completes.

nmcli device status
# shows the current state of all network interfaces
# look for your WiFi device in the DEVICE column with connected in the STATE column
dmesg | grep -i iwlwifi | tail -5
# filters kernel ring buffer for the Intel WiFi driver
# the last few lines will show firmware version and initialization status

You should see a line containing loaded firmware version followed by a version string like 69.89388389.0. If the interface shows connected and you see the firmware version in the logs, the hardware is operational. Run nmcli connection show --active to verify the IP assignment and gateway. Trust the package manager. Manual file edits drift, snapshots stay.

Common pitfalls and error messages

The most frequent failure mode is a firmware version mismatch. The kernel driver expects a specific file in /lib/firmware/, but the linux-firmware package is outdated or the file is corrupted. The kernel log will print a clear refusal.

iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-ty-a0-gf-a0-69.ucode failed with error -2
iwlwifi 0000:00:14.3: request firmware failed, disabling card

Error -2 means ENOENT, or file not found. The driver looked for iwlwifi-ty-a0-gf-a0-69.ucode and the filesystem returned nothing. Run sudo dnf upgrade --refresh to pull the missing file. Do not download firmware from random GitHub repositories. The official Fedora package is signed and tested against the current kernel.

Another common issue is power management interfering with the connection. Intel chips sometimes drop the link when the kernel aggressively scales down PCIe power states. If your WiFi disconnects randomly after ten minutes, disable the driver's internal power save feature.

echo "options iwlwifi power_save=0" | sudo tee /etc/modprobe.d/iwlwifi-power.conf
# writes a module parameter override to the persistent configuration directory
# /etc/ is for user modifications, /usr/lib/ ships with the package and gets overwritten
# power_save=0 tells the driver to keep the radio in a high-power state
sudo modprobe -r iwlwifi && sudo modprobe iwlwifi
# applies the new parameter without a full system reboot

SELinux rarely blocks WiFi initialization, but it can prevent NetworkManager from binding to the interface if you have custom firewall rules or third-party network managers installed. Check the audit log if the interface stays unmanaged.

sudo journalctl -t setroubleshoot | tail -10
# reads the SELinux troubleshooting daemon logs
# look for AVC denials related to NetworkManager or wpa_supplicant

Run journalctl -xeu NetworkManager first. Read the actual error before guessing.

When to use this versus alternatives

Use dnf upgrade --refresh linux-firmware when the kernel reports a missing firmware file or error -2. Use modprobe -r iwlwifi && modprobe iwlwifi when you need to apply new parameters or firmware without rebooting. Use nmcli radio wifi on when the interface is software-blocked by NetworkManager. Use options iwlwifi power_save=0 when the connection drops repeatedly after idle periods. Stay on the default power management if you are running on battery and need maximum runtime. Use iwconfig or rfkill list only when you need to check hardware kill switches that NetworkManager cannot override.

Where to go next