Skip to content

[BUG] Protocol Version Mismatch: zenoh-pico (Protocol v9) rejected by ROS 2 Rolling rmw_zenoh_cpp (v1.0.0) #19

@ShahazadAbdulla

Description

@ShahazadAbdulla

Description:
Currently, the zenoh-pico submodule integrated into Pico-ROS uses an outdated protocol version. When attempting to interface an ESP32 running Pico-ROS with a host machine running ROS 2 Rolling (which uses rmw_zenoh_cpp v1.0.0), the host router rejects the topic declarations and drops the connection, causing the ESP32 to crash.

Steps to Reproduce:

Flash the ESP32 with the standard Pico-ROS publisher/subscriber example.

Start the host router on ROS 2 Rolling: ros2 run rmw_zenoh_cpp rmw_zenohd

Observe the host rejecting the connection with an unknown scope error.

The ESP32 lease timer expires (15 seconds), triggering a FreeRTOS spinlock panic.

Root Cause (From Trace Logs):
Running the host router in RUST_LOG=trace reveals the handshake failure:
Received:

2026-04-10T13:27:02.256321Z TRACE acc-0 ThreadId(04) zenoh_transport::unicast::establishment::accept: Establishment Accept InitSyn: udp/[::ffff:192.168.240.53]:7447 => udp/[::ffff:192.168.240.135]:58522. Received: TransportMessage { body: InitSyn(InitSyn { version: 9, whatami: Client, zid: b7f02a488965714228bb54147feeefb7, resolution: Resolution(10), batch_size: 2048, ext_qos: None, ext_qos_link: None, ext_shm: None, ext_auth: None, ext_mlink: None, ext_lowlatency: None, ext_compression: None, ext_patch: PatchType(1) }) }

The host rmw_zenoh_cpp expects the newer Zenoh protocol, fails to parse the ROS 2 CDR scope dictionaries, and terminates the UDP session.

Expected Behavior:
Pico-ROS should update its zenoh-pico submodule to align with the current Zenoh 1.0.0 release used by ROS 2 Jazzy/Rolling, or explicitly document that it only supports older RMW versions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions