Connect to a wireless network with wpa_supplicant
If your usual GUI program to connect to wifi networks, e.g. wicd or NetworkManager is not available, you can connect to a wireless network by manually scanning and editing wpa_supplicant's config files.
see also: Arch Wiki on wpa_supplicant
one-liner to connect with known SSID and passphrase
Run this on a root shell. sudo
will not suffice:
wpa_supplicant -B -i INTERFACE -c <(wpa_passphrase MYSSID PASSPHRASE)
Find wireless interfaces with iw list
.
systemd-networkd
- /etc/systemd/network/INTERFACE.network
[Match] Name=INTERFACE [Network] DHCP=yes
- /etc/wpa_supplicant/wpa_supplicant-INTERFACE.conf
ctrl_interface=/var/run/wpa_supplicant eapol_version=1 ap_scan=1 fast_reauth=1 network={ ssid="MYSSID" psk="MYSUPERSECUREPASSWORD" priority=1 }
start that shit up:
systemctl enable systemd-networkd systemctl enable wpa_supplicant@INTERFACE systemctl start systemd-networkd systemctl start wpa_supplicant@INTERFACE
Troubleshooting
I connected to the WLAN, but still can't access the network
Do you have an IP address? Check this with ip a
. If not, you have to obtain an IP via dhcpcd INTERFACE
or set it manually with ip a add ADDRESS dev INTERFACE
.
Could be that your /etc/resolv.conf
doesn't list any DNS servers. Either add this:
- /etc/resolv.conf
nameserver 127.0.0.1
(replace 127.0.0.1
with the IP address of your router/DNS server)
or use systemd-resolved
:
mv /etc/resolv.conf /etc/resolv.conf.before-the-systemd-nation-attacked systemctl enable --now systemd-resolved
systemd-resolved populates the /etc/resolv.conf
with known DNS servers automagically, but you can still add them manually:
… DNS=1.2.3.4 FallbackDNS=5.6.7.8 …