What it does
rfkill lists, blocks, and unblocks wireless radios.
It operates below NetworkManager and iw, enforcing a hard
enable/disable state for radio transmitters such as Wi‑Fi and Bluetooth.
How it works (mechanical)
The kernel exposes radio devices through the rfkill subsystem. Each radio can be blocked in two ways:
- Hard block — enforced by hardware (switch, BIOS, firmware)
- Soft block — enforced by software (kernel/userspace)
rfkill toggles the software block state. Hard blocks must be cleared
by hardware or firmware and cannot be overridden.
10 Practical Examples
# 1) List all radios and their block state rfkill list
# 2) Show only Wi‑Fi devices rfkill list wifi
# 3) Show only Bluetooth devices rfkill list bluetooth
# 4) Unblock all radios sudo rfkill unblock all
# 5) Block all radios (airplane mode) sudo rfkill block all
# 6) Unblock Wi‑Fi only sudo rfkill unblock wifi
# 7) Unblock Bluetooth only sudo rfkill unblock bluetooth
# 8) Check for hard blocks (common laptop issue) rfkill list | grep -i hard
# 9) Recover Wi‑Fi after resume or suspend sudo rfkill unblock wifi ip link set wlan0 up
# 10) Script-friendly output (ID-focused) rfkill --output ID,TYPE,SOFT,HARD
Notes & Gotchas
- Hard blocks cannot be cleared with software.
- Some laptops tie rfkill to a physical key or BIOS setting.
- NetworkManager respects rfkill and will not override it.
- After unblocking, interfaces may still need to be brought up.
- rfkill does not configure networks — it only enables/disables radios.
Historical Context
The rfkill subsystem was introduced to standardize radio kill switches across vendors. Prior to rfkill, each driver handled radio power independently, leading to inconsistent behavior on laptops and embedded systems.
Modern Equivalent / Related Tools
- iw — inspect and control Wi‑Fi interfaces
- nmcli radio — NetworkManager radio toggles
- ip link — bring interfaces up/down after unblocking
- bluetoothctl — Bluetooth management
- systemd-rfkill — persistent rfkill state across reboots