Los productos Linux embebidos necesitan actualizaciones OTA (Over-The-Air). Las tres opciones OSS dominantes para Yocto son SWUpdate (flexible, scripting Lua), Mender (SaaS integrado) y RAUC (seguridad primero, la huella más ligera). Elige según las licencias, los requisitos de servidor y las fortalezas de tu equipo.
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. Esta guía compara las tres herramientas por arquitectura, licencias e integración con Yocto para ayudarte a tomar la decisión 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 Cyber Resilience Act de la UE (Reglamento 2024/2847) requiere capacidades de actualización de seguridad desde diciembre de 2027. Las obligaciones de notificación de vulnerabilidades entran en vigor antes — septiembre de 2026. 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.1.0 | 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". Mantenido por Stefano Babic, sigue una cadencia de lanzamiento YYYY.MM (mayo y diciembre).
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 incorporada con el servidor Eclipse hawkBit (daemon Suricatta)
- 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 de Eclipse IoT)
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. Desarrollado por Pengutronix, es usado por la Steam Deck de Valve, el hub Dirigera de IKEA, Home Assistant OS y el Linux a bordo de Deutsche Bahn (Linux4ICE).
Cómo funciona: Instala bundles .raucb (formato squashfs) vía API 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 mediante block-hash-index
- LGPL-2.1 facilita la integración en productos propietarios
Debilidades:
- Sin servidor de gestión oficial — lo construyes tú (existen soluciones de terceros)
- 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 |
FAQ
¿Qué herramienta OTA es más fácil para empezar?
Mender. Con Hosted Mender (SaaS) y INHERIT += "mender-full" en tu configuración Yocto, puedes tener un pipeline OTA funcionando sin configurar ninguna infraestructura de servidor. La contrapartida es menos flexibilidad y mayor costo a largo plazo.
¿Puedo cambiar de herramienta OTA después?
Técnicamente sí, pero es doloroso. Cada herramienta tiene un esquema de particiones, formato de actualización e integración de bootloader diferentes. Cambiar significa reparticionar y reflashear todos los dispositivos desplegados. Elige bien desde el principio.
¿Estas herramientas soportan Raspberry Pi?
Las tres soportan Raspberry Pi. Mender tiene tutoriales dedicados para Raspberry Pi en su documentación. RAUC y SWUpdate funcionan con la capa estándar meta-raspberrypi. Para Raspberry Pi 5 específicamente, consulta nuestra guía de Scarthgap.
¿Cuál es la diferencia entre actualizaciones A/B y delta?
Las actualizaciones A/B escriben una imagen completa en una partición inactiva y cambian el destino de arranque en caso de éxito. Las actualizaciones delta solo transfieren los bloques modificados, reduciendo el ancho de banda. SWUpdate (rdiff) y RAUC (Adaptive Updates) ofrecen delta en OSS; Mender requiere licencia Enterprise.
¿La firma obligatoria de RAUC es un problema?
Añade tiempo de configuración inicial — necesitas generar una CA y una clave de firma — pero evita el despliegue accidental de bundles sin firmar o manipulados. Para productos que se envían a clientes, la firma obligatoria es una ventaja, no una carga. La documentación de RAUC guía paso a paso la configuración PKI.
¿Cómo afecta el CRA de la UE a los requisitos OTA?
El Reglamento (UE) 2024/2847 exige que los productos con elementos digitales proporcionen actualizaciones de seguridad durante todo su ciclo de vida. El cumplimiento total se requiere para diciembre de 2027, con las obligaciones de notificación de vulnerabilidades empezando en septiembre de 2026. Un mecanismo OTA es efectivamente obligatorio para cualquier producto embebido conectado que se venda en la UE.
¿Puedo usar estas herramientas sin Yocto?
Sí. Las tres soportan instalación independiente en Debian/Ubuntu y otras distribuciones Linux. Pero sus funciones más profundas de integración y gestión de particiones están diseñadas para builds de Yocto/OpenEmbedded.
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. Si todavía estás diseñando tu estructura de capas, planifica OTA desde el principio — retrofit siempre es más difícil.
Artículos relacionados:
- SBOM y gestión de CVE en Yocto: Guía práctica para Scarthgap
- Cómo crear una capa personalizada en Yocto
- Cómo escribir archivos bbappend
- Migración de Kirkstone a Scarthgap: Lista de verificación completa
- Raspberry Pi 5 con Yocto Scarthgap: Guía práctica
- Inicio automático con systemd en Yocto: Guía con 7 errores comunes