R09 Receiver

Background and Theory

Traffic lights are controlled by radio links of buses and trams. This page will focus on the VDV420 standard (also R09) which is widely deployed in Germany.

This data can be received by a Software Defined Radio and an antenna. The signal is usually in or near the 2m band. However, commercial receivers also support different frequencies. See here for more information.

The modulation is a special AFSK modulation with one half-wave 1200Hz as a logical 1 and a full-wave 2400Hz as a logical 0. The modulation does not have phase jumps.

The demodulation is done in gnuradio-decoder which passes the logical 1s and 0s to telegram-decoder, in turn parsing the R09 telegrams and sending them off to a server.

Receiver Hardware

An actual receiver can look something like this (minimal hardware setup):

We recommend using any NixOS compatible x86_64 thin client. The software also supports aarch64, but getting everything to work on those devices is always tricky at best.

We tested the following devices and are running them in productions:

device namearchitecturenotesworking

Dell Wyse 3040


insanely cheap, standard device we use

Raspberry Pi 3B+


resolvable problems with bootloader on nixos

Raspberry Pi 4


very nice with POE hat

We discourage from using any of the following devices:

  • Raspberry Pi 0,1,2: are old 32bit architectures for which cross compiling gets increasingly difficult.

  • Everything that doesn't have at least one USB-3 Port + Another USB Port for supplying power to the hardware filter.

  • Everything that isn't x86_64 or aarch64

  • Everything without a wired Ethernet connection

Last updated