Systemd Service
Complete Service Setup (Wired + WiFi)
For EAP-TLS on both wired and WiFi interfaces, enable these services:
# Wired 802.1X
sudo systemctl enable wpa_supplicant-wired@enp0s31f6.service
sudo systemctl start wpa_supplicant-wired@enp0s31f6.service
# WiFi 802.1X
sudo systemctl enable wpa_supplicant-wifi@wlan0.service
sudo systemctl start wpa_supplicant-wifi@wlan0.service
# DHCP for all interfaces
sudo systemctl enable dhcpcd
sudo systemctl start dhcpcd
# CRITICAL: Disable iwd (conflicts with wpa_supplicant)
sudo systemctl disable iwd
sudo systemctl stop iwd
sudo systemctl mask iwd # Prevent accidental start
Verify Service Status
# Check all related services
systemctl is-enabled wpa_supplicant-wired@enp0s31f6 # Should be: enabled
systemctl is-enabled wpa_supplicant-wifi@wlan0 # Should be: enabled
systemctl is-enabled dhcpcd # Should be: enabled
systemctl is-enabled iwd # Should be: disabled
Wired Service Template
The template service is at /lib/systemd/system/wpa_supplicant-wired@.service:
[Unit]
Description=WPA supplicant daemon (wired interface %I)
Requires=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
Before=network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/usr/bin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant-wired-%I.conf -D wired -i %I
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
WiFi Service Template
Create /etc/systemd/system/wpa_supplicant-wifi@.service:
[Unit]
Description=WPA supplicant WiFi EAP-TLS (%I)
Requires=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
Before=network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/usr/bin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant-wifi-%I.conf -i %I
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
WiFi uses -i %I without -D wired flag. The driver auto-detection (nl80211) works for WiFi.
|
Configuration File Naming Convention
| Service | Config File |
|---|---|
|
|
|
|
Logs
# Wired logs
sudo journalctl -u wpa_supplicant-wired@enp0s31f6 -f
# WiFi logs
sudo journalctl -u wpa_supplicant-wifi@wlan0 -f
# Show recent authentication (both)
sudo journalctl -u 'wpa_supplicant-*' --since "10 minutes ago"
# DHCP logs
sudo journalctl -u dhcpcd -f
Interface Naming
| Interface | Description |
|---|---|
enp0s31f6 |
ThinkPad P50 built-in Ethernet |
wlan0 |
Intel WiFi (after iwlwifi driver loads) |
eno1 |
Common server naming |
eth0 |
Legacy naming (requires config) |
Troubleshooting Service Failures
# Check why service failed
systemctl status wpa_supplicant-wifi@wlan0
journalctl -xeu wpa_supplicant-wifi@wlan0
# Common issue: interface not ready
# Fix: Ensure WiFi driver is loaded
lsmod | grep iwl
modprobe iwlwifi
# Common issue: config file not found
# Verify config exists
ls -la /etc/wpa_supplicant/wpa_supplicant-wifi-wlan0.conf