I’ve been experimenting with the new Raspberry Pi Pico 2 W (RP2350) and wanted to see how difficult it would be to build a fully compliant Matter smart device from scratch using Rust.
I put together a complete "Blinky" example using the rs-matter stack and the embassy async framework. It uses BLE for the initial commissioning phase and Wi-Fi for network connectivity. Once flashed, you can provision it directly into Apple Home, Google Home, or Home Assistant using your smartphone—no cloud accounts required. It exposes a standard Matter On/Off cluster that toggles a physical LED wired to the GPIO pins.
A few interesting technical notes from the build:
Bare Metal: It runs entirely no_std on bare metal using embassy-rp.
Radio Coexistence: Getting the CYW43439 wireless chip to handle concurrent BLE (for commissioning) and Wi-Fi (for Matter IP traffic) on the RP2350 took some tweaking. We actually had to dial back the PIO SPI clock divider specifically because the RP2350's faster 150MHz core clock was causing bus corruption when the radio was saturated!
Async Rust: The repo includes the full async CoEx (coexistence) runner setup to safely multiplex the radio between the Bluetooth and Wi-Fi stacks concurrently.
If you’ve been wanting to build local-only smart home devices but felt intimidated by the massive official C++ Matter SDK, doing it in Rust is actually becoming incredibly approachable.
Would love to hear if anyone else is building custom smart home gear in Rust.
Rust on embedded is becoming more approachable with Embassy and the Pico SDK. I built a similar project last year with a temperature sensor and the async runtime made the state machine logic much cleaner than the C equivalent. Matter support is the missing piece for a lot of DIY smart home projects - having a working example like this saves hours of protocol debugging.
I love the Pico product line and think they are severely underutilized. Many Pi 3/4/5 projects can be performed with one of these little guys. Don’t chain yourself to a whole Linux distro unless you really need it.
Few years ago I made a custom RGB LED rope light controller using ESP32 C3 DevKit and Rust embedded, connecting light to homeassistant via MQTT auto discovery. Was surprisingly easy to get started as someone who had limited experience with embedded programming, and only hobby Rust experience.
But the supported hardware in Rust crates was limited at the time and C3 dev kits weren’t widely available, so I never used it for anything. HAL support has only gotten better since then.
I may try to resurrect that project now with Pico 2 and Matter.
I was happy to make it work at all :-) There is a guy on the internet who measures the power consumption of many mcus and concludes the nrf52840 is the best: https://www.youtube.com/watch?v=KE7bOYCYETM
I'm desperate for people to make tech that's searchable. I'd like to figure out some of the thread/matter bits for my own projects and this is terribly annoying to do
12 comments
[ 2.9 ms ] story [ 34.4 ms ] threadI’ve been experimenting with the new Raspberry Pi Pico 2 W (RP2350) and wanted to see how difficult it would be to build a fully compliant Matter smart device from scratch using Rust.
I put together a complete "Blinky" example using the rs-matter stack and the embassy async framework. It uses BLE for the initial commissioning phase and Wi-Fi for network connectivity. Once flashed, you can provision it directly into Apple Home, Google Home, or Home Assistant using your smartphone—no cloud accounts required. It exposes a standard Matter On/Off cluster that toggles a physical LED wired to the GPIO pins.
A few interesting technical notes from the build:
Bare Metal: It runs entirely no_std on bare metal using embassy-rp. Radio Coexistence: Getting the CYW43439 wireless chip to handle concurrent BLE (for commissioning) and Wi-Fi (for Matter IP traffic) on the RP2350 took some tweaking. We actually had to dial back the PIO SPI clock divider specifically because the RP2350's faster 150MHz core clock was causing bus corruption when the radio was saturated! Async Rust: The repo includes the full async CoEx (coexistence) runner setup to safely multiplex the radio between the Bluetooth and Wi-Fi stacks concurrently. If you’ve been wanting to build local-only smart home devices but felt intimidated by the massive official C++ Matter SDK, doing it in Rust is actually becoming incredibly approachable.
Would love to hear if anyone else is building custom smart home gear in Rust.
75.4% Linker Script
18.2% Rust
6.4% Shell
About sums up embedded development in Rust.
Few years ago I made a custom RGB LED rope light controller using ESP32 C3 DevKit and Rust embedded, connecting light to homeassistant via MQTT auto discovery. Was surprisingly easy to get started as someone who had limited experience with embedded programming, and only hobby Rust experience.
But the supported hardware in Rust crates was limited at the time and C3 dev kits weren’t widely available, so I never used it for anything. HAL support has only gotten better since then.
I may try to resurrect that project now with Pico 2 and Matter.
But ultra low is not necessarily the same as battery powered, which itself doesn't necessarily mean coin-cell battery powered.
My experience with wifi modules I've built so far has been, they've all been "low" but not usually battery powerable.
I wish the README provides more info whether it's suitable for battery-powered operation, and if so how which.