5.2.2.5. RAYNET DMR¶
In order to learn more about how DMR works, I set about trying to implement my own server. I first looked at Brandmeister and Phoenix, could I download and run my own? No, they are closed systems.
Searching around I came across HBLink3. I found lots of references to it and even a few forks.
I quickly set up a simple bridge in a docker container, and was able to handle a conversation. I invited a few other people on play as well, and quickly discovered that all traffic was sent to all peers (Pi-stars) registered. This turns out to be by design.
In the end I found the hblink code while very nice and complete would become a limiting factor in with the direction I was heading. So in decided to start from scratch. Having made that decision I was then free to pick a different language. I wanted to fast and preferable a compiled language. I came across golang from google.
5.2.2.6. Building from scratch¶
After further looking around I decided that I might be better off writing my own system. I had a few basic requirements
Small
compiled code for performance
minimum additional packages required
Run in docker containers
carry multiple concurrent calls directing traffic to required hotspots only
Authenticated hotspots only
Only pass traffic for known DMRIDs
Unlimited Talkgroups
ACL (Access Control List) to manage access to Talkgroups
I chose to use “Golang”. I Read through the tutorial in the morning and started writing the server in the afternoon. In all it took 2.5 days to write the basic DMR handling service and hook it into the management portal.
For more details about the system please have a look at the help pages https://raynet.m0guy.com/help