Raspberry Pi used its news blog on 6 November to point at an unusual port. iroh, the Rust networking stack from the team at n0, now runs on the RP2350 microcontroller. Raspberry Pi's post shows it working over Wi-Fi on Pimoroni's Presto. That sounds like a normal "library X now supports chip Y" story, but it isn't one. iroh does not support no_std, so the port doesn't strip iroh down to fit a bare-metal environment. It builds a full Rust standard library environment underneath iroh instead, out of FreeRTOS, Newlib, lwIP and some borrowed ESP-IDF glue. The iroh engineer who wrote it, in a journal post dated 14 September 2026, calls it "a pure proof of concept hack."

Below we cover what iroh is, how the port works, and what it does and does not give RP2350 developers today.

What is iroh?

Raspberry Pi's post describes iroh as a modular networking stack written in Rust. It is a lightweight native library that you embed in your own application, not a separate daemon or service. According to the same post, iroh can link devices over IP networks such as cellular and Wi-Fi, and over non-IP transports such as Bluetooth Low Energy and LoRa. That transport range explains the interest from microcontroller users: one library could, in principle, connect devices whether they share a Wi-Fi network or only a radio link.

The RP2350 demo uses only Wi-Fi. Neither source claims BLE or LoRa operation on the RP2350, and readers shouldn't assume it.

How the port works

The iroh journal post explains the approach plainly. iroh needs std, so the work went into making std available on the RP2350. The starting point was the older pico-std-rust crate, which the post describes as a very limited std environment for the RP2040. The author updated it for the RP2350 and added Wi-Fi support. The chip has two RISC-V cores and two ARM cores, and you can choose which to support; the author chose the ARM cores for simplicity.

The key step is a new target triple: thumbv8m_main-none-espidf-eabi. It sets os = "espidf", which tricks rustc into building its existing unix std implementation, Newlib plus ESP-IDF's pthread glue, running on FreeRTOS underneath. The RP2350 therefore gets threads, a libc and the rest of the scaffolding that std expects. In practice, Rust's standard library is told it is running on ESP-IDF while it actually runs on FreeRTOS on an RP2350.

Networking uses two existing C components. The iroh post says the Wi-Fi driver and the lwIP TCP/IP stack run as FreeRTOS tasks, and that the driver is the C CYW43 driver from the Pico SDK. Because lwIP exposes the standard C socket API that Rust's std expects, std::net works once the stack is up. The post also describes one shortcut that shows how rough this is: with no file system, every file descriptor other than stdin, stdout and stderr is assumed to be a Wi-Fi socket. The author calls it a "horrible hack." It works for a demo. It also means nothing else in the system can use file descriptors without breaking that assumption.

The stack, according to the repo

The n0-computer/iroh-pico-examples repository describes an experimental Rust standard-library environment for the Pimoroni Presto. Its components are:

  • Toolchain: nightly Rust, with a custom Cortex-M33 target
  • Board support: Raspberry Pi Pico SDK 2.1.1, used for RP2350 startup, USB and the RM2 radio
  • RTOS: FreeRTOS
  • C library: Newlib, with a small amount of ESP-IDF pthread/newlib glue
  • Network stack: lwIP

The repo also explains how the cores are used. In the tested configuration, FreeRTOS runs on ARM core 0, and core 1 is not started by the scheduler. The display examples use core 1 explicitly for scanout instead.

The repository has two iroh examples, iroh-echo-bare and iroh-echo-full, plus a pico-std platform crate. It credits tana/pico-std-rust as its origin. When we checked it had 43 commits, and it is dual-licensed under MIT and Apache-2.0.

Which hardware was tested

The iroh post lists two boards the author had available:

  • Pimoroni Presto, with Wi-Fi and a touchscreen display.
  • A bare Pico 2 without Wi-Fi. The author says a hello example runs on it without issues, but with no radio there is no networked iroh demo on that board.

On the radio, Raspberry Pi's post notes that its Radio Module 2 packages the same Infineon CYW43439 used on the Pico W and Pico 2 W, and credits Pimoroni with using the RP2350 and that module in the Presto. That matters for anyone thinking of moving the code to a Pico 2 W. The iroh author says no Pico 2 W was available for testing, though he has "little doubt" it could be made to work quickly. Treat it as unproven.

What It Means for Makers

Who it is for. This is for Rust developers who want to try iroh's device-to-device networking on cheap microcontroller hardware, and who are comfortable with nightly toolchains, custom target triples and a mixed C/Rust build. It is not an end-user library you can add to an existing no_std embedded-Rust project. The iroh post says directly that iroh does not support no_std.

What it enables. The port shows an RP2350 board with a CYW43439 radio can run the same iroh library over Wi-Fi. A less obvious result is the method itself: a std Rust environment built from FreeRTOS, Newlib and lwIP behind an espidf-flavoured target. It could be useful for other std-only Rust crates on the RP2350, but that is our reading. The sources do not claim it.

What it does not replace. Nobody presents this as production-ready. The iroh author calls it a proof-of-concept hack and the repo's own disclaimer, as quoted in the post, calls it a hack that "works reliably for me, but YMMV." The repository labels its environment experimental. The socket shortcut and the single-core FreeRTOS setup are compromises a production build would need to remove. The iroh post says the team offers production-level support for the RP2350 through its contact route. We read that as a commercial engagement, not a scheduled release.

Price and availability. The code is public now in the n0-computer/iroh-pico-examples repository, licensed under MIT or Apache-2.0. Its status is experimental, and the sources promise no stable release or support for the repo. Neither source gives a price for the Pimoroni Presto or the Pico 2, so we haven't quoted one. Check the retailer for current pricing. The only hardware with a working networked demo, according to the iroh post, is the Presto.

Caveats to keep in mind: nightly Rust only; ARM cores only; core 1 is not started by the scheduler; every non-stdio file descriptor is treated as a Wi-Fi socket; networked operation shown only over Wi-Fi on the Presto, with a bare Pico 2 tested only without a radio; no no_std support.

Sources