Hybrid architecture: Cyphal/UDP for management + raw UDP on MCU

Hi all,

We’re designing comms for a few embedded sensor modules (Cortex-M, FreeRTOS, lwIP) that stream sensor data at ~5 Mbps per node to a Linux host. The modules also need device management (config, status, firmware update). We have separate CAN FD nodes doing similar things (with smaller payloads) in the same system.

We’re considering using Cyphal in a hybrid approach:

  • Raw UDP for high-bandwidth sensor streaming (simple binary frames, low overhead)
  • Cyphal/UDP for device management (heartbeat, registers, firmware update via file transfer)
  • Cyphal/CAN on the CAN FD nodes, sharing the same DSDL definitions

However, we don’t have experience with Cyphal and have a few integration/real use questions:

  1. Is libudpard on a Cortex-M + FreeRTOS + lwIP target a common pattern? How mature is it compared to libcanard?
  2. Will we have issues running Cyphal/UDP alongside raw UDP sockets on the same lwIP instance?
  3. What’s the realistic RAM/flash footprint for Cyphal/UDP with a small set of services (node info, registers, file transfer)?
  4. How reliable is the file transfer service over UDP in practice? Any gotchas with dual-bank firmware update flows?
  5. Is the “Cyphal for management, raw UDP for bulk data” split a pattern anyone has used, or does it create unexpected pain?
  6. How seamless is sharing DSDL definitions across CAN and UDP transports in practice?

Any experience or pointers to reference implementations appreciated. Thanks!