Original NPR Firmware and PacketRF

PacketRF would not exist without Guillaume F4HDK, and his original NPR firmware. He invented New Packet Radio, designed the original modem hardware around an STM32 and an SI4463, wrote the protocol specification, published a thoroughly maintained advanced user guide, and put the whole project under a permissive license. Existing NPR deployments around Europe run his firmware on his hardware. None of that is being replaced here. NPR networks worked before PacketRF and they work next to PacketRF now.

PacketRF started in a different place. The platform is RP2350, the codebase is C++ on FreeRTOS with lwIP, and the goal from day one was a platform for packet radio rather than a single-purpose modem. Once that direction was fixed, an RP2350-based reimplementation of NPR became natural — a clean codebase with proper module boundaries, room for typed configuration, authenticated remote management, host-runnable tests, and eventually a second protocol family alongside NPR.

The most important constraint, from the very first commit, was simple: stay compatible. The on-air behavior, the framing, the timing, the address allocation rules, the connect/disconnect handshake — all of that follows the original NPR specification, and a PacketRF node is meant to be indistinguishable from an F4HDK node on the channel. A mixed network of original modems and PacketRF nodes is a normal deployment.

What changed in the firmware

The differences between the two firmwares are inside the box rather than on the air. They mostly come from PacketRF being written for hardware that has considerably more headroom than the original NPR modem.

AspectOriginal NPR firmwarePacketRF
MCU familySTM32L432KCU (Cortex-M4F, single-core)RP2350B (dual Cortex-M33)
CPU clock80 MHz150 MHz
On-chip SRAM64 KB520 KB
Flashtypically 256 KB on-chiplarger external flash, 16 MB on RFBB-A
RF chipSI4463SI4463 (same family, same air behavior)
Host linkEthernetUSB CDC-NCM, W5500 Ethernet, optional PPP
Software shapetightly coupled, field-proven firmwaremodular C++ on FreeRTOS + lwIP
Configurationtext command set over telnet/USB-serialtyped CBOR configuration with persistent sections
Remote managementtelnet (no authentication)CoAP + COSE, signed writes, key bootstrap
Pseudo-bridge / ProxyARPbuilt-inexplicit, controlled, per-interface policy
Host testsnone / hardware-onlyhost-runnable unit and contract tests
Lock-inone board, one protocolboard-agnostic, protocol-agnostic platform

What changed around the firmware

The bigger difference is everything that is not the firmware proper. The original NPR project is a modem. PacketRF tries to be a usable platform: a host-side management tool (prf-mgmt), a documented control protocol, host-side hardware-in-the-loop testing for real radio links, scenario scripts for repeatable configuration, an extension proposal process for protocol-facing changes, and a documentation tree intended to be readable by operators rather than only by people who have already studied the code.

That part is, frankly, where most of the actual work has gone. The radio itself is a fairly small fraction of the time and effort put into this project; everything around it — the network stack, the management interface, the cryptography, the persistent configuration, the diagnostics, all the tests — is what makes a single modem into something that can be run as part of a real network and not as a one-off bench experiment.

Acknowledgement

Special thanks to Guillaume F4HDK for the original NPR design and specification, for releasing it as a real open source project, and for patiently maintaining a public Advanced user guide that is still the best single document on how NPR actually behaves. PacketRF treats his work as a reference, not as a target to replace. If you are interested in NPR at all, please go and read his Hackaday project page and his published guides — they are the foundation everything here builds on.