FOTA por 4G — cómo llega el firmware a cada versión de la EinarBoard
22-oct-2026 · Helgen / Drogheda · sin hardware nuevo en V5.6, V5.7 ni v6 · propuesta D-22-6 · detalle: hardware/fota-4g-factibilidad
Servidor de Helgen (HelgenSRV)
Llave de firma
Ed25519, fuera del repo
y del servidor (la guarda Leo)
Imagen firmada
manifiesto: versión · tarjeta · ranura
tamaño · SHA-256 · firma
Campañas en htracker
banco → 1 por sitio → 10 % → todas
lee $PHLG · manda CONFIRMAR
Caster de Helgen + inyector
relevo de la base RTK + marcos RTCM 4xxx
con pedazos · ≤ 1 KB/s · solo a las unidades objetivo
Servidor HTTPS de imágenes
TLS · descarga por rangos
(solo la v6)
NTRIP: la corrección
solo llega al F9P
UDP: NMEA
+ $PHLG
NTRIP: corrección + marcos 4xxx
(pedazos de la imagen, CONFIRMAR)
UDP: NMEA + $PHLG
(versión · ranura · tengo/total · estado)
HTTPS:
imagen
UDP: NMEA + $PHLG
confirmación por HTTPS
V3 · V4 · V5.5
33 unidades
✗ Por 4G no: no hay RX del módem al MCU
4G NTRIP Master
XBee · Telit + app ArduSimple
DOUT
ZED-F9P · RX2
usa la corrección
V5.5: PC7 NC
Blackpill: sin PC7
Modo B
(subida sí)
F0-d
STM32F411
Blackpill (V3/V4) · RET6 soldado (V5.5)
Cómo sí
① USB (DFU en J11) en cada visita — lo de hoy
② Reemplazarlas por V5.6 / V5.7 si siguen en
servicio después del primer trimestre
③ Experimento F0-d: el F9P reporta el tipo de
cada marco (UBX-RXM-RTCM → PA3), ≈ 75 B/s;
igual requiere 1 visita para el bootloader
④ Cable DOUT → PC7 en la V5.5: no (vibración)
V5.6 · V5.7
108 + 322 (piloto 5 + 5)
✓ Sin hardware nuevo · falta firmware y el caster con inyector
4G NTRIP Master
zócalo XBee · MODEM_EN PC3 · RST PC1
DOUT_4G · 115200
ZED-F9P · RX2
descarta los 4xxx
R111 1 k
PC7 · USART6_RX (DMA)
STM32F411RET6
arma los marcos 4xxx · verifica · escribe la ranura B
PA9
K1 (PB5)
NO = MCU, Modo B ($PHLG)
NC = F9P directo si el MCU cae
DIN_4G
Ya está en la tarjeta
Toma RTCM en PC7 (R111) · Modo B por K1 · control del módem ·
respaldo LTC4040 para escribir la flash
Falta
Bootloader A/B + receptor en el firmware (FOTA 1–2) ·
caster con inyector y campañas (FOTA 3) · matriz de banco (FOTA 4)
Por validar en banco (F0)
a: el marco 4xxx sale por DOUT · b: RTK fijo con carrusel · c: $$$AS+R? por Modo B
De regalo: parámetros del módem ($$$AS+X, con regreso automático) y config. del F9P a distancia.
v6
130 + reemplazos (piloto 20)
✓ Sin hardware nuevo · va dentro de FW-3
A7670SA (soldado)
HTTP(S) · sistema de archivos · CFOTA
AT: PC6 → R148 0 Ω → U23 → RXD
TXD → U24 → R106 → PC7
STM32F411RET6
HTTPACTION / HTTPREAD → ranura B · RTCM al F9P por USART2
Ya está en la tarjeta
UART completo con el módem (K1 DNP) ·
PWRKEY PC8 · PWR_EN PC10 · RST PC11 · LTC4040
Falta
FOTA dentro de FW-3 (socket NTRIP no transparente
para dejar libre el canal AT) · servidor HTTPS
Sin K1: si el MCU cae, nada reporta →
el bootloader regresa solo, sin esperar al servidor
Común a V5.6, V5.7 y v6 — bootloader A/B y mapa de flash del STM32F411 (512 KB)
boot
Ranura A · 192 KB · sectores 4–5
corre hoy (0.6.2 = 96 KB, en verde)
Ranura B · 256 KB · sectores 6–7
aquí se escribe la imagen nueva
sect. 0–1 · 32 KB · bootloader (nunca por aire)
sect. 2 · 16 KB · metadatos (ranura activa, prueba)
sect. 3 · 16 KB · EEPROM (hoy en el último sector)
Dos builds por versión (build.flash_offset): el servidor manda
el de la ranura que no corre. Cambiar de imagen = escribir un
registro de metadatos; regresar es inmediato. Borrar 128 KB detiene
el núcleo ≈ 1–2 s: K1 suelto (la NMEA sigue), borrado al inicio,
nunca con batería baja.
1 · Descarga
a la ranura libre, por pedazos
2 · Verifica
SHA-256 + Ed25519 + tarjeta
3 · Arranca en prueba
contador en BKP12R–13R
¿CONFIRMAR del servidor en 30 min?
(la unidad sana: NMEA 1 Hz + $PHLG con la versión nueva)
sí → confirmada
no, o 3 reinicios → regresa a la anterior
Siempre: DFU por USB en J11 (memoria de sistema del STM32, no se borra) → en el peor caso una visita, nunca una unidad inservible.
Nunca por aire: firmware del F9P · app del 4G NTRIP Master (643 KB) · el propio bootloader.
Compuerta (D-22-6): la imagen de fábrica de las 108 / 322 y de las 130 v6 lleva bootloader + receptor, y no se graba sin FOTA 4 aprobada en banco.
bajada (imagen)
subida (estado)
comandos AT / flujo
no existe
experimento