A digital voice bridge that connects six amateur radio digital modes — DMR, YSF, NXDN, P25, M17, and D-STAR — so a transmission on any one mode is heard simultaneously on all the others.

How it works

Each mode has its own protocol bridge running on a Hetzner VPS that converts the mode's native audio into a common PCM stream over USRP. A central fanout script (usrp-fanout.py) then forwards that PCM to every other leg, where it gets re-encoded into the appropriate digital mode and transmitted out.

The result: a single key-up reaches everyone on all six modes at once — effectively merging the otherwise fragmented digital voice ecosystems into one shared conversation.

How to connect

Point your hotspot or repeater at the appropriate endpoint for your mode:

DMRTGIF talkgroup 95110
YSFReflector 95110
NXDNReflector 9511
P25Reflector 9511
M17M17-JET, module Q
D-STARXLXJET, module Q (via DPlus / DExtra / DCS / MMDVM)

Architecture

The N6JET 6-Link runs on a Hetzner VPS (Ubuntu 24.04) and bridges six independent digital voice networks into a unified audio domain. Each leg — TGIF DMR (TG 95110), YSF (95110), NXDN (9511), P25 (9511), M17JET module Q, and XLXJET module Q for D-STAR — runs as its own reflector or gateway service paired with a bridge process (Analog_Bridge / MMDVM_Bridge for the four mode-specific legs, USRP-native handoffs for M17 and XLX) that converts the native protocol into and out of USRP audio frames. All six bridge pairs connect over the loopback interface to a central Python relay (the USRP fan-out, usrp-fanout.py), which receives audio from any one leg and re-broadcasts it to the other five. The entire stack runs as systemd services on a single host, so there are no external network hops between legs — only the user-to-reflector path traverses the public internet. AMBE transcoding for the legs that need it is handled by an on-host ambed instance.


← Back to N6JET