Debian: Configure wireless LAN by Systemd

Hi,

this post is a step by step tutorial for setup WLAN in debian by systemd.

Determine the WLAN Adapter and reachable Networks

root@debdev ~# iwconfig
root@debdev ~# ifconfig wlan0 up
root@debdev ~# iwlist wlan0 scanning


Create a profile for your Network

root@debdev ~# wpa_passphrase YOUR_NETWORK_SSID Passphrase > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf

Create a networkd file /etc/systemd/network/wlan0.network for device wlan0 so that systemd handles this interface. Also remove all entries in /etc/network/interfaces which belongs to wlan0.

[Match]
Name=wlan0
[Network]
DHCP=yes

Create a unit for wpa_supplicant. Filename: /lib/systemd/system/wpa_supplicant@.service


[Unit]
Description=WPA Unit
Before=network.target
Wants=network.target
Requires=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device dbus.service 

[Service]
Type=simple
ExecStart=/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant-%i.conf -i %i

[Install]
Alias=multi-user.target.wants/wpa_supplicant@%i.service

Enable systemd network config

root@debdev ~# systemctl enable systemd-networkd.service
root@debdev ~# systemctl enable systemd-resolved.service
root@debdev ~# mv /etc/resolv.conf /etc/resolv.conf.save
root@debdev ~# ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

Enable wpa_supplicant

root@debdev ~# systemctl enable wpa_supplicant@wlan0.service
root@debdev ~# systemctl status -l wpa_supplicant@wlan0.service
● wpa_supplicant@wlan0.service - WPA Unit
   Loaded: loaded (/lib/systemd/system/wpa_supplicant@.service; enabled)
   Active: active (running) since Do 2016-08-03 22:18:24 CEST; 5min ago
 Main PID: 372 (wpa_supplicant)
   CGroup: /system.slice/system-wpa_supplicant.slice/wpa_supplicant@wlan0.service
           └─372 /sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant-wlan0.conf -i wlan0

Note: If you got an error: [/lib/systemd/system/wpa_supplicant@.service:3] Failed to add dependency on sys-subsystem… or
Systemd Cannot add dependency wpa_supplicant@%I.service to multi-service.target, ignoring: Invalid argument please check:

  • Have you forgot to disable interface wlan0 in /etc/network/interfaces?
  • Have you got multiple links or an link wpa_supplicant@%I.service to wpa_supplicant@.service in the target directory /etc/systemd/system/multi-user.target.wants
  • Use the escaped instance variable %i instead of %I in the unit file.

This shows the correct link

root@debdev ~# ls -l /lib/systemd/system/multi-user.target.wants/wpa_supplicant*
lrwxrwxrwx 1 root root 43 Aug 3 22:57 wpa_supplicant@wlan0.service -> /lib/systemd/system/wpa_supplicant@.service

And if connected

root@debdev ~# iwconfig
wlan0     IEEE 802.11bgn  ESSID:"YOUR_NETWORK_SSID"
          Mode:Managed  Frequency:2.412 GHz  Access Point: 34:31:C4:69:1C:4E
          Bit Rate=21.7 Mb/s   Tx-Power=20 dBm
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=33/70  Signal level=-77 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:7  Invalid misc:14   Missed beacon:0

Michael




Leave a Reply