Los productos Linux embebidos necesitan actualizaciones OTA (Over-The-Air). Parches de seguridad, mandatos de gestión de vulnerabilidades del CRA de la UE, correcciones de errores en campo — distribuir un producto que no puedes actualizar es un riesgo.
Tres herramientas OTA de código abierto tienen un historial probado en el ecosistema Yocto: SWUpdate, Mender y RAUC. Esta guía las compara por arquitectura, licencias e integración con Yocto para ayudarte a elegir la correcta.
Por qué las actualizaciones OTA ahora son obligatorias
Las actualizaciones OTA para dispositivos embebidos pasaron de "sería bueno tenerlo" a "obligatorio."
Seguridad: Los CVEs se publican a diario. Sin una forma de parchear dispositivos en campo, las vulnerabilidades permanecen abiertas. La gestión de SBOM/CVE detecta vulnerabilidades, pero la detección sin un mecanismo de entrega es inútil.
Regulación: El CRA de la UE requiere capacidades de actualización de seguridad desde 2027. La FDA revisa los planes de actualización de software para dispositivos médicos.
Costo: La retirada física y el reflasheo cuestan cientos de veces más que una actualización OTA.
Las tres herramientas soportan esquemas de particiones A/B (copia dual) con rollback automático en caso de fallo de actualización. Esa es la diferencia fundamental respecto al flasheo manual.
Comparación rápida
| Característica | SWUpdate | Mender | RAUC |
|---|---|---|---|
| Licencia | GPL-2.0 | Apache-2.0 (cliente) | LGPL-2.1 |
| Última versión | 2025.12 | 5.0.4 | v1.15.1 |
| Lenguaje | C | Go / C++ | C (GLib) |
| Formato de actualización | .swu (archivo cpio) | .mender (Artifact) | .raucb (bundle) |
| Servidor | hawkBit (OSS) | Mender Server (OSS/SaaS) | Ninguno (constrúyelo tú) |
| Actualizaciones delta | OSS (rdiff) | Solo Enterprise | OSS (casync) |
| Firmado | Opcional | Opcional | Obligatorio |
| Soporte Scarthgap | meta-swupdate | meta-mender | meta-rauc |
| Huella | Pequeña | Grande | La más pequeña |
Comparación de arquitectura
SWUpdate — Máxima flexibilidad
SWUpdate es la opción de "haz lo que quieras".
Cómo funciona: Transmite archivos .swu (formato cpio). El archivo sw-description al inicio define el procedimiento de actualización, y los handlers procesan cada componente.
Fortalezas:
- Scripting Lua para handlers personalizados (FPGA, firmware MCU, archivos individuales)
- Integración integrada con el servidor hawkBit (daemon Suricatta, Eclipse IoT)
- Soporta actualizaciones tanto basadas en imagen como a nivel de archivo
- Las actualizaciones delta son OSS (handler rdiff)
Debilidades:
- La alta flexibilidad implica una curva de aprendizaje inicial pronunciada
sw-descriptionusa un formato personalizado (libconfig)- El lado del servidor requiere configuración separada (hawkBit es un proyecto diferente)
Mender — SaaS integrado
Mender está diseñado como un par cliente-servidor.
Cómo funciona: Usa el formato .mender Artifact para escribir imágenes en particiones A/B. El diseño estándar es 4 particiones: boot / rootfs-A / rootfs-B / data.
Fortalezas:
- Hosted Mender (SaaS) te da un entorno OTA sin configurar servidor
- Interfaz web para gestión de dispositivos, despliegue de actualizaciones y visualización de logs
- Los Update Modules soportan actualizaciones de .deb/.rpm/Docker/archivo individual
- Documentación y tutoriales extensos
Debilidades:
- Las actualizaciones delta son solo Enterprise/Professional (no disponibles en OSS)
- Restricción de diseño de 4 particiones fijas
- La implementación en Go resulta en una huella más grande que las otras dos
- Los precios de SaaS empiezan en $34/mes (50 dispositivos, Basic). Enterprise requiere precio personalizado
RAUC — Seguridad primero, la más ligera
RAUC pone la firma criptográfica en el centro de su diseño. Es usado por la Steam Deck de Valve.
Cómo funciona: Instala bundles .raucb (formato squashfs) vía D-Bus. La verificación de firma del bundle es obligatoria — los bundles sin firmar son rechazados por diseño.
Fortalezas:
- La firma obligatoria asegura seguridad a nivel de diseño
- La huella más pequeña de las tres herramientas
- Integración profunda con D-Bus y systemd
- Adaptive Updates (desde v1.8) proporcionan actualizaciones delta OSS
- LGPL-2.1 facilita la integración en productos propietarios
Debilidades:
- Sin servidor de gestión oficial — lo construyes tú
- Sin interfaz web ni panel de gestión de dispositivos
- Las actualizaciones a nivel de archivo son menos directas que las basadas en imagen
- Comunidad más pequeña comparada con SWUpdate y Mender
Integración con Yocto en la práctica
Cómo se integra cada herramienta con Scarthgap.
SWUpdate + meta-swupdate
# bblayers.conf
BBLAYERS += "/path/to/meta-swupdate"
# conf/local.conf
IMAGE_INSTALL:append = " swupdate"
Tú defines el archivo sw-description y la estructura de la imagen de actualización. Flexible pero requiere inversión inicial.
Para integración con el servidor hawkBit:
# conf/local.conf
IMAGE_INSTALL:append = " swupdate-www"
SRC_URI:append:pn-swupdate = " file://defconfig"
Mender + meta-mender
# bblayers.conf
BBLAYERS += "/path/to/meta-mender/meta-mender-core"
# conf/local.conf
INHERIT += "mender-full"
MENDER_ARTIFACT_NAME = "release-1.0"
Añadir INHERIT += "mender-full" configura el diseño de particiones, integración del bootloader e instalación del cliente en un solo paso. Conectar a Hosted Mender requiere un token de tenant.
RAUC + meta-rauc
# bblayers.conf
BBLAYERS += "/path/to/meta-rauc"
# conf/local.conf
IMAGE_INSTALL:append = " rauc"
En Scarthgap, la configuración de plataforma (system.conf, keyring, etc.) se separó en una receta rauc-conf.bb. Usa un bbappend para sobrescribir la configuración del sistema para tu plataforma.
# Ejemplo de system.conf
[system]
compatible=my-product
bootloader=uboot
[slot.rootfs.0]
device=/dev/mmcblk0p2
type=ext4
[slot.rootfs.1]
device=/dev/mmcblk0p3
type=ext4
Qué herramienta deberías elegir
Un flujo de decisión basado en las restricciones del proyecto.
Filtrar por licencia
| Restricción | Recomendación |
|---|---|
| Integrar en producto propietario | RAUC (LGPL-2.1) o Mender (Apache-2.0) |
| Debe evitar GPL | RAUC > Mender > SWUpdate |
| La licencia no es una preocupación | Las tres son candidatas |
SWUpdate es GPL-2.0. Esto típicamente no es un problema a menos que enlaces directamente contra él, pero puede requerir revisión legal.
Filtrar por requisitos de servidor
| Restricción | Recomendación |
|---|---|
| Sin ancho de banda para configurar servidor | Mender (Hosted Mender) |
| Usa hawkBit existente | SWUpdate |
| Puede construir servidor propio | RAUC / SWUpdate |
| No se necesita servidor (entrega USB/local) | Las tres funcionan |
Filtrar por características del equipo y producto
| Restricción | Recomendación |
|---|---|
| Necesita OTA funcionando rápidamente | Mender (SaaS + docs) |
| La seguridad es la máxima prioridad | RAUC (firma obligatoria) |
| Componentes diversos (FPGA/MCU) a actualizar | SWUpdate (handlers Lua) |
| Minimizar huella | RAUC |
| Necesita actualizaciones delta OSS | SWUpdate (rdiff) / RAUC (casync) |
| Quiere interfaz web para gestión de dispositivos | Mender |
Conclusión
Cada herramienta en una frase:
| Herramienta | En una palabra | Mejor para |
|---|---|---|
| SWUpdate | Todoterreno flexible | Requisitos personalizados, usuarios de hawkBit |
| Mender | SaaS integrado | Despliegue rápido, evitar operaciones de servidor |
| RAUC | Ligera, firma primero | Prioridad en seguridad, huella mínima |
Las tres están maduras en Yocto Scarthgap. No hay una elección incorrecta — la diferencia se reduce a licencias, requisitos de servidor y fortalezas del equipo.
OTA combinada con gestión de SBOM/CVE es donde reside el verdadero valor. Detectar CVEs, compilar parches, entregar vía OTA — este flujo de trabajo se está convirtiendo en el estándar para productos embebidos.