32blogby StudioMitsu

SWUpdate vs Mender vs RAUC: Comparativa OTA para Yocto

Compara las tres principales herramientas OTA compatibles con Yocto — SWUpdate, Mender y RAUC — por arquitectura, licencia e integración con Scarthgap.

7 min read
Yoctoembedded-linuxOTASWUpdateMenderRAUCScarthgap

This article contains affiliate links.

Contenido

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ísticaSWUpdateMenderRAUC
LicenciaGPL-2.0Apache-2.0 (cliente)LGPL-2.1
Última versión2025.125.0.4v1.15.1
LenguajeCGo / C++C (GLib)
Formato de actualización.swu (archivo cpio).mender (Artifact).raucb (bundle)
ServidorhawkBit (OSS)Mender Server (OSS/SaaS)Ninguno (constrúyelo tú)
Actualizaciones deltaOSS (rdiff)Solo EnterpriseOSS (casync)
FirmadoOpcionalOpcionalObligatorio
Soporte Scarthgapmeta-swupdatemeta-mendermeta-rauc
HuellaPequeñaGrandeLa 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-description usa 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

bash
# 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:

bash
# conf/local.conf
IMAGE_INSTALL:append = " swupdate-www"
SRC_URI:append:pn-swupdate = " file://defconfig"

Mender + meta-mender

bash
# 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

bash
# 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.

bash
# 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ónRecomendación
Integrar en producto propietarioRAUC (LGPL-2.1) o Mender (Apache-2.0)
Debe evitar GPLRAUC > Mender > SWUpdate
La licencia no es una preocupaciónLas 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ónRecomendación
Sin ancho de banda para configurar servidorMender (Hosted Mender)
Usa hawkBit existenteSWUpdate
Puede construir servidor propioRAUC / SWUpdate
No se necesita servidor (entrega USB/local)Las tres funcionan

Filtrar por características del equipo y producto

RestricciónRecomendación
Necesita OTA funcionando rápidamenteMender (SaaS + docs)
La seguridad es la máxima prioridadRAUC (firma obligatoria)
Componentes diversos (FPGA/MCU) a actualizarSWUpdate (handlers Lua)
Minimizar huellaRAUC
Necesita actualizaciones delta OSSSWUpdate (rdiff) / RAUC (casync)
Quiere interfaz web para gestión de dispositivosMender

Conclusión

Cada herramienta en una frase:

HerramientaEn una palabraMejor para
SWUpdateTodoterreno flexibleRequisitos personalizados, usuarios de hawkBit
MenderSaaS integradoDespliegue rápido, evitar operaciones de servidor
RAUCLigera, firma primeroPrioridad 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.