Un módulo Bluetooth en campo solo es tan bueno como el firmware que puedes empujarle. OTA (over-the-air) DFU es cómo corriges bugs, cierras CVEs y agregas funciones sin un camión. Este artículo cubre la arquitectura de actualización de un módulo Bluetooth: dual-bank, imágenes firmadas, diffs delta y rollback.

Topologías de actualización

Un módulo Bluetooth recibe firmware de dos formas:

  • Directa: el smartphone conecta y transmite la imagen por GATT (típico en consumo).
  • Indirecta: un gateway bufferea la imagen y la reenvía a muchos módulos (flotas industriales).

Dual-bank vs single-bank

El diseño más seguro de módulo Bluetooth guarda dos bancos:

Esquema Riesgo al fallar Costo almacenamiento
Single-bank brick si se corta energía al escribir 1x
Dual-bank (A/B) arranca banco viejo al fallar 2x
Staging en SPI externa arranca interno al fallar 1x + ext

Dual-bank vale la flash para algo crítico de seguridad o ingresos.

Imágenes firmadas

Nunca flashees código sin firma. El módulo Bluetooth verifica una firma antes de cambiar bancos:

if Verify(pubkey, image_hash, sig) == OK:

swap_bank()

else:

reject_and_stay()

Usa ECDSA P-256 con clave raíz grabada en fábrica. Una imagen mala simplemente no arranca.

Actualizaciones delta / parciales

Las imágenes completas son 200-500 KB; enviar eso a 10.000 módulos duele. Un diff delta envía solo los bloques cambiados:

patch = bsdiff(old_image, new_image) # a menudo 5-20% del tamaño total

El módulo Bluetooth aplica el parche en el área de staging, verifica el hash resultado y luego cambia. Esto recorta ancho de banda y tiempo de update dramáticamente.

La máquina de estados de update

Un DFU disciplinado de módulo Bluetooth corre como máquina de estados:

IDLE -> DOWNLOAD -> VERIFY -> SWAP -> REBOOT -> (OK | ROLLBACK)

Ante cualquier fallo de checksum retrocede al banco bueno y reporta. Nunca borres el banco activo hasta verificar el nuevo.

Energía y tiempos

Un DFU a 1-2 KB/s por BLE tarda minutos para imagen completa; un delta son segundos a un minuto. Avisa al usuario, mantén alimentado (o exige >50% batería) y throttlea para evitar sobrecalentar.

Notas de seguridad

  • Autentica el origen: solo imagen firmada de tu servidor, por canal cifrado.
  • Rate-limit a updates para bloquear un DoS que desgasta la flash.
  • Versiona el protocolo para que módulos viejos aún actualicen.

Un módulo Bluetooth con DFU dual-bank firmado y soporte delta convierte una emergencia de firmware en un trabajo silencioso en segundo plano.