Si un Raspberry Pi ya no logra conectarse al Wi-Fi porque cambió el nombre de la red o la contraseña, la configuración se puede actualizar directamente desde su tarjeta SD. La ventaja es evidente cuando no se puede conectar el equipo a un monitor y un teclado.

El caso que motiva la guía es común: un cambio de proveedor de internet que trae router nuevo, con otro nombre de red y otra contraseña. La placa afectada estaba montada dentro de un proyecto cerrado, así que desarmarlo para enchufarle pantalla habría sido un fastidio. La alternativa fue sacar la tarjeta y editar los datos ahí mismo.

El procedimiento completo se resume en tres pasos:

  • Insertar en un computador con Linux la tarjeta SD que tiene Raspberry Pi OS
  • Ir a la partición montada rootfs y entrar a la ruta /etc/NetworkManager/system-connections/
  • Ahí, crear o editar un archivo .nmconnection con el nombre de la red y la contraseña

Una advertencia antes de empezar: las versiones antiguas de Raspberry Pi OS pueden usar wpa_supplicant.conf en lugar de NetworkManager, y en ese caso el método no aplica del todo. La prueba se hizo sobre un Raspberry Pi 5 corriendo Raspberry Pi OS basado en Debian Trixie.

Paso 1: conectar la tarjeta SD al computador

Apagar el Raspberry Pi, retirar la microSD e insertarla en el computador con Linux usando un lector de tarjetas.

Raspberry Pi OS suele tener dos particiones, bootfs y rootfs. La configuración de Wi-Fi está dentro de la partición rootfs.

Las particiones rootfs y bootfs montadas en el explorador de archivos
Las particiones rootfs y bootfs montadas en el explorador de archivos

Paso 2: encontrar los puntos de montaje

En un terminal se ejecuta:

Código
lsblk -f

La salida debería mostrar algo similar a esto:

Código
sda
├─sda1   vfat     FAT32 bootfs B2F0-82D2                             438.1M    13% /run/media/abhishek/bootfs
└─sda2   ext4     1.0   rootfs 15f4c6be-1102-4331-9904-f78e78afd1fd   21.9G    18% /run/media/abhishek/rootfs

Si solo aparece bootfs montada, rootfs se puede montar desde el explorador de archivos.

Salida del comando que lista las particiones de la tarjeta
Salida del comando que lista las particiones de la tarjeta

La ruta también se puede confirmar con:

Código
mount | grep rootfs

Paso 3: revisar la configuración de Wi-Fi existente

Las versiones recientes de Raspberry Pi OS guardan los perfiles de conexión de NetworkManager en /etc/NetworkManager/system-connections/. Como se está accediendo al sistema desde la tarjeta, el comando queda así:

Código
sudo ls -la /run/media/$USER/rootfs/etc/NetworkManager/system-connections/

Hay que reemplazar la ruta por la propia. La variable de entorno $USER se puede dejar tal cual, porque toma automáticamente el nombre de usuario. Si ya existe un archivo .nmconnection, se edita ese.

Archivo de conexión de NetworkManager dentro de la partición rootfs de la tarjeta
Archivo de conexión de NetworkManager dentro de la partición rootfs de la tarjeta

¿Y si la carpeta está vacía?

En ese caso hay que crear un perfil nuevo:

Código
touch /run/media/$USER/rootfs/etc/NetworkManager/system-connections/home-wifi.nmconnection

Después, con un editor de texto de terminal como Nano o Micro, se agregan los siguientes datos, cambiando el valor de ssid y de psk por el nombre del punto de acceso y su contraseña:

Código
[connection]
id=home-wifi
type=wifi
interface-name=wlan0
autoconnect=true

[wifi]
mode=infrastructure
ssid=NOMBRE-DE-TU-RED

[wifi-security]
key-mgmt=wpa-psk
psk=CONTRASENA-DE-TU-RED

[ipv4]
method=auto

[ipv6]
method=auto

Paso 4: ajustar los permisos del archivo

Este paso es el que más se olvida y el que hace fallar todo lo anterior. NetworkManager espera que los archivos de conexión sean legibles únicamente por el usuario root:

Código
sudo chmod 600 /run/media/$USER/rootfs/etc/NetworkManager/system-connections/home-wifi.nmconnection

Para verificar:

Código
sudo ls -l /run/media/$USER/rootfs/etc/NetworkManager/system-connections/

El archivo debería verse parecido a -rw------- 1 root root ... home-wifi.nmconnection.

Verificación de que el archivo de conexión tiene los permisos correctos
Verificación de que el archivo de conexión tiene los permisos correctos

Antes de seguir, conviene revisar dos veces que el nombre de la red y la contraseña estén bien escritos. Cualquier error de tipeo obliga a repetir el proceso completo.

Paso 5: volcar los cambios antes de sacar la tarjeta

Este paso es importante. Después de hacer todas las modificaciones hay que ejecutar:

Código
sync

El comando sync se asegura de que cualquier escritura pendiente en la memoria caché quede efectivamente grabada en la tarjeta SD. Luego se desmontan ambas particiones, ya sea desde el explorador de archivos o por comando:

Código
sudo umount /run/media/$USER/rootfs
sudo umount /run/media/$USER/bootfs

Recién ahí se puede retirar la tarjeta de forma segura.

Paso 6: ¿cómo verificar que quedó conectado?

Se vuelve a insertar la tarjeta en el Raspberry Pi y se enciende. Una vez que arranca, hay que averiguar su dirección IP en la red. La forma más simple es entrar al router y mirar los dispositivos conectados.

Otra opción es Angry IP Scanner, una herramienta gráfica para escanear la red, o la herramienta de línea de comandos nmap:

Código
sudo nmap -sn 192.168.0.0/24

Normalmente el escaneo muestra el nombre de equipo del Raspberry Pi. Un truco útil es correr el escaneo antes de encender la placa y de nuevo unos minutos después: los dispositivos que aparecen entre una y otra pasada son los nuevos.

Finalmente se comprueba la conectividad con ping a esa dirección, o directamente con una conexión por SSH si el servicio está habilitado:

Código
ssh usuario@IP_DEL_RASPBERRY_PI