DVSwitch Server official release at 12:00 UTC October 31, 2020

Steve N4IRS

I have been asked to post this in other subgroups for the benefit of those not subscribed to the server subgroup <https://dvswitch.groups.io/g/Server>

We are pleased to introduce DVSwitch Server. DVSwitch Server provides the DVSwitch components, Analog_Bridge, MMDVM_Bridge and Quantar_Bridge. Included with DVSwitch Server are the necessary support programs for connecting to the Digital voice networks. Those programs are ircDDBGateway, NXDNGateway, P25Gateway and YSFGateway. For testing we have included NXDNParrot, P25Parrot and YSFParrot. Various other support programs are included as are scripting to make things all work together. When you install DVSwitch Server either from the apt repository or the Raspberry Pi image, all of the programs are installed and most are pre-configured ready for use.

DVSwitch has it's early roots in the AllStar analog network. AllStar provided a easy to use method of interconnecting analog voice repeater. We felt it made sense to add the ability to connect that analog repeater to the amateur digital voice networks for DMR, NXDN, P25 and YSF. DVSwitch was born and we continue to support AllStar today. The same components, Analog_Bridge and MMDVM_Bridge could also be used to build bridges between different digital voice networks. Some digital voice network bridges are very easy like NXDN to YSF. Others, like P25 to DMR can be more complex. At the end of the day it's all about how you configure the components.

One of the things we saw a need for is the ability to access both the analog network of AllStar and the digital voice networks. Enter DVSwitch Mobile and pyUC. DVSwitch Mobile is a Android based client capable of accessing analog and digital networks. pyUC provides the ability to connect to digital voice networks for desktop computer running Windows, Linux and macOS (can't just call it OSX anymore) If you can run Python on your desktop, you can run pyUC. DVSwitch Mobile and pyUC are the most configurable digital voice clients available today. I think I can say honestly, no other client provided the wealth of macro functionality coupled with user definable menus. These 2 features alone alloy you to "build it your way" I'll venture to say someone will do something we have not even thought of, and we wrote it!

For any of this to work, you need a server. That server can be as simple as a Raspberry Pi, or a 32/64 bit Intel or a cloud based system. DVSwitch Server runs on hardware using CPUs from ARM, Intel (and compatible) If you can run a Debian based Linux distribution (32 or 64 bit) you can probably run DVSwitch Server. For other Linux distributions such as Arch, Centos, etc, you will have to "roll your own" All of the binaries are on the DVSwitch GitHub repository. We have added some programs to DVSwitch Server to either make it easier to configure, or to display and control the server remotely. For configuration, we have include a menu system. The menu will guide you through entering the information needed to get the server up and running. If you don't want to use the menu or you use the menu to do the base configuration and then customize for your application that's fine. You are not locked into the menu.  We have included a web base dashboard to DVSwitch Server to let you see what is going on. One feature of the dashboard is the ability to listen to the received audio on a web browser. Last but not least is the ability to see the running services, view their resource utilization and if need be, restart services. This feature if deployed directly exposed to the Internet could cause problems, We have limited it's access to what are usually referred to as private IP address. (more later) 

DVSwitch Server includes a text based menu system to help you get up and running quickly. The menu is written by HL5KY. The menu will walk you through initial configuration of the server and help you install and maintain macros for use by DVSwitch Mobile. The menu has been translated into French, German, Greek, Japanese,  Korean, Polish and Spanish. It should take you no more then 10 minutes to configure the server from the menu. Included with the menu is a program to make a backup image of your SD card for the image. In the future you will also be able to backup just the configuration for transport to a new system. 

DVSwitch Server includes a dashboard you can use to view the system status. The dashboard is based on the Pi-Star dashboard and has been modified for DVSwitch by SP2ONG. The dashboard is display only, you can not change any settings from the dashboard. It is safe to expose the dashboard on a public IP address. We have added the ability to listen to the audio that would be sent to the client. In other words, if you have selected DMR on TG91 from DVSM or pyUC, that same audio is available to a web browser. If you don't want the feature available, you can disable it.

DVSwitch Server includes a System Monitor dashboard based on the program Monit. Monit is configured to monitor all of the DVSwitch Programs used in the server and will also allow you to stop / start / restart a service from a web browser. You can also reboot the server if you need to. Due to the nature of the abilities of System Monitor, Access is limited to private non-routable addresses.

We have built extensive scripting to support DVSwitch Server. I won't list all of the different scripts, but some of them take care of updating the host and user file daily so that you are always up to date when accessing a remote reflector or looking at the display on DVSwitch Mobile to see who is transmitting with name and callsign. Scripting is used to change digital modes and talkgroups / reflectors. All of this is available for you to use and add to. The heart of the scripting is a master script called, wait for it, dvswitch.sh. This script makes controlling all of the DVSwitch components and support programs easy and more importantly, to build your own scripts. Is there something we have not though of? You can script it yourself. You can call that script from DVSwitch Mobile with a macro or you can call that script from AllStar. How about connecting to your favorite talkgroup on Tuesday night from 8:00 to 10 PM? You can do that. I'm sure there are things people will want to do that we have not thought of. dvswitch.sh will handle the "heavy lifting" for you.  

The DVSwitch Server image is of course password protected. There is one user login defined on the image. That user is dvswitch. The image is distributed with a default password of "dvswitch" You will be FORCED to change that password on your first login. This is to protect you. You never want to expose a machine to the Internet with a known default password.  The root user is disabled from logging in. There is no back door. We can not remotely access your server. We have provided a method of resetting the password if you forget it. For this to work, you must have physical access to the Raspberry Pi. Power off the server and remove the SD card. Each Raspbian SD card  has a partition that can accessed from Windows, macOS or Linux. Insert the card into your desktop computer (or use a USB card reader) On the accessible partition (boot) place a file named "passwd_reset" This file should contains a single line of "login:password" where login is dvswitch and the password is your NEW password. for example, dvswitch:secret will reset the password for the user dvswitch to "secret" Reinsert the SD card back into the Raspberry Pi and power up. When the system is fully booted, the password has been reset. if you look at the boot partition, you will see a file named "passwd_reset_COMPLETE" if you still can not login, power down the Raspberry Pi and check the SD card. If something went wrong with the password reset, you will see a file on the boot partition named "passwd_reset_FAIL" If this is the case, you will have to use your backup SD card. (You did backup didn't you?)

Are there bugs? No, everything is perfect! Of course there will be bugs found. There will be enhancements added. Since all of the DVSwitch and support programs are built with apt, if a bug is found or a enhancement is added, all you have to do is apt-get update followed by apt-get upgrade. This will replace or upgrade the programs.  This is the method all Debian based systems handle bug fixes and enhancements. This works the same no matter if you are using the image or you installed DVSwitch from apt-get install. We have included scripting to help diagnose problems. One of the biggest issues is collecting the data we need to help you. Scripting is included to collect basic system information. This is a work in progress and will be enhanced over time.

We have included documentation to help you get up and running quickly. Some of you may remember the first DVSwitch Mobile documentation written by W8RIK. Joe expanded that documentation, and with the help of K2KXK, we have a more extensive document. I have to hand it to these guys, they were trying to write documentation while we were changing to program. Not a easy task!

We have in the works a set of tutorial videos by W0RMT to help people see and understand the system. We have the first two introductory videos are available at <https://youtu.be/ykW8oF1AGUc> and <https://youtu.be/5tx4yULb3r8> with more to come.  

Is that all there is? No, "Software means never having to say you are done" (with apologies to Erich Segal) We have more ideas to add features. We have some ideas to make DVSwitch easier to use in your application.  Without the help of HL5KY, W8RIK, SP2ONG , K2KXK, W0RMT and the beta test team, we would not be here today.

All of this is great, but WHERE DO I GET IT? (Really, you made me read that whole thing just to get here?) There are links on <https://dvswitch.groups.io/g/Server> and <http://dvswitch.org/DVSwitch-Server-RPi.zip> to the most current image and documentation in a zip file. We have also provided a link to the directory that contains those files in case all you need is one file out of the zip <http://dvswitch.org/files/DVSwitch_Images/Raspberry_Pi/Buster/>