Arch Linux does not come with a GUI network manager by default — and that is a feature, not a flaw. iwd (iNet Wireless Daemon) is a modern, lightweight wireless daemon developed by Intel that works beautifully from the terminal. This guide walks you through everything: first-time setup, connecting to a network, managing saved profiles, and fixing the common problems that trip people up.
What Is iwd and iwctl?
iwd is the background daemon that manages your wireless hardware. iwctl is the interactive command-line client you use to talk to it. Together they replace older tools like wpa_supplicant + dhcpcd with a single, clean solution that handles authentication, DHCP, and reconnection automatically.
| Component | Role |
|---|---|
iwd |
Background daemon — manages Wi-Fi hardware, authentication, roaming |
iwctl |
Interactive CLI to control iwd |
/var/lib/iwd/ |
Where saved network profiles (passwords) are stored |
Step 1 — Install and Start iwd
On a fresh Arch install, iwd may not be running yet.
|
|
Verify it is running:
|
|
You should see Active: active (running). If it shows failed, check for conflicts with other network managers (see the Troubleshooting section at the end).
Step 2 — Enter the iwctl Shell
iwctl has an interactive shell mode — the easiest way to work with it. Launch it:
|
|
Your prompt changes to [iwd]#. All commands below are typed inside this shell unless noted otherwise.
To exit at any time:
[iwd]# quit
You can also run one-off commands without entering the shell by passing arguments directly:
|
|
Step 3 — Find Your Wireless Interface Name
[iwd]# device list
Sample output:
Devices
----------------------------------------------------------------------
Name Address Powered Adapter Mode
----------------------------------------------------------------------
wlan0 b8:27:eb:7d:44:9a on phy0 station
Your interface name is in the Name column — typically wlan0, wlp2s0, or similar. Note it down — you will use it in every command that follows.
Step 4 — Scan for Available Networks
Before connecting, scan to discover nearby networks:
[iwd]# station wlan0 scan
This command returns immediately — the scan runs in the background. Wait a second, then display the results:
[iwd]# station wlan0 get-networks
Sample output:
Available networks
----------------------------------------------------------------------
Network name Security Signal
----------------------------------------------------------------------
MyHomeNetwork psk ****
OfficeWiFi psk ***
CoffeeShop_Guest open **
Neighbor_5G psk *
psk— WPA/WPA2 password-protectedopen— no password required- Signal bars:
****= strongest,*= weakest
Step 5 — Connect to a Network
Connecting to a Password-Protected Network (WPA/WPA2)
[iwd]# station wlan0 connect "MyHomeNetwork"
iwctl will prompt you for the passphrase:
Type the network passphrase for MyHomeNetwork psk.
Passphrase: ▌
Type your password and press Enter. If the passphrase is correct, iwd connects and saves the profile automatically — you will not need to enter it again.
Connecting to an Open Network (No Password)
[iwd]# station wlan0 connect "CoffeeShop_Guest"
No passphrase prompt — it connects immediately.
Passing the Passphrase Inline (Non-Interactive)
Useful in scripts or when you want to skip the prompt:
|
|
Step 6 — Verify the Connection
Check the current connection status:
[iwd]# station wlan0 show
Sample output:
Station: wlan0
----------------------------------------------------------------------
Settable Property Value
----------------------------------------------------------------------
State connected
Device wlan0
Mode station
Connected network MyHomeNetwork
IPv4 address 192.168.1.105
IPv6 address fe80::ba27:ebff:fe7d:449a
Scanning no
State: connected and a listed IPv4 address confirm a successful connection.
You can also verify from outside iwctl:
|
|
Step 7 — Check DHCP (If You Have No IP Address)
iwd handles authentication but does not assign your IP address — that is done by a DHCP client. On most Arch setups this is handled automatically by systemd-networkd or NetworkManager, but on a minimal install you may need to request an IP manually.
Option A — systemd-networkd (recommended for iwd)
Create a network profile for wireless interfaces:
|
|
Add the following content:
|
|
Then enable and start the service:
|
|
Option B — dhcpcd (manual, quick)
|
|
Enabling Built-In DHCP in iwd
iwd has its own built-in DHCP client that can replace systemd-networkd for wireless entirely. Enable it in /etc/iwd/main.conf:
|
|
Add:
|
|
Restart iwd:
|
|
With this option, iwd handles both authentication and DHCP — no separate DHCP daemon needed for Wi-Fi.
Managing Saved Network Profiles
Every network you successfully connect to is saved as a profile in /var/lib/iwd/. Profiles are plain text files named after the network SSID.
View All Saved Networks
[iwd]# known-networks list
Sample output:
Known Networks
----------------------------------------------------------------------
Name Type Hidden Last connected
----------------------------------------------------------------------
MyHomeNetwork psk no Sunday, ...
OfficeWiFi psk no Monday, ...
Connect to a Saved Network
iwd reconnects to known networks automatically. To connect manually:
[iwd]# station wlan0 connect "MyHomeNetwork"
No passphrase needed — it reads from the saved profile.
Forget a Network (Remove Saved Profile)
[iwd]# known-networks "MyHomeNetwork" forget
This deletes the saved passphrase. The next connection attempt will ask for the password again.
Connecting to a Hidden Network
If the SSID is not broadcast, use connect-hidden:
[iwd]# station wlan0 connect-hidden "HiddenNetworkSSID"
iwctl will prompt for the passphrase. The hidden network will be saved and auto-connected in the future.
Disconnecting
[iwd]# station wlan0 disconnect
Checking Connection State Without Entering iwctl
Quick status check from a regular terminal prompt:
|
|
Auto-Connect Behavior
Once a network profile is saved, iwd will automatically reconnect to it whenever:
- The system boots (if
iwd.serviceis enabled) - The interface comes back up after being disabled
- The previously connected network comes back into range after being out of range
No configuration is needed — this is the default behavior.
To disable auto-connect for a specific network:
|
|
To re-enable it:
|
|
Useful iwctl Commands at a Glance
All commands are run inside the [iwd]# shell unless shown with iwctl prefix.
| Task | Command |
|---|---|
| List wireless interfaces | device list |
| Scan for networks | station wlan0 scan |
| List available networks | station wlan0 get-networks |
| Connect (with password prompt) | station wlan0 connect "SSID" |
| Connect (passphrase inline) | iwctl --passphrase "pass" station wlan0 connect "SSID" |
| Connect to hidden network | station wlan0 connect-hidden "SSID" |
| Show connection status | station wlan0 show |
| Disconnect | station wlan0 disconnect |
| List saved networks | known-networks list |
| Forget a saved network | known-networks "SSID" forget |
| Disable auto-connect | known-networks "SSID" set-property AutoConnect no |
| Power off wireless device | device wlan0 set-property Powered off |
| Power on wireless device | device wlan0 set-property Powered on |
Troubleshooting
iwd Fails to Start — Conflict with wpa_supplicant or NetworkManager
Only one wireless daemon can own the hardware at a time. If you have wpa_supplicant or NetworkManager running, they will conflict with iwd.
|
|
No Wireless Interface Listed in device list
Your Wi-Fi card may be blocked. Check:
|
|
If you see Soft blocked: yes:
|
|
If you see Hard blocked: yes, a physical switch or BIOS setting is blocking the hardware — check your laptop’s Fn key or BIOS Wi-Fi setting.
Connected but No IP Address
iwd authenticated successfully but no DHCP lease was obtained. Check your DHCP setup:
|
|
Wrong Password — How to Re-Enter It
iwd will refuse to connect and log an error. Forget the profile and reconnect:
[iwd]# known-networks "MyHomeNetwork" forget
[iwd]# station wlan0 connect "MyHomeNetwork"
Slow or Intermittent Connection — Power Management
Linux may aggressively power-manage your Wi-Fi card, causing dropped packets. Check:
|
|
If it shows Power Management:on, disable it:
|
|
To make it persistent across reboots, create a udev rule:
|
|
Add:
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wlan*", RUN+="/usr/bin/iwconfig %k power off"
A Note on iwd vs wpa_supplicant
wpa_supplicant has been the standard wireless authentication daemon on Linux for over a decade. iwd is newer and takes a more opinionated, self-contained approach — it handles authentication, DHCP (optionally), roaming, and profile management in one daemon. On Arch Linux, iwd is the recommended choice for new setups. It is faster to configure, easier to understand, and actively maintained by Intel.
If you are coming from wpa_supplicant and it is working well for you, there is no urgent reason to switch — but if you are setting up a new Arch system from scratch, start with iwd.
