Saltar al contenido
La bitácora de FreeMEM by Francisco Tapias Bravo

Apuntes, proyectos, conocimiento libre y hacktivismo

4 min de lecturaelectrónicaprogramación

Malla: he escrito un cliente de Meshtastic para Linux

Me he hecho con una plaquita de radio que cabe en la palma de la mano. Sin tarjeta SIM, sin WiFi y sin pagar a nadie, ya me escribo con gente de toda la Costa del Sol. Y como no había programa para usarla desde Linux, lo he escrito. Se llama Malla.

LoRa: poca velocidad, mucho alcance

LoRa es una forma de transmitir por radio pensada para mandar poco y llegar lejos. Va muy despacio, así que no sirve para ver vídeos. En cambio, un mensaje corto llega a varios kilómetros, y a decenas si hay visión directa entre las antenas. Además gasta tan poco que un nodo aguanta días con una batería pequeña, o para siempre con una placa solar.

En Europa usa la banda de 868 MHz, que es libre. No hace falta licencia ni pedir permiso a nadie.

Meshtastic: una red que se monta sola

Meshtastic es un proyecto de código abierto que convierte esas plaquitas en una red de mensajería. La gracia está en la malla: cada nodo que oye un mensaje lo repite. Así, tu mensaje salta de nodo en nodo hasta llegar a sitios a los que tu antena nunca llegaría.

No hay servidor central ni operadora. Si se cae Internet o no hay cobertura, la malla sigue funcionando. Por eso la usan senderistas, gente de emergencias, eventos en sitios perdidos y, cada vez más, vecinos que simplemente quieren tener su propia red.

Los mensajes van cifrados. Ojo, eso sí: el canal que trae por defecto usa una clave que conoce todo el mundo, así que es público. Para hablar en privado se crea un canal con clave propia. Los mensajes directos entre dos nodos sí se cifran con la clave de cada uno.

Mi nodo: un Heltec V3

La placa es una Heltec WiFi LoRa 32 V3: un ESP32-S3, como el de cualquier Arduino moderno, con un chip de radio LoRa, una pantallita OLED, Bluetooth y USB-C. Se le instala Meshtastic desde el navegador, en un par de minutos, se le enrosca la antena y listo.

La conecté al móvil por Bluetooth con la app oficial y, en cuanto se puso a escuchar, aparecieron más de veinte nodos. En la zona hay canales como Costadelsol o Fuengirola. Mandé un mensaje y me contestaron 🙂

El problema: en Linux no había nada

Meshtastic tiene app para Android y para iPhone, y un cliente web. Pero no hay una aplicación de escritorio para Linux. Y yo quería tener la malla en mi barra, como tengo Telegram, con sus avisos y sin abrir el navegador.

Así que este domingo me puse con ello, mano a mano con Claude Code. A mediodía salió la primera versión y por la tarde, la segunda, que ya se parece bastante a la app de Android.

Malla

Malla está escrita en Rust con GTK4 y libadwaita, así que se ve como una aplicación más de GNOME. Se conecta al nodo por Bluetooth, por USB o por la red, y desde ahí puedes hacer casi todo.

Malla: conversación en un canal, con respuestas y reacciones
Los mensajes, con respuestas, reacciones y el estado de entrega de cada uno.

Mensajes. Todos los canales del nodo y chats directos con cualquier otro. Puedes responder a un mensaje, reaccionar con un emoji y ver si ha llegado. Al cerrar la ventana, Malla se queda en la bandeja del sistema y te avisa de lo que entra.

Malla: lista de nodos con distancia, saltos y señal
Los nodos de la red, con su distancia, los saltos y la señal.

Nodos. Quién hay en la red, a qué distancia, en qué dirección y cuántos saltos hay hasta él. Con un traceroute ves por qué nodos pasa tu mensaje para llegarle, y con qué señal en cada salto.

Malla: ficha de un nodo con gráficas de batería y señal
La ficha de cada nodo guarda su historial: batería, señal, temperatura…
Malla: mapa de la costa con los nodos y un punto compartido
El mapa, con OpenStreetMap.

Mapa. Los nodos que comparten su posición, el rastro de los que se mueven y puntos que se mandan por la malla, como «quedamos aquí».

Malla: canales con su código QR para compartirlos
Los canales se comparten con un QR o un enlace.

Ajustes. Toda la configuración del nodo, en castellano: la radio, los canales, los módulos, la posición fija… Y un registro con cada paquete que oye tu nodo, para los curiosos.

Las capturas son del modo demo, con nodos y mensajes inventados. No quería publicar los de gente de verdad.

Cómo probarla

Es software libre, con licencia GPL-3.0, y está en GitHub. Hay paquetes para Ubuntu 24.04 o posterior, Debian 13 y Arch. En Arch, CachyOS o Manjaro basta con esto:

sudo pacman -U https://github.com/FreeMEM/malla/releases/download/v0.2.1/malla-0.2.1-1-x86_64.pkg.tar.zst

En Ubuntu, descarga el .deb de la última versión e instálalo con sudo apt install ./malla_0.2.1-1_amd64.deb .

Si aún no tienes nodo, ábrela con malla --demo y verás cómo es.

Un aviso: la he probado con mi Heltec por Bluetooth, pero no con todos los aparatos ni todas las opciones. Si algo falla, cuéntamelo en una incidencia.

Y ahora, ¿qué?

Esto no se queda en una plaquita. Con unas cuantas más se pueden montar cosas muy chulas: un repetidor solar en una azotea, sensores que mandan la temperatura desde donde no llega el WiFi o un aviso en el móvil cuando alguien abre la puerta del trastero. Os lo iré contando por aquí.

Y si estáis por la Costa del Sol y tenéis un nodo, saludad en el canal. Seguro que nos oímos 📡

Comentarios

Deja un comentario

Los comentarios se moderan antes de publicarse. Tu correo solo sirve para contestarte: más en la política de privacidad.