Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Support Status

What you get, at which version, tested how hard — the analogue of Rust’s platform-support page. Version strings on this page are parsed from nros-sdk-index.toml and rust-toolchain.toml (the pinning SSoTs), so they cannot drift from what nros setup actually installs.

CI tiers — what “supported” means

TierLaneRunsGuarantee
1ci (every change)Host-native builds + native fixtures, all gatesThe logic and the seams are sound. Says nothing about embedded targets.
2ci-matrix (when core/codegen/cmake move)1-wise cover: every platform, language, RMW, and kind appears at least once (~28 % of the coordinate space)Each axis value builds and runs somewhere — but pairings are NOT covered.
2-nightlyci-matrix-nightlyPairwise cover (~70 %)Platform×language and RMW×language interactions surface here, within a day.
3ci-full (pre-release)The whole matrixEverything the tree claims, verified together.

Per-board tier membership is generated on its own page: Board Support Tiers. The hand-maintained procurement view (including boards with no in-tree crate) is Supported Boards.

RTOS / platform source pins

nros setup <board> fetches exactly these (shared store ${NROS_HOME:-~/.nros}/sdk):

ComponentPinned versionUsed by
FreeRTOS kernel10.6.2FreeRTOS boards (QEMU MPS2-AN385, overlays)
lwIP2.2.0FreeRTOS networking
ThreadX6.4.1ThreadX (Linux sim + QEMU RISC-V64)
NetX Duo6.4.xThreadX networking
NuttX kernel12.13.0NuttX (QEMU armv7a / rv32)
Zephyr SDK0.16.8 (+ 1.0.1 for the 4.4 rolling line)Zephyr module builds
mbedTLS3.xzenoh TLS transport

These pins are decisions, not lags — they move only with a reason, tested together (see Integrating into a Vendored Tree).

RMW backends — versions and interop pairing

BackendClient side (pinned)Host sidePairing rule
Zenohzenoh-pico 1.7.2 (vendored submodule)Router = the one ROS ships: ros2 run rmw_zenoh_cpp rmw_zenohd — nano-ros deliberately vendors no router (RFC-0075)zenoh-pico’s wire protocol is stable across zenoh 1.x, so the pinned client interops with a newer ROS-shipped router (issue 0291)
XRCE-DDSMicro-XRCE-DDS client 2.4.3-nros1 + Micro-CDR 2.0.xAgent 2.4.3-nros1 (installed by nros setup … --rmw xrce)Client and agent are pinned to the same upstream release
Cyclone DDSfork 0.10.5-nros1 — upstream 0.10.5 + carried patches (fork delta)Talks RTPS directly to rmw_cyclonedds_cppPinned to the Cyclone ROS ships (ros-humble-cyclonedds 0.10.5) — upstream 11.x is deliberately NOT a rebase target until a distro migration (issue 0507)

Per-feature coverage across the three backends: Per-RMW Feature Matrix.

ROS 2 editions

EditionFeature / flagStatusNotes
Humbleros-humble (default)SupportedTypeHashNotSupported key expressions, XCDR1. No rmw_zenoh_cpp apt package — zenoh interop on Humble needs a source overlay, or use Cyclone DDS.
Ironros-ironSupportedRIHS01 type hashes. Same zenoh-apt caveat as Humble.
Jazzyros-jazzySupportedRIHS01; ships ros-jazzy-rmw-zenoh-cpp — the zenoh-interop reference edition. XCDR2/appendable is tracked separately (phase-303).

Pick the edition of the ROS system you interop with — mismatched editions discover nothing (different key expressions).

Toolchains

ToolPinned version
Ruststable channel (rust-toolchain.toml); pinned cross targets: thumbv7em-none-eabihf, armv7r-none-eabihf, aarch64-unknown-none. rustfmt runs on nightly (nightly-only options).
Arm GCC (arm-none-eabi)13.2-nros1
RISC-V GCC (riscv-none-elf)14.2-nros1
QEMU (patched, Arm)11.0.0-nros2
QEMU (Espressif fork, ESP32-C3)esp-develop-nros1
espflash4.5.0-nros1
Corrosion (CMake↔Cargo)0.6.1-nros1 (≥ 0.6.0 required — older versions share one build dir across workspace roots and break the mixed link)
OpenOCD0.12.0-nros1
sccache0.8.2-nros1

-nros<N> suffixes mark builds re-packaged (or patched) for the SDK store; the base version is the upstream release.