Configuración y uso de WiFi con wpa_supplicant y wpa_cli
En artículos anteriores hemos compilado de forma cruzada los ejecutables necesarios de wpa_supplicant y wpa_cli. En esta guía explicaremos cómo utilizar y configurar el módulo WiFi en nuestro dispositivo embebido.
Transferencia de archivos al dispositivo
Primero necesitamos copiar los archivos generados a nuestro dispositivo. Utilizaremos el protocolo TFTP para realizar esta transferencia y asignaremos permisos de ejecución a todos los binarios.
tftp -gl wpa_supplicant 192.168.1.100
Ahora copiamos el archivo de configuración al directorio correspondiente:
cp wpa_supplicant.conf /etc/
Iniciar wpa_supplicant
Para ejecutar el demonio de wpa_supplicant utilizamos los siguientes parámetros:
- -D: Especifica el controlador (driver) a utilizar (nl80211, wext, etc.)
- -i: Nombre de la interfaz de red
- -c: Ruta al archivo de configuración
- -B: Ejecutar en segundo plano como demonio
- -d: Activar modo de depuración
wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B -d
Si aparece un error indicando que faltan librerías, deberemos copiar las librerías libnl necesarias al directorio /lib/ de nuestro dispositivo:
cp libnl-* /lib/
Una vez copiadas las librerías, ejecutamos nuevamente el comando para iniciar el servicio en segundo plano.
Configuración de wpa_supplicant.conf
Editamos el archivo /etc/wpa_supplicant.conf y añadimos la siguiente configuración:
ctrl_interface=/var/run/wpa_supplicant
update_config=1
ap_scan=1
network={
ssid="MiRedWiFi"
psk="MiContraseña123"
priority=10
}
Parámetros importantes de la configuración:
- ctrl_interface: Define el directorio de comunicación entre procesos (obligatorio)
- update_config: Permite guardar cambios en la configuración
- ap_scan: Controla el modo de escaneo de puntos de acceso (1 para nl80211)
- ssid: Nombre de la red inalámbrica
- psk: Contraseña de la red
- priority: Prioridad de conexión (valores más altos se intentan primero)
Nota: Es importante comentar o eliminar todos los ejemplos de configuración que vienen por defecto en el archivo, dejando únicamente nuestra configuración personalizada.
Preparación del directorio de ejecución
Antes de iniciar el servicio, necesitamos crear el directorio necesario para la comunicación:
mkdir -p /var/run/wpa_supplicant
Este directorio es esencial ya que wpa_cli intentará conectarse al socket generado por wpa_supplicant en este ubicación.
Verificación de la conexión
Tras iniciar correctamente el servicio, podemos verificar que se ha creado el directorio y el archivo de socket:
ls -la /var/run/
Deberíamos ver una carpeta correspondiente a wpa_supplicant y un archivo de socket para wlan0.
En este punto, el dispositivo ya debería estar conectado al punto de acceso WiFi. Podemos verificar la conexión revisando las estadísticas del router o punto de acceso.
Obtención de dirección IP
Por defecto, es posible que solo tengamos dirección IPv6. Para obtener una dirección IPv4 utilizamos el cliente DHCP:
udhcpc -i wlan0
Tras ejecutar este comando, verificamos la configuración de red:
ifconfig -a
Deberíamos ver ahora la dirección IPv4 asignada a la interfaz wlan0.
Configuración de la ruta por defecto
Si tenemos una conexión ethernet activa, puede ser necesario eliminar la ruta por defecto anterior y configurar la nueva interfaz WiFi como predeterminada:
route -n
Para eliminar la gateway anterior:
route del default gw 192.168.1.254
Con esto concluimos la configuración básica del módulo WiFi para comunicación inalámbrica.