Documentación
Meshbell es un instrumento de emergencia a escala de vecindario. La verificación es el sustrato, no una función. Esta página dice cómo, y dónde están los bordes.
Panorama general
Un aviso de peligro en Meshbell es un registro pequeño y firmado. Se nombra con el hash de sus propios bytes, se firma con una clave de dispositivo y nunca se altera. Una corrección es un registro nuevo que apunta al anterior, y eso es lo que permite que un aviso y su corrección viajen juntos y que cualquier dispositivo vuelva a comprobar lo que recibe.
Tu teléfono tiene dos enlaces, y ninguno necesita internet
Ese es todo el modelo de conexión, y la pestaña Conexión de la app es donde ves los dos. La tercera fila de abajo no es un enlace del teléfono en absoluto: es lo que hacen las radios entre sí, un salto más allá.
| Medio | Qué alcanza | Cómo empieza |
|---|---|---|
| Bluetoothdesde tu teléfono | Una radio de bolsillo: un nodo LoRa complementario en tu mochila. Es la única forma de que un teléfono salga al aire, porque ningún iPhone lleva dentro una radio LoRa. | Tocas Conexión. Un escaneo consume batería y toma la radio en exclusiva, así que lo inicia una persona, nunca la app. |
| Wi-Fidesde tu teléfono | Un puente del vecindario: una caja siempre encendida en la red local, que guarda el registro y lo sirve a teléfonos y navegadores. | De forma automática al abrir. La app busca un puente en el Wi-Fi en el que estés, y hay un campo de dirección manual para las redes que bloquean el descubrimiento. |
| LoRade radio a radio | El tramo largo. Dos personas preparadas con radios de bolsillo se alcanzan de una cuadra a otra sin nada en medio; cada radio adicional lo repite más allá. | Nada en el teléfono lo inicia. Tu teléfono nunca habla LoRa, así que este tramo empieza en el momento en que dos radios están sintonizadas en el mismo canal, haya o no un teléfono conectado a alguna de ellas. |
Toda la cadena, de principio a fin: tu teléfono por Bluetooth a la radio de bolsillo de tu mochila, esa radio por LoRa de una cuadra a otra hasta otra radio, esa radio hasta un puente, y el puente por Wi-Fi a cada teléfono y cada navegador de la red del vecindario.
Los dos enlaces alimentan un solo registro y un solo llavero. Un registro que llega por el aire y otro que llega por Wi-Fi aterrizan en el mismo diario y reciben la misma comprobación. Apagar la radio no detiene la recepción por el puente, porque son rutas separadas hacia el mismo lugar.
Todo lo que está por encima de la red está hecho para que perder una conexión, un servidor o un modelo te cueste una anotación, nunca la alerta.
¿Cuál de estos eres?
Hay tres formas de estar preparado, y el resto de esta página está escrito para las tres. Encuentra la tuya y lee primero sus estaciones.
- Solo un teléfono
- Gratis, y suficiente para recibir. Escuchas lo que te pueda entregar un puente a tu alcance o una conexión a internet, y no hay nada al aire hasta que alguien cerca de ti tenga una radio. Lee el panorama general y funcionar sin conexión, y luego las formas de prepararse de la página principal.
- Un par de radios
- Unos
30 $cada una, una en tu mochila y otra en la de un vecino. Ese es el tramo largo: los dos se alcanzan por todo el vecindario sin cobertura, sin internet y sin nada en medio, y cada radio que añada cualquier otra persona lo repite más lejos. Lee radios y hardware y bandas de radio por región. - Un anfitrión de puente
- Una sola caja siempre encendida,
~50-80 $, que convierte el Wi-Fi del propio vecindario en un centro de comunicaciones al que se puede sumar cualquier navegador, sin app y sin cuenta. Lee configurar un puente, lo que un puente puso al aire y más de un puente.
El modelo de confianza
Meshbell mantiene separadas dos preguntas, porque son hechos distintos y mezclarlos es como se propaga la mala información.
| Pregunta | Qué la responde | Qué puede decir |
|---|---|---|
| ¿Qué registro es este y está intacto? | La dirección de contenido y la comprobación de firma, ambas ejecutadas en tu dispositivo | vinculado · vista previa · alterado |
| ¿Quién lo firmó y puedo comprobarlo? | El llavero de tu dispositivo | verificado · no se pudo comprobar · falsificado |
El segundo eje tiene deliberadamente tres valores. Una falsificación, comprobada contra una clave que tienes y que falló, no es el mismo hecho que una clave desconocida, con la que todavía no se pudo comprobar quién firmó. Fundirlas en una sola palabra, «no válido», ocultaría justo la distinción que una persona necesita. Un mensaje se almacena como confiable solo cuando el llavero dice verificado.
Verificado en el aire, sin copia previa
Una trama corta de radio es una vista previa: un puntero a un registro, que se muestra pero nunca se toma como confiable y nunca se usa para inventar un contenido. Un registro también puede enviarse completo como un sobre autoautenticable, dividido en varias tramas y reensamblado en el otro extremo. Un dispositivo que nunca ha visto antes el registro puede entonces reconstruirlo, volver a derivar su dirección de contenido y comprobar su firma, alcanzando un veredicto verificado en un vecindario de pura radio, sin internet en ningún punto del circuito.
Las tramas llegan sin autenticar por LoRa, y los fragmentos de un registro dividido no van firmados en tránsito. Solo se verifica el registro reensamblado. Un grupo incompleto lo dice y se queda en vista previa.
El cortafuegos de instrucciones
Lo único que una app de emergencia nunca debe hacer es convertir un rumor en una orden. Meshbell lo impone en la estructura del código, no por disciplina de revisión.
- La pantalla que muestra una instrucción, es decir qué hacer, no se puede construir a partir de un mensaje no verificado. El sistema de tipos lo rechaza.
- El texto de orientación viene de un manual empaquetado y versionado, indexado por id. Nunca viene de texto libre llegado por radio ni de un modelo de lenguaje. Un modelo puede resumir una situación, en prosa, etiquetada como inferida. No tiene ningún campo donde poner una orden.
- Una alerta oficial retransmitida se muestra como un vecino que da fe, no como oficial. Su veredicto lo dice con palabras: alerta oficial retransmitida, no tratada como oficial aquí.
La promesa, en una línea. La app nunca convierte un rumor en una instrucción, y esa frase es una propiedad del código más que una declaración de intenciones.
La capa de coordinación
Las alertas verificadas responden qué está pasando y si puedes confiar en ello. Un vecindario en una emergencia también tiene una logística ordinaria: quién está localizado, dónde está el refugio, quién tiene un generador. Meshbell lleva una segunda capa, deliberadamente separada, para ese trabajo, de forma nativa en la pestaña Vecindario de la app y en un navegador para quien no tenga la app.
Esta capa es no verificada por diseño. No se direcciona por contenido, no está firmada y no forma parte del canal de alertas. Es estado compartido mutable que los vecinos escriben y editan, así que trátala como una nota pegada en una puerta. El cortafuegos de instrucciones sigue vigente: nada de aquí puede mostrarse como una instrucción oficial, y el modelo de confianza de arriba rige únicamente las alertas.
Qué contiene
| Superficie | Qué es | Forma de privacidad |
|---|---|---|
| Pase de lista de seguridad | Confirmar que estás a salvo con un toque. Todos ven un recuento agregado frente a un total aproximado de hogares. | Sin nombres, direcciones ni ubicaciones, y sin lista nominal. El recuento se retiene hasta que se hayan registrado unos cuantos, para que no se pueda inferir un solo hogar. |
| Listas de recursos | Listas compartidas y editables: refugio y calor, agua y suministros, energía y carga, y un «quién puede ayudar» de autoinscripción. Los ítems pueden llevar una etiqueta de lugar. | Cualquiera en el puente puede añadir o editar. Solo de autoinscripción. A nadie lo añade otra persona. |
| Tablón | Publicaciones cortas etiquetadas a un canal (info, oferta, petición, pregunta) y acotadas por antigüedad, publicadas con un nombre que escribes. | El nombre que escribas. Sin cuenta, sin identidad verificada. |
| Instantánea imprimible | Una vista de una página /coord/print del pase de lista, las listas y lo último del tablón, para cuando se agoten las baterías. | El mismo pase de lista solo agregado, así que se puede pegar sin riesgo en un tablón físico. |
Por qué se mantiene aparte
Mezclar notas mutables de vecinos en un registro de alertas firmado y de solo anexado rompería ambas cosas. Por eso el almacén de coordinación es algo propio: solo en la red local, mutable, y servido por el puente junto al feed verificado en lugar de dentro de él. Un operador tiene un token de administración para el mantenimiento, por ejemplo borrar datos de prueba o podar un tablón desbordado, y las rutas de administración fallan cerrándose sin él. Publicar y registrarse no necesitan ninguna credencial. Las dos capas comparten una pantalla, nunca una frontera de confianza.
Funcionar sin conexión
La degradación es el estado esperado, no un error. Cuando una ruta de datos está caída, Meshbell sirve los últimos datos válidos conocidos etiquetados con su antigüedad, «hace 40 minutos», en lugar de un vacío de apariencia confiada. El nivel sin modelo, un teléfono viejo sin nada sofisticado dentro, es un nivel de producto de primera clase. Una app de emergencia que solo funciona en el hardware más nuevo le falla a las personas que más probablemente la necesiten.
La recepción continúa mientras Meshbell está en segundo plano, y iOS puede volver a lanzarlo para devolverle una conexión de radio después de que se haya cerrado. Consulta escuchar en segundo plano para saber qué cubre eso y qué no. Nunca ha escuchado con el teléfono apagado, y no va a decir que lo hace.
Radios y hardware
Meshbell funciona en tu teléfono por sí solo. Las radios amplían su alcance cuando la red está caída. Una red en malla de vecindario se construye con hardware LoRa económico y comercial que ejecuta el firmware abierto MeshCore.
| Pieza | Costo | Función |
|---|---|---|
| Una radio LoRa complementaria, por ejemplo un nodo Heltec | ~30 $ | Tu teléfono se empareja con ella por Bluetooth para enviar y escuchar boletines. Una complementaria sirve a un teléfono a la vez. Si otro teléfono u otra app la tiene tomada, al tuyo se le dice con claridad en lugar de quedarse girando. |
| Más radios por el vecindario | ~30 $ cada una | Cada una es un salto, y cada una repite un registro una vez y luego se detiene para que el aire quede libre. Tres o más inician un alcance multisalto real de una cuadra a otra y sobre las lomas. |
| Un puente siempre encendido, por lo general una Raspberry Pi | ~50-80 $ | Guarda un registro duradero y lo sirve por Wi-Fi local en el port 4190. Usará un enlace de salida a internet cuando exista, y no necesita ninguno. |
Ajustes de radio para EE. UU. El banco de referencia de Meshbell funciona a 910.525 MHz, bw 62.5 kHz, sf7, cr 4/5, dentro de la banda libre de licencia 902-928 MHz, con un sobre de enlace complementario de 172 B. Lee siempre la configuración de tu radio antes de transmitir. El valor por defecto de la región puede ser una banda para la que no tienes licencia.
Bandas de radio por región
Tu teléfono no lleva dentro ninguna radio LoRa, así que nunca toca la banda. Ese ajuste es del firmware de la radio. Meshbell vuelve a leer la sintonía de la radio al conectarse, la muestra, y dice con claridad cuando la radio no está en el canal que usa tu región.
910.525 MHz es la estación de América del Norte. Cada región de abajo tiene su propio canal, colocado dentro de la banda libre de licencia que esa región permite. Cuando la comunidad de MeshCore publica un canal recomendado para un país, Meshbell adopta ese canal y sus ajustes tal cual, así que los repetidores MeshCore que ya están allí pueden llevar los boletines de Meshbell. Cuando la comunidad no publica ninguno, Meshbell elige un canal que queda fuera de la parte más cargada de la banda.
| Región | Banda | Canal de Meshbell | Ciclo de trabajo o escuchar antes de transmitir |
|---|---|---|---|
| Estados Unidos y Canadá | 902-928 MHz | 910.525 MHz | Sin límite de ciclo de trabajo, así que un puente puede emitir tan seguido como haga falta. Hasta 36 dBm, incluida la antena. Es la recomendación propia de MeshCore para Estados Unidos y Canadá, así que los repetidores MeshCore que ya están aquí pueden llevar los boletines de Meshbell. |
| Europa y Reino Unido | 869.4-869.65 MHz | 869.618 MHz · sf8 · cr 4/8 | Ciclo de trabajo del 10%, unos seis minutos de transmisión por hora. Hasta 29 dBm. El Reino Unido aplica los mismos límites, así que no hay un ajuste aparte para él. Es la recomendación propia de MeshCore para Europa y el Reino Unido, así que los repetidores MeshCore que ya están aquí pueden llevar los boletines de Meshbell. |
| República Checa | 869.4-869.65 MHz | 869.432 MHz | El mismo ciclo de trabajo del 10% y el mismo techo de 29 dBm que Europa, en un canal propio. Es la recomendación propia de MeshCore para la República Checa, así que los repetidores MeshCore que ya están allí pueden llevar los boletines de Meshbell. |
| Países Bajos | 869.4-869.65 MHz | 869.618 MHz | El mismo ciclo de trabajo del 10% y el mismo techo de 29 dBm que Europa. Es la recomendación propia de MeshCore para los Países Bajos, así que los repetidores MeshCore que ya están allí pueden llevar los boletines de Meshbell. Este canal comparte la frecuencia europea pero se queda en los valores por defecto sf7 y cr 4/5, así que los dos no se escuchan entre sí ni estando en la misma frecuencia. |
| Portugal | 869.4-869.65 MHz | 869.618 MHz · cr 4/6 | El mismo ciclo de trabajo del 10% y el mismo techo de 29 dBm que Europa. Es la recomendación propia de MeshCore para Portugal, así que los repetidores MeshCore que ya están allí pueden llevar los boletines de Meshbell. Este canal comparte la frecuencia europea pero funciona con sf7 y cr 4/6, así que los dos no se escuchan entre sí ni estando en la misma frecuencia. |
| Australia | 915-928 MHz | 916.575 MHz · cr 4/8 | Sin límite de ciclo de trabajo. Hasta 30 dBm. Aquí la banda empieza en 915 MHz, así que el canal de América del Norte no es legal. Es la recomendación propia de MeshCore para Australia, así que los repetidores MeshCore que ya están allí pueden llevar los boletines de Meshbell. |
| Nueva Zelanda | 915-928 MHz | 917.375 MHz | Sin límite de ciclo de trabajo. Hasta 30 dBm. Aquí también la banda empieza en 915 MHz, así que el canal de América del Norte no es legal. Es la recomendación propia de MeshCore para Nueva Zelanda, así que los repetidores MeshCore que ya están allí pueden llevar los boletines de Meshbell. |
| Brasil | 915-928 MHz | 923.125 MHz · sf8 · cr 4/8 | Sin límite de ciclo de trabajo. Hasta 30 dBm. Es la recomendación propia de MeshCore para Brasil, así que los repetidores MeshCore que ya están allí pueden llevar los boletines de Meshbell. |
| Sudeste Asiático | 920-923 MHz | 921.875 MHz | Ciclo de trabajo del 10% en el país más estricto del grupo. Hasta 17 dBm. Es un solo ajuste agrupado para Tailandia, Singapur, Malasia e Indonesia, así que revisa tu propio país antes de dejar un puente encendido. La comunidad no publica ningún canal para estos países, así que este es propio de Meshbell, elegido fuera de la parte más cargada de la ventana. |
| Vietnam | 920-923 MHz | 920.25 MHz · sf8 | Ciclo de trabajo del 10%. Hasta 17 dBm, y aquí las reglas se mueven, así que revisa las vigentes antes de dejar un puente encendido. Es la recomendación propia de MeshCore para Vietnam, así que los repetidores MeshCore que ya están allí pueden llevar los boletines de Meshbell. |
| India | 865-868 MHz | 866.5 MHz | Ciclo de trabajo del 1%, unos 36 segundos de transmisión por hora. Hasta 16 dBm. La radio no puede ceñirse sola a un límite tan estrecho, así que le toca al puente racionarse. La comunidad no publica ningún canal para India, así que este es propio de Meshbell, elegido fuera de la parte más cargada de la banda. |
| Corea del Sur | 920.9-923.3 MHz | 921.4 MHz | Sin límite de ciclo de trabajo, pero la radio tiene que escuchar antes de transmitir. Hasta 23 dBm. |
| Japón | 920.6-928 MHz | 924.6 MHz · bw 125 kHz | Ciclo de trabajo del 10% y una escucha antes de cada transmisión. Hasta 16 dBm. Es el ancho de banda mayor lo que mantiene cada transmisión lo bastante corta para las reglas japonesas. |
| Rusia | 864-865 MHz | 864.5 MHz | Ciclo de trabajo del 0.1%, unos 3.6 segundos de transmisión por hora, salvo que la radio escuche antes de transmitir. Hasta 16 dBm. |
Salvo que la fila diga otra cosa, un canal funciona con sf7, cr 4/5 y bw 62.5 kHz. Una fila que sigue un canal de MeshCore adopta los valores de ese canal, y por eso varias muestran otro factor de dispersión u otra tasa de codificación, y Japón funciona con bw 125 kHz para caber en las reglas japonesas. Dos radios solo se escuchan entre sí cuando la frecuencia, el ancho de banda, el factor de dispersión y la tasa de codificación coinciden todos.
Las radios vienen en dos familias, una cortada para 902-928 MHz y otra para 863-870 MHz, y entre las dos cubren todas las regiones de esta lista, pero la banda de 470 MHz de China necesita otro chip de radio y otra antena, así que no es un ajuste al que se pueda cambiar.
Tres regiones no están listas. Japón, Corea del Sur y Rusia esperan una radio que escuche antes de transmitir, y el firmware de MeshCore todavía no lo hace, así que esas tres se quedan apagadas hasta que lo haga. Una región también trae un techo de potencia, y la potencia es un ajuste aparte en la radio, así que cambiar de canal no es bajar la potencia. Lee siempre la configuración de tu radio antes de transmitir.
Configurar un puente
Un puente es un nodo siempre encendido en el vecindario, por lo general una Raspberry Pi, que lleva el feed verificado y la capa de coordinación por Wi-Fi local para que el teléfono o el navegador de cada vecino los alcance sin cobertura y sin internet. Es el segundo de los dos enlaces del teléfono: el Bluetooth alcanza una radio de bolsillo, el Wi-Fi alcanza un puente, y cualquiera de los dos funciona sin nada de internet.
El Wi-Fi propio del puente, para que un vecino no necesite nada
Con un segundo adaptador Wi-Fi, el puente levanta su propia red abierta, llamada meshbell- y después su calle. Es un callejón sin salida a propósito: llega al puente y a nada más, ni a la casa, ni a internet, ni a los demás teléfonos que estén en ella. Un vecino no necesita ninguna aplicación y da cuatro pasos. Conéctese al Wi-Fi cuyo nombre empieza por meshbell-. Una página se abre sola, como la red de un hotel abre su página de acceso; toque Continuar. Si el teléfono pregunta por internet, toque Usar sin internet, porque esta red no tiene, a propósito. Si cierra esa página, abra un navegador y escriba meshbell.lan. Configure la red una vez con sudo ./install-ap.sh --interface wlan1 --ssid meshbell-oak-st.
Si eres el anfitrión, un vecino preparado
El instalador viene dentro de la app y se exporta directamente desde tu teléfono, así que no se descarga nada. Descomprímelo en la Pi, ejecuta el script de instalación, y él imprime la dirección para repartir. El nodo arranca autocontenido: sirve las pantallas de coordinación, una app web instalable para los vecinos que solo tienen navegador, un código QR de esa dirección y una vista de administración para el mantenimiento. Se anuncia en la red local como _meshbell._tcp, y la app se encarga de encontrarlo. No hay nada que configurar a mano ni cuenta que crear.
Si eres un vecino que nunca ha oído hablar de una red en malla
Conéctate al Wi-Fi del vecindario y abre la pestaña Vecindario. La app busca el puente sola y se conecta. Cuando el descubrimiento necesita ayuda, hace las preguntas sencillas, si esta es la red correcta y si el puente está despierto, y ofrece un campo de dirección manual. Si una computadora alcanza el puente pero este teléfono no, casi siempre están en redes Wi-Fi distintas.
El puente entrega, nunca decide. Un puente puede pasar una alerta verificada, pero no puede hacerla verdadera. Las firmas se comprueban en tu propio dispositivo, y en un navegador normal se comprueban en ese navegador. Un puente comprometido o malicioso puede descartar o retrasar mensajes. Nunca puede falsificar uno confiable. Por eso el modelo de confianza vive en el teléfono y no en el nodo.
Escuchar en segundo plano
El teléfono mantiene el enlace de radio mientras Meshbell está en segundo plano, y iOS puede volver a lanzar Meshbell para devolverle una conexión después de que la app se haya cerrado. Tres cosas lo consiguen juntas: el sistema conserva la conexión Bluetooth, la app pide que se la restauren con ella, y recuerda que querías la radio conectada, así que puede repetir la negociación inicial que el firmware exige en cada conexión nueva.
El límite honesto de todo esto. iOS todavía puede detener la app, y una radio complementaria sirve a un teléfono a la vez, así que una radio que otro teléfono tiene tomada no está disponible para el tuyo. La escucha en segundo plano tampoco sobrevive a un teléfono apagado. Lo que sí significa es que un boletín que llega mientras el teléfono está en el bolsillo se entrega en lugar de perderse.
Lo que un puente puso al aire
Dos hechos que es fácil confundir con uno solo: la radio aceptó un mensaje, y el mensaje salió de verdad. El primero es lo que aprende un teléfono cuando entrega tramas a una radio complementaria. El segundo se mide con los propios contadores de transmisión del firmware de la radio, y solo un puente los lee.
Un puente guarda un comprobante de todo lo que transmite: qué salió, quién lo firmó, qué enlace lo llevó, en cuántas piezas se cortó, el canal, y si los contadores confirmaron que salió por la antena. La app muestra esos comprobantes en la pantalla Lo que salió cuando hay un puente conectado.
No hay comprobante del lado del teléfono, y Meshbell no se inventa uno. Cuando envías, confirmas o disputas un informe desde la app, te dice que la radio tomó tu mensaje y dice con claridad que no puede confirmar que haya salido al aire. Un paquete que se difunde por inundación no tiene destinatario, así que nada confirma su recepción. Afirmar la entrega sería la respuesta halagadora, no la verdadera.
Texto simple de otras radios
Las radios MeshCore llevan mensajes de texto corrientes entre personas que no usan Meshbell. Un puente puede oír ese tráfico, y lo mantiene estrictamente aparte del feed verificado. Se marca como sin firmar, que es a propósito una palabra distinta de no se pudo verificar: un boletín no verificado es un registro firmado cuya clave este dispositivo no posee, mientras que el texto simple no lleva ninguna firma.
Los mensajes de canal no llevan clave del remitente, así que un nombre escrito dentro del cuerpo no es una identidad y Meshbell nunca lo trata como tal. Este tráfico nunca se guarda, nunca aparece en el feed verificado, nunca cuenta para corroborar nada, y nunca puede convertirse en una alerta. El puente informa cuánto de él ha oído, y nada más.
Radios que firman por sí mismas
Una radio MeshCore posee su propia clave de firma y el firmware firma con ella. Un operador de puente puede registrar una radio, después de que la radio pruebe que posee la clave, y desde entonces esa radio puede originar un boletín firmado sin ningún teléfono de por medio: un botón de pánico junto a la puerta, o una baliza que informa de una condición.
Un dispositivo firma como dispositivo. Vale como señal y nunca como aprobación, porque una caja no es una persona y tener una radio no es lo mismo que tener la clave de alguien. En cualquier lugar donde la app muestre quién firmó un registro, uno firmado por un dispositivo lo dice.
Una radio robada es una clave robada. La clave de un teléfono la protege el teléfono. La clave de una radio la protege la radio, que es un objeto pequeño que vive a la intemperie y puede no tener ningún PIN. Registra una radio solo si estás dispuesto a responder por todo lo que firme, y revócala en el momento en que desaparezca. Revocar impide que un puente acepte nada nuevo de ella; no retira lo que ya se pasó.
Más de un puente
Tu teléfono entre varios puentes
Un vecindario puede acabar con más de un puente. La app reúne todos los puentes que logra descubrir, prefiere el que responde mejor, y pasa a otro cuando el actual se queda en silencio. Una dirección que escribiste tú siempre gana sobre una que se descubrió sola.
Puentes enlazados entre sí
Dos puentes que se alcanzan en una red comparten lo que han oído, así que el vecindario de al lado se suma sin que nadie vuelva a introducir nada. Un puente enlazado no es de confianza por diseño: todo lo que entrega pasa por la misma comprobación de firma que cualquier otra cosa antes de guardarlo, así que un puente enlazado malicioso puede llenar el disco de otro puente y nunca puede poner un boletín falso delante de un vecino.
Los vecinos enlazan puentes por las vías corrientes: un segundo adaptador Wi-Fi en la Pi, una red de invitados en la casa de al lado, o un par de unidades Wi-Fi direccionales entre dos tejados.
Enlazar puentes agrega cobertura, no resiliencia. El Wi-Fi funciona con la corriente eléctrica, y la corriente es lo primero que se lleva una emergencia. Los puentes enlazados ayudan en un día cualquiera, y en el día muy común en que no hay internet pero sí hay luz. No son una manera de llegar más lejos en un apagón. Llegar más lejos sin electricidad y sin red es para lo que está la radio.
Alcanzar radios Meshtastic
Meshtastic es la otra red en malla LoRa de uso extendido, y los dos firmwares no se escuchan entre sí por el aire ni estando en la misma frecuencia, porque los formatos de paquete son distintos. Aun así, un puente puede llevar boletines de Meshbell a una radio Meshtastic, mediante un enlace escrito a partir del formato de mensaje publicado y sin nada del código del proyecto Meshtastic, y por eso nada de él está en la app.
Funciona solo en el puente y está apagado hasta que un operador lo active. Quienes usan la app Meshtastic de fábrica no ven nada: Meshbell viaja en un número de canal privado que su app no muestra. Es una manera de alcanzar a un vecino que ya lleva una radio Meshtastic, no una manera de hablar con la red Meshtastic en general.
Arquitectura
La lógica de dominio es pura y portátil. Se compila y se prueba en una Raspberry Pi sin hardware de Apple en el circuito, de modo que las partes que deciden si un mensaje es confiable se verifican de forma continua y no solo en el lanzamiento. La app de iOS es un renderizador delgado sobre ella.
- Canonical JSON, claves ordenadas y ASCII fijado, le da a cada dispositivo una preimagen idéntica byte a byte, de modo que una dirección de contenido calculada en un teléfono coincide con una calculada en un nodo.
- Firma y verificación Ed25519, una sola implementación en Apple y en Linux.
- Un registro de solo anexado y solo inserción. Los registros nunca se actualizan ni se eliminan, así que el historial, incluidas las correcciones, se conserva y se puede volver a comprobar.
- Una compuerta de conformidad entre lenguajes: las mismas tramas se decodifican con la app y con un nodo independiente en Python y se comprueban byte a byte, de modo que ambos no pueden divergir en silencio.
Límites honestos
Dicho con claridad, porque una herramienta de emergencia que se sobrevende es peligrosa.
- Meshbell es una beta temprana. Ha llevado un boletín firmado a través de radios LoRa reales y lo ha verificado en un teléfono. No sustituye a los servicios de emergencia oficiales, así que mantén activadas las alertas que ya tienes.
- El resultado del banco es un salto único. La retransmisión multisalto está diseñada e implementada, todavía no medida en el terreno, y ninguna cifra de distancia de este sitio está medida en banco.
- Los registros demasiado grandes para una sola trama se dividen, y el reensamblado de varios fragmentos todavía no se ha observado completarse en el teléfono en el banco. Un grupo incompleto se queda en vista previa y lo dice.
- Las claves de firma viven en el llavero de iOS, solo en este dispositivo. Son extraíbles por cualquier cosa que ya pueda leer el llavero de la app. Aquí no hay protección de enclave de hardware y no vamos a afirmar que la haya.
- Los registros van firmados, no cifrados. Meshbell no es mensajería privada. Da por hecho que cualquier cosa que salga al aire puede leerla quien esté a su alcance.
- La distribución de claves, es decir cómo tu dispositivo aprende qué clave pública pertenece a quién, es trabajo en curso. Una firma prueba la posesión de una clave. Vincular una clave a una persona real es un problema aparte y deliberado, resuelto hoy en persona.
- La recepción en segundo plano es real, pero no es una garantía. iOS puede detener la app, y una radio complementaria sirve a un teléfono a la vez, así que una radio que otro teléfono tiene tomada no está disponible para el tuyo.
- La capa de coordinación es no verificada por diseño y está separada del canal verificado de alertas firmadas. Es útil para la logística, nunca una fuente de instrucción oficial, y es solo de red local, así que alcanza a quien esté en el puente y no a la red en malla más amplia.
- Meshbell y las radios Meshtastic todavía no se escuchan entre sí por el aire, porque los formatos de paquete son distintos. Un puente puede llevar boletines a una radio Meshtastic mediante un enlace aparte, y ese enlace está apagado salvo que un operador lo active.