March 18, 2015

Hardware and Software

Let’s first start out talking about hardware.  We want to be able to run on multiple different low cost small board CPU systems.  We are going to test this starting out with these 3 devices but plan testing with as many as possible: Raspberry Pi, Beagle Bone Black and the RiotBoard.

Our current favorite is the RiotBoard because it has built in audio capability which simplifies the setup tremendously.  So far our testing has been good on this board.

But, you could just as easily install ubuntu on an old laptop or PC and have this setup and working in no time.  In fact, I develop and test inside of a ubuntu VM running in VMWare Fusion on my mac and it works just fine even running inside the VM.

 

Software

For our base software we started out with svxlink (http://www.svxlink.org/).  We are adding and building around svxlink base and adding many more features and a modern web application using Sencha ExtJS.  We are building the application in a way we call hybrid mode.  This will allow you to get the same experience with the repeater no matter if both devices are connected via ethernet or you only have access to control the repeater with packet radio.

The web app architecture will be built using micro services, so the only thing that goes back and forth from the client web app to the repeater is the actual data, no images, no web pages, just the data.

One of the great strengths around Sencha ExtJS is how it handles and displays data.  We are going to provide statistics that most have never seen on a repeater before and provide them in beautiful graphs and charts.

We will also build a very simple and easy to use user interface for configuring the repeater.  We will update the actual config files for you so there is no need to understand all of the technical configurations.  Our goal is also to build in some help documentation.

Some of the features on our goals list will require some new or possibly additional software be integrated into the project.  It is yet to be determined if that will integrate with the core system or be separate.  Given the choice, we would like to keep everything open and compatible between all of the software.

For the web services we are going to rely on already existing web services that come with or are easily installed on the operating systems we are going to use.  That may mean we use PHP for the actual services, mysql for the stats and configuration history and apache for the web server.  But it could also mean we go more modern with NGINX web server and a MondoDB database, some of this is still up in the air.  Our prototype is currently using a LAMP stack.

We have also considered using something like docker to help manage the deployment, again no final decision on that.  By using docker we could make deployment very very simple (after you get docker working).