A Multimode USRP Fanout Bridge ties several different digital voice modes into one shared conversation. It is a companion piece to the XLX and URF explainers, but it works on a different principle. Every mode is turned into plain audio, and a small program in the middle copies that audio to all the other modes. The name says what it does: it links many modes (multimode), carries their audio over a common transport (USRP), sends that audio from one to all (fanout), and joins systems that would otherwise be separate (bridge).
The bridge connects two or more digital voice systems, each running its own mode, into one linked group. Key up on any mode, and everyone on the others hears you. It scales naturally: a two-leg bridge links two modes, a six-leg bridge links six, and the design is the same either way.
This is a different idea from an XLX or URF reflector. Those are single servers that transcode inside the server: you pick a module and talk to whoever else is in it, on any mode. A fanout bridge has no rooms of its own. It sits beside the reflectors, with one leg per mode, and stitches them together behind the scenes.
All of the legs meet in the middle as plain digital audio, the uncompressed audio-over-IP format (USRP) that AllStar and the DVSwitch tools use. At the center sits a small program called a fanout.
The common-ground trick
Each leg's job is to convert between its own mode and plain audio. When someone transmits, their audio arrives at the fanout as ordinary uncompressed sound. It is no longer "DMR" or "D-STAR", just audio. The fanout copies that audio out to every other leg, and each leg re-encodes it into its own mode. The meeting point is uncompressed audio, not any single codec.
That is the heart of the design. Every mode only ever converts to and from plain audio at its own leg, so adding a leg or removing one changes nothing else: the hub simply has one more or one fewer place to copy to. Most legs can use a software vocoder. D-STAR is the exception, because its older AMBE codec in practice needs a hardware vocoder such as a DVstick.
What happens when someone talks, for example a DMR user on a two-leg DMR and M17 bridge:
How to build one, in the order that keeps each step testable:
VEXJET is N6JET's Vexillum reflector. Vexillum does no transcoding, so on its own a DMR user and an M17 user on module A would not hear each other. A fanout bridge on the same server joins them. Each leg logs in to VEXJET as an ordinary user of its mode, on the module it serves.
Module A, Silicon Valley Multimode: four legs meet in the fanout.
| Leg | Mode | How it connects |
|---|---|---|
| 1 | DMR | MMDVM_Bridge and Analog_Bridge, software vocoder (md380-emu) |
| 2 | P25 | P25Gateway, MMDVM_Bridge and Analog_Bridge, software vocoder |
| 3 | M17 | USRP2M17 (Codec 2 is open, so no vocoder hardware is needed) |
| 4 | D-STAR | ircDDBGateway and MMDVM_Bridge on the server, Analog_Bridge with a DVstick 30 on the N6JET Beelink, reached over Tailscale |
YSF 95114, NXDN 9512 and TGIF talkgroup 95110 also reach module A, but not through the fanout. They join the DMR side through Vexillum bridge programs. So a single room on module A is reachable from seven doors: DMR, TGIF, YSF, NXDN, P25, M17 and D-STAR.
Module B, General Use: a second fanout with three legs, DMR, M17 and D-STAR, built the same way. The second DVstick 30 serves its D-STAR leg.
Module Z, echo test: the same DMR and M17 legs, but instead of a fanout there is a small program that records each transmission and plays it back one second later, into the leg it came from. D-STAR has its own echo on module Z: it replays the D-STAR voice data exactly as received, so it needs no vocoder at all.
From a user's seat, none of this is visible. A D-STAR operator, a DMR operator and an M17 operator on module A are simply in the same conversation.
Found and fixed, 6 November 2026
1. USRP2M17 only accepts audio from the port it sends to. A fanout that sends from a random port is silently ignored, so audio from DMR, P25 and D-STAR never reached M17 users. The fix: the fanout sends to the M17 leg from the same socket the M17 leg sends to.
2. USRP2M17 leaves the M17 frame checksum (CRC) as zero. Vexillum checks it and drops every frame. The fix: a small relay between USRP2M17 and the reflector fills in the correct M17 CRC.
The first N6JET fanout bridge joined six separate systems into one conversation. It is no longer running; it was shut down in late August 2026. Its legs were:
| Leg | Mode | Connected to |
|---|---|---|
| 1 | DMR | TGIF talkgroup 95110 |
| 2 | YSF (Fusion) | URFJET, reflector 95111 |
| 3 | NXDN | Reflector 9511 |
| 4 | P25 | Reflector 9511 |
| 5 | M17 | M17-JET, Module Q |
| 6 | D-STAR | XLXJET, Module Q |
TGIF talkgroup 95110 now leads to VEXJET module A, Silicon Valley Multimode.
A fanout bridge is assembled from open-source building blocks rather than one piece of reflector software. Each leg uses DVSwitch bridge components (Analog_Bridge and MMDVM_Bridge) or a mode-specific bridge such as USRP2M17 for M17, all feeding a central usrp-fanout script that does the audio distribution. The bridge runs beside the reflector, on its own ports, so the two never get in each other's way.
Credits
The foundations here are other people's work. Meeting several digital modes in plain USRP audio is what the DVSwitch suite was built to do. The mode legs are DVSwitch's Analog_Bridge and MMDVM_Bridge, by Steve Zingman (N4IRS) and Mike Zingman (N4IRR), with MMDVM_Bridge built on Jonathan Naylor's (G4KLX) MMDVM. ircDDBGateway and P25Gateway are also G4KLX's. The M17 leg uses USRP2M17 from the nostar / N7TAE project. The software vocoder is md380-emu, from the md380tools project. Vexillum is by Steve Miller (KC1AWV). The fanout, the echo test and the CRC relay are small custom scripts written for this setup. See github.com/DVSwitch and github.com/nostar/MMDVM_CM.
XLX and URF are reflectors that transcode inside the server. A Multimode USRP Fanout Bridge reaches the same goal from outside: one leg per mode, all meeting as plain sound in a small hub. It is a different answer to the same goal that runs through all of these projects, letting people on different digital modes talk to one another as if the mode never mattered. On VEXJET it turns a reflector that does no transcoding into one multimode room.
Built on DVSwitch (Steve Zingman N4IRS & Mike Zingman N4IRR), G4KLX's MMDVM, ircDDBGateway and P25Gateway, USRP2M17 (nostar / N7TAE), md380tools and Vexillum (KC1AWV); see Credits above. A noncommercial hobby project, shared freely for anyone interested in amateur digital voice. Updated 6 November 2026.