WICD y sus conflictos con el servicio wpa_supplicant

por | junio 10, 2019

Si utilizas WICD en vez de Network Manager como gestor de conexiones Wifi para Linux puede que tengas algún problema puntual con el servicio wpa_supplicant que viene instalado por defecto.

Como podemos ver en los logs, al arrancar el sistema se inicia el servicio wpa_supplicant.service con su propio driver nl80211:

root@jota-portatil:~# journalctl -u wpa_supplicant.service 
-- Logs begin at Thu 2018-10-18 20:24:28 CEST, end at Fri 2019-05-17 16:44:17 CEST. --
oct 18 20:24:37 jota-portatil wpa_supplicant[2379]: ctrl_iface exists and seems to be in use - cannot override it
oct 18 20:24:37 jota-portatil wpa_supplicant[2379]: Delete '/run/wpa_supplicant/wlp3s0' manually if it is not used anymore
oct 18 20:24:37 jota-portatil wpa_supplicant[2379]: Failed to initialize control interface '/run/wpa_supplicant'.
                                                    You may have another wpa_supplicant process already running or the file was
                                                    left by an unclean termination of wpa_supplicant in which case you will need
                                                    to manually remove this file before starting wpa_supplicant again.
oct 18 20:24:37 jota-portatil wpa_supplicant[2379]: nl80211: deinit ifname=wlp3s0 disabled_11b_rates=0
oct 18 20:24:47 jota-portatil wpa_supplicant[2379]: ctrl_iface exists and seems to be in use - cannot override it
oct 18 20:24:47 jota-portatil wpa_supplicant[2379]: Delete '/run/wpa_supplicant/wlp3s0' manually if it is not used anymore
oct 18 20:24:47 jota-portatil wpa_supplicant[2379]: Failed to initialize control interface '/run/wpa_supplicant'.
                                                    You may have another wpa_supplicant process already running or the file was
                                                    left by an unclean termination of wpa_supplicant in which case you will need
                                                    to manually remove this file before starting wpa_supplicant again.

El problema es que el servicio de WICD utiliza su propio proceso WPA Supplicant encargado de conectar desde la interfaz de red wlp3s0 al punto de acceso configurado en /var/lib/wicd/configurations/9c5c8e8ba580

Si echamos un vistazo al fichero de configuración se especifica SSID de la red, clave de conexión, etc…

root@jota-portatil:~# cat /var/lib/wicd/configurations/9c5c8e8ba580 
ap_scan=1
ctrl_interface=/var/run/wpa_supplicant
network={
       ssid="***"
       scan_ssid=1
       proto=WPA RSN
       key_mgmt=WPA-PSK
       pairwise=CCMP TKIP
       group=CCMP TKIP
       psk=***
}

La configuración del Supplicant podemos verla en Preferences -> Advanced Settings donde además se especifica el driver utilizado que por defecto es wext:

Por tanto si estamos utilizando WICD tenemos que forzar el deshabilitado (mask) del servicio wpa_supplicant.service que se ejecuta en nuestro sistema para que no entren en conflicto ambos procesos entre sí:

systemctl mask wpa_supplicant.service

Una vez hecho esto no deberíamos volver a tener conflictos entre ambos servicios. Asegurarnos también si no lo hemos hecho ya de deshabilitar los servicios de Network Manager que no vamos a utilizar y que a su vez tienen dependencias con el servicio de marras:

sudo systemctl mask NetworkManager.service
sudo systemctl mask NetworkManager-wait-online.service
sudo systemctl mask NetworkManager-dispatcher.service