← projects

IQRF // mesh in the walls

[ wireless ] [ iot ] [ mesh ] [ czech ] reference document
// transmission origin: unknown // subject: weird little czech technology // author time consumed: ~1 year // total reddit mentions: 2

Meshes in your radio network?
It may be more likely than you think.

Today I introduce you to a weird little Czech technology that consumed a year of my life. It is an open-source system for encrypted radio communication in a mesh network of up to 255 devices, called IQRF. Built for citywide reliable encrypted communication on minimal power. If you need a stable MAN IoT network where WiFi is useless and radio towers are overkill this is what you reach for.

nodes

The network is built from Nodes and Coordinators. Nodes receive data from whatever sensors they're attached to and simultaneously act as routing paths for nodes further out in the mesh. Two flavours:

Sensor nodes — actually sense things.
Repeater nodes — dedicated routing only. They exist purely to extend reach without signal amplifiers.

The logic that runs on a node is called a Custom DPA Handler. IQRF IDE ships a few pre-built interoperable ones. If you feel brave you can write your own in C. The word "brave" is doing a lot of work in that sentence.

DPA packets // lain would be proud

Nodes communicate through DPA (Direct Peripheral Access) packets their own protocol, their own framing. Every packet follows a strict field order:

NADR addr
PNUM periph
PCMD cmd
HWPID hw id
DATA bytes[]
FIELD REFERENCE NADR  — node address in the mesh.
PNUM  — which peripheral on the node you want to talk to.
PCMD  — FRC command ID to execute on the node OS.
HWPID — unique hardware ID for the selected sensor.
DATA  — raw bytes to send along.

Every packet is encrypted with a three-layer AES-128 scheme using a 16-byte password baked into the node via a physical debugger. And if that's somehow not paranoid enough, the DATA payload can be separately encrypted with its own key, so cracking the packet wrapper still leaves you with encrypted contents. Layers upon layers.

coordinator

The Coordinator is the gateway the one node that bridges the radio mesh to the outside world. It dispatches commands to all other nodes via FRC.

In production, coordinators are commercial gateways. They accept MQTT JSON from the outside and convert it into DPA packets fired into the radio mesh. Most ship with full API documentation for their JSON-to-DPA translation. They also tend to include SSH access, VPN tunnelling, and WebSocket support a surprisingly civilised set of features for something embedded in a wall cavity.

FRC // the fast part

FRC (Fast Remote Control) is a patented broadcast mechanism. Instead of polling every node one by one, which in a 255-node mesh is a long wait, FRC sends a single command from the Coordinator to all (or selected) nodes and collects all responses. Orders of magnitude faster than sequential polling.

FRC CAPACITY Up to 30 bytes of user data to selected nodes. Response capacity per poll:

2 bits  ← from up to 239 nodes
1 byte  ← from up to 63 nodes
2 bytes ← from up to 31 nodes
4 bytes ← from up to 15 nodes

The more data you want back per node, the fewer nodes per poll. Physics. Non-negotiable.

IQRF IDE4 // it's fine

IQRF IDE4 is the configuration software. Charitably described as archaic. In it you select the DPA handler, set bonding and data passwords, configure communication frequency and channel, and access the CATS service. To configure a node you physically connect it to a debugger, which you then connect to your PC via USB. Very 2003. Very tactile.

NOTE / CATS CATS (Configure And Test Service) lets you configure IQRF modules that can't be physically plugged into a debugger — for example, modules soldered inside a commercial gateway that doesn't open its shell. A sensible escape hatch when you can't physically access the hardware.

creating a network // bonding & discovery

Network setup is a two-step ritual: Bonding then Discovery.

Every node gets bonded to a coordinator. They must share the same frequency, channel, and bonding password. Up to 255 nodes per coordinator. After bonding, run Discovery — the coordinator counts all bonded nodes and builds its routing table. Fast process. The main failure mode is choosing the wrong DPA handler for your node type. Don't do that.

If everything goes right you can either use IQRF IDE to send raw DPA packets directly, or use a commercial gateway's interface for something resembling comfort.

And that's how you get your own mesh radio network in a matter of minutes. // signal ends here

FUN FACT This technology is mentioned in exactly two Reddit posts. Total. Across all of Reddit. This is either a mark of extreme niche quality or a warning sign. Possibly both.