DMR Cross-modes: DMR2YSF and DMR2NXDN

Two small programs let a DMR radio talk to Fusion and to NXDN with no vocoder hardware, no transcoding and no audio conversion at all. They work because those three modes already speak the same vocoder. Here is what they do, how the chain fits together, and what surprises people.

Scope: this page is written from the DMR radio's seat, and covers traffic leaving a DMR radio for another mode. The opposite direction, a Fusion radio reaching out to other modes, has its own page.


The short version

Why these two are the easy ones

Cross mode work is usually expensive because two modes use different vocoders, so the audio has to be decoded all the way back to plain sound and re-encoded on the far side. That needs either a hardware vocoder chip or a software one, and it costs a little quality every time.

DMR, Fusion in DN mode, and NXDN at 6.25 kHz do not have that problem. All three carry AMBE+2 at 2450 bits per second of speech plus 1150 bits of error correction, which is the same 3600 bit per second frame in all three modes. A bridge between them only has to lift the frame out of one container and put it in another.

You can see this in the software's own structure: the routine that repairs a DMR speech frame is the same routine used for Fusion and NXDN, compiled once and shared by all three.

ModeVocoderShares DMR's frame?
DMRAMBE+2, 2450 plus 1150Itself
C4FM, DN modeAMBE+2, 2450 plus 1150Yes
NXDN, 6.25 kHzAMBE+2, 2450 plus 1150Yes
C4FM, VW modeIMBE, the full rate codecNo
NXDN, 12.5 kHzAMBE+2 at 7200, the full rate optionNo, and no amateur software implements it
P25 Phase 1IMBE, 4400 plus 2800No, needs real transcoding
D-STARAMBE, 2400 plus 1200No. Same 3600 total, different split, not interchangeable
M17Codec 2 at 3200No, needs real transcoding

The D-STAR row is the one that catches people out. The channel rate matches DMR exactly, and the frames still cannot be swapped, because the bits are divided differently between speech and protection.

Where the software actually lives

This trips up anyone searching for it. DMR2YSF and DMR2NXDN are not projects of their own. They are folders inside one repository of cross mode utilities, alongside their opposite numbers and the transcoding ones.

Folders present in that collection: DMR2YSF, YSF2DMR, DMR2NXDN, NXDN2DMR, YSF2NXDN, YSF2P25, DMR2P25, P252DMR, DMR2M17, M172DMR.

Worth noticing what is not there: no DMR to D-STAR converter in either direction. D-STAR is reached through a transcoding reflector instead, which is a different piece of work entirely.

How the chain fits together

Each converter sits in the middle of a chain, pretending to be a DMR network on one side and a Fusion or NXDN client on the other.

Your radio  →  MMDVMHost  →  DMRGateway  →  DMR2YSF  →  YSFGateway  →  the Fusion reflector

DMRGateway does no converting. Its job is routing: it takes the talkgroup you transmitted, applies a rewrite rule, and hands the traffic to one of several DMR network connections. One of those connections happens to be the converter. That is why cross mode talkgroups on a Pi-Star or WPSD hotspot usually carry a prefix, and it is also why people wrongly credit DMRGateway with the conversion itself.

The converter's own DMR side is configured exactly like a small DMR network:

[DMR Network]
Id=1234567
RptAddress=127.0.0.1
RptPort=62032
LocalAddress=127.0.0.1
LocalPort=62031
DefaultDstTG=9
TGUnlink=4000
TGListFile=TG-YSFList.txt

DMR2YSF, reaching Fusion from a DMR radio

DMR2NXDN, reaching NXDN from a DMR radio

The two things that surprise people

1. Half of Fusion arrives as silence

Fusion has two voice sub modes. DN is the narrow one, which shares DMR's vocoder. VW is the full rate one, which does not.

The bridge passes DN frames and discards everything else. It does not warn you, it does not tell the person talking, and nothing on either radio indicates a problem. A VW caller simply arrives as silence on your DMR radio.

This is why a cross mode link can appear to work perfectly for days and then seem broken the moment a particular operator keys up. Nothing is broken. He is in the wrong sub mode for the bridge.

2. Talker Alias does not cross

Your radio may send Talker Alias, and DMR software handles it properly at both ends, but the cross mode converters make no mention of it anywhere in their code. It is dropped at the bridge. What the far side sees is whatever the converter looked up from the ID databases, which is why keeping those files current matters more on a cross mode path than on a plain DMR one.

What these two are not

You wantThe toolWhat it costs
DMR to Fusion, DMR to NXDNDMR2YSF, DMR2NXDNNothing. No vocoder, no dongle.
DMR to P25DMR2P25 and P252DMRReal transcoding between IMBE and AMBE+2, using a software vocoder
DMR to M17DMR2M17 and M172DMRReal transcoding between Codec 2 and AMBE+2, software again
DMR to D-STARNo converter exists in that collectionA transcoding reflector, and in practice AMBE hardware

Both transcoding pairs rely on a software vocoder built from radio firmware, and that library states plainly that it runs only on an ARM platform such as a Raspberry Pi 2, 3 or 4, and not on a Pi Zero or an original Pi. That constraint does not apply to DMR2YSF or DMR2NXDN, which never vocode anything.

Practical notes before you build one

  1. One conversation at a time. These are point to point bridges, not conference systems. Whatever is on the far reflector arrives on your talkgroup and the reverse.
  2. Hang times stack. Each program in the chain holds the path open for its own configured period, and the end to end result is the sum rather than the longest one. A long tail on a cross mode link is normally this rather than a fault.
  3. Keep the ID files fresh. On a cross mode path they are the only source of a name at the far end.
  4. Announce yourself in words. Given the above, a spoken callsign is worth more on a bridged path than on a normal one.
  5. Be careful joining a pair of systems that are already joined. Two bridges between the same two networks is the classic way to build a loop. Note that this is widely repeated in the hobby and is not documented as a warning in these projects' own files, so treat it as prudence rather than as a published rule.

How the claims here were checked

ClaimChecked againstStrength
DMR, C4FM DN and NXDN 6.25 kHz share AMBE+2 at 2450 plus 1150The vocoder maker's own published split, the NXDN Forum's overview, and the shared error correction routine in the MMDVM sourceThree origins, one of them the code that does the work
NXDN at 12.5 kHz uses a 7200 bps optionThe NXDN Forum overview and the NXDN technical specification's own tableTwo origins. The mapping of that rate to the specification's named vocoder modes could not be quoted directly and is inferred
C4FM VW is IMBE rather than a faster AMBE+2The MMDVM source, which routes VW frames through its IMBE routine; a bridge configuration file that labels the wide port as IMBE; and a hotspot manufacturer's manual stating VW is the mode converted to P25Three origins. No Yaesu published table was found, so this rests on implementations rather than on the manufacturer
D-STAR's frame is not interchangeable despite the same 3600 bpsSeparate code paths for the two bit splits in the decoder library, and the converters' own descriptionsTwo origins
DMR2YSF and DMR2NXDN do not transcodeTheir own documentation, which never claims it, contrasted with the transcoding utilities that state it explicitly in their first paragraphThe projects' own words
The chain, the ports, the talkgroup mapping, 4000 to unlink, the fallback talkgroup and the lookup filesThe shipped configuration files, quotedPrimary
VW frames are discarded silentlyThe cross mode source, which accepts one Fusion sub mode only, plus a hotspot manufacturer's manual stating in plain words that the other sub mode reaches a DMR radio as silenceTwo origins
Talker Alias is droppedSearched the converters' source: no mention anywhere, while the DMR software itself handles itAbsence in the code. Stated as what it is
The two bridge loopNothing. No warning in any of these projects' filesFolklore, labelled as such

Prepared for n6jet.com. The reverse direction, Fusion out to other modes, is covered on its own page. Software changes: the ports, file names and defaults above come from the configuration files as shipped, and a distribution may set them differently.