AllStar to D-Star D-Star to DMR

Steve N4IRS

Since the introduction of a DMR to AllStarLink (ASL) bridge, we have been asked many times for a open source method to bridge ASL to D-Star. Yes, there is a channel driver included in ASL that does some of the work but it requires a closed source program. We felt that a open source solution was possible. The idea was to leverage existing open source programs to form the bridge between ASL and D-Star. ASL provides a channel driver that produces PCM from network or local audio in ASL. It also provides the signaling needed for COS and PTT. That channel driver is chan_usrp. This is the same channel driver we use for the ASL to DMR bridge(s). Why reinvent the wheel? Now we needed a open source method of sending and receiving audio to D-Star. Jonathan Naylor G4KLX as written a number for D-Star programs. One of them is DummyRepeater (DR). DR was built to take analog audio from a local mic, pass it to a Vocoder and on to the D-Star network(s) through ircDDBGateway. All we needed was a connection from ASL to DR. After looking at the code to DR, Mike N4IRR determined only one module in DR needed to be modified. That module is DummyRepeaterThread.cpp. Everything needed to communicate with ASL was in there. Audio in and out, signaling and MetaData. Modifications were made and DR was recompiled. Mike tested on a x86 machine and I tested on a Raspberry Pi.

DR did not include a daemon version. The program required that a GUI be displayed. The GUI does nothing, but it had to display somewhere. Enter xvfb, a virtual frame buffer. DR can display to xvfb. No need to see the output, just give it a place to go. DR also requires a sound device. In the case of the RPi you have 2 choices, add a simple USB sound device that will never be used or a dummy sound device. Add snd-dummy to /etc/modules and reboot or run modprobe snd-dummy. DR is now happy. One of the things we have found is on a Pi where there is no mic input so snd-dummy was used, you can hear a slight tail in the D-Star output. Adding a cheap USB sound device solve that. We are looking into a solution.

Now that DR "speaks USRP" it can connect to another DVSwitch partner. Analog_Bridge (AB) also "speaks USRP" Consider this, AB partners with either HB_Bridge (HB) ir IPSC_Bridge (IB) AB uses a DV3000 to convert AMBE from HB or IB to USRP. You can build a basic bridge from DMR to D-Star using AB and DR. Yes you need 2 Vocoders. One for AB and a second for DR. This can be a MMDVM with HB or a Motorola Repeater with IB. I'll leave other permutations to your imagination. Since both DMR and D-Star have metadata associated with each transmission we decided to pass that metadata between the 2 networks where possible. An inbound transmission from D-Star contains a callsign, that call sign is used to check for a matching call and DMR ID. If found the DMR ID is passed through AB to the DMR network. This is visible as a DMR ID on a user radio or network dashboard. From DMR to D-Star, we decided to put the call, TG and TS into the info field sent to the D-Star network. This is configurable and can be turned of if not desired. for the last 5 days I have been bridging DMR to D-Star on reflector DCS006T.

Just to be clear, this is NOT D-Star_Bridge. That will come later. The changes to DR were pretty simple and it gave us a working solution. Is it scalable? No, not really. Is it stable? Yes, seems so to us. Now is the time for others to try it out and provide feedback. That is why we are now calling it beta. No, there is not script to install it. No, there is no image to pop into your Pi. This is code pure and simple. Everything we have done with DVSwitch has been a module to do a task. Combined with DMRlink and HBlink you can do some interesting and useful things. The source to DummyRepeaterThread.cpp and my notes on building the bridge are at <> in the DummyRepeater directory.

For DVSwitch,
73, Steve N4IRS and Mike, N4IRR

"What are HB_Bridge, IPSC_Bridge and Analog_Bridge?"

Join to automatically receive all group messages.