How to Fix WiFi Not Working on Fedora After Installation

Check if your WiFi hardware is recognized and enabled by the system, then ensure the NetworkManager service is running and the correct firmware is installed.

You installed Fedora and the WiFi is dead

You just finished installing Fedora Workstation. The desktop loads, the animations are smooth, and you go to connect to your network. The WiFi icon is missing, or the menu says "No WiFi adapter found." You check the physical switch on the laptop. It is on. You reboot. Nothing changes. The system sees the hardware, or it doesn't, but the connection is dead. This usually means the kernel lacks the firmware blob your chip needs, or a software lock is holding the radio hostage.

What is actually happening

Linux kernels are open source. Many WiFi chip manufacturers refuse to release the source code for their drivers. Instead, they provide binary firmware blobs. The kernel loads the driver, then asks for the firmware file. If the file is missing, the driver loads but the chip stays silent. The driver is the translator between the OS and the hardware. The firmware is the vocabulary the hardware needs to function. Without the vocabulary, the translator has nothing to say.

Fedora ships with a large collection of these blobs in the linux-firmware package. This package covers most Intel, Realtek, and Atheros chips. Some newer or obscure chips require extra packages. Broadcom chips often need a proprietary module that builds against your specific kernel. Sometimes the hardware is detected but blocked by rfkill due to a laptop switch or a previous crash. SELinux can also block NetworkManager if file contexts get corrupted, though this is rare on a fresh install.

Check hardware detection and driver binding

Here is how to confirm the kernel sees the adapter and which driver is bound to it. The output tells you if the driver is loaded or if the hardware is invisible.

lspci -knn | grep -iA3 net
# -k shows the kernel driver in use and available modules
# -n displays vendor and device IDs in brackets
# -A3 prints three lines of context after the match
# grep -iA3 filters for network devices and keeps surrounding lines

Look for a line starting with Network controller. If you see Kernel driver in use: iwlwifi, the driver is active. If you see Kernel modules: iwlwifi but no "in use" line, the driver is available but not loaded. If the command returns nothing, the kernel does not recognize the hardware at all. USB dongles require a different check. Run lsusb to list USB devices and look for a network controller entry.

If the driver is missing entirely, your chip may be too new for the current kernel, or you need a proprietary package. If the driver is loaded but the chip is silent, the firmware is missing.

Check for radio blocks

Run this to see if a software or hardware switch is killing the radio. Laptops often have a physical switch or a keyboard shortcut that toggles the radio state. The kernel tracks this via rfkill.

rfkill list
# Lists all wireless devices and their block status
# Soft blocked means a software command disabled the radio
# Hard blocked means a hardware switch or sensor disabled the radio

If you see Soft blocked: yes, the radio is disabled by software. Unblock it with sudo rfkill unblock wifi. If you see Hard blocked: yes, check the laptop for a physical switch or a function key combination. Some laptops have a sensor that hard-blocks the radio when the lid is closed. A hard block cannot be overridden by software. You must change the physical state.

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

Install missing firmware

Here is how to update the firmware database and install the base firmware package. This command pulls the latest blobs from the Fedora repositories.

sudo dnf install linux-firmware
# Installs or updates the collection of firmware files
# These files are copied to /lib/firmware during installation
# The kernel reads from this directory when loading drivers

If you have a Broadcom chip, the open-source driver often fails. You need the proprietary module. This package uses akmod to build the driver against your running kernel.

sudo dnf install akmod-wl
# akmod packages contain source code, not pre-built binaries
# The package triggers a build process after installation
# The build compiles the module against the current kernel version
# This requires kernel-devel and kernel-headers to be present

The akmod build takes time. You will see a progress bar or a message about building the module. Wait for it to finish. Do not interrupt the process. If the build fails, you are missing development packages. Install them with sudo dnf install kernel-devel kernel-headers and retry.

After installing firmware or akmod packages, reboot the system. The kernel module needs to reload to pick up the new files.

Reboot after firmware install. The kernel module needs to reload.

Verify NetworkManager status

Here is how to check if NetworkManager is running and if it reports errors. NetworkManager handles all network configuration on Fedora. If it is down, you have no network.

systemctl status NetworkManager
# Shows the current state, recent log lines, and dependencies
# Active: active (running) means the service is healthy
# Failed indicates a crash or configuration error
# Check the log lines below the status for specific errors

If the service is failed, start it and enable it to run on boot.

sudo systemctl start NetworkManager
# Starts the service immediately
sudo systemctl enable NetworkManager
# Creates a symlink so the service starts automatically on boot
# Enable does not start the service now, only on future boots

If NetworkManager starts but WiFi still does not appear, check the journal for details. The -xe flags are standard practice for debugging.

journalctl -xeu NetworkManager
# -x adds explanatory text to log entries where available
# -e jumps to the end of the journal output
# -u filters output to only the NetworkManager unit
# This combination shows recent errors with context

Look for lines marked ERROR or CRITICAL. If you see messages about missing firmware or driver failures, the issue is hardware or firmware, not NetworkManager.

Check for SELinux denials

Here is how to inspect the audit log for SELinux denials related to network management. SELinux enforces mandatory access controls. If file contexts are wrong, NetworkManager may be denied access to its configuration.

sudo ausearch -m avc -ts recent | grep NetworkManager
# -m avc filters for Access Vector Cache denials
# -ts recent shows denials since the last boot or audit start
# grep narrows the output to NetworkManager-related entries
# Empty output means no recent SELinux denials for NM

If you see denials, the file contexts are likely corrupted. Restore the default contexts for the NetworkManager configuration directory.

sudo restorecon -Rv /etc/NetworkManager/
# -R processes the directory recursively
# -v prints verbose output showing changed files
# restorecon resets contexts to the defaults defined in policy
# This fixes issues caused by manual file moves or copies

Never edit files in /usr/lib/. Those files are owned by packages. Edit files in /etc/. Manual edits in /usr/lib/ get overwritten on updates and can break package integrity.

Run journalctl first. Read the actual error before guessing.

Common pitfalls and error patterns

Broadcom chips are the most common source of trouble. The akmod-wl package requires a working build environment. If you see this error during installation, the transaction is blocked by missing dependencies.

Error: Transaction test error:
  package akmod-wl-6.30.223.273-1.fc40.x86_64 requires kernel-devel-uname-r = 6.8.9-300.fc40.x86_64, but none of the providers can be installed

The error indicates kernel-devel is missing or mismatched. Install the development packages and retry.

sudo dnf install kernel-devel kernel-headers
# Provides the headers and Makefiles needed to build kernel modules
# The version must match the running kernel exactly
# dnf resolves the version automatically if the kernel is installed

Realtek chips sometimes require a specific firmware file that is not in the main linux-firmware package. Check the lspci output for the exact device ID. Search the Fedora package database for firmware matching that ID. Some Realtek chips work with the iwlwifi driver if the firmware is present. Others need rtw88. The driver name in lspci output tells you which path to take.

USB dongles may not be detected if the USB subsystem is not fully initialized. Wait a few seconds after boot before checking lsusb. Some cheap dongles use chipsets that lack Linux support entirely. Check the chipset model against a compatibility list before buying hardware.

SELinux denials can also appear if you move configuration files manually. If you copy a file from /usr/share/ to /etc/, the context may not transfer correctly. Use restorecon to fix the context. Do not disable SELinux to work around network issues. Disabling SELinux exposes the system to other risks and rarely solves the root cause.

Trust the package manager. Manual file edits drift, snapshots stay.

Decision matrix

Use linux-firmware when your card is Intel, Realtek, or Atheros and the kernel driver loads but the chip will not transmit data.

Use akmod-wl when you have a Broadcom chip and the open-source brcmfmac driver fails to initialize or the device does not appear in nmcli.

Use rfkill unblock wifi when rfkill list shows "Soft blocked: yes" and no physical switch is engaged on the hardware.

Use restorecon when SELinux denials appear in the journal and NetworkManager cannot read its configuration files or fail to start.

Use a USB WiFi adapter with a known chipset when your internal card is unsupported and you need immediate connectivity to download drivers or firmware.

Stay on the upstream Workstation if you only deviate from the defaults occasionally and want automatic updates to handle firmware improvements.

Where to go next