December 26th 2018, that’s when the Signals Everywhere community and Myself decided to start working on a project we called “Pi25”. The idea was simple, take off the shelf hardware and use it to create the first open source portable digital radio scanner!

Well, while simple in concept actually getting the parts we needed, learning hardware and software as well as having the funds to buy hardware to work with slowed us down. I had started doing some basic 3D modeling to get an idea of where the project might be headed.

By March of 2019 I had finally started working on getting data from OP25 to display on an OLED screen.

Demo Video of OP25 Data Display

That’s about where the development ended until January.
See there were two designs for the Pi25 project, the first was a hand-held portable unit designed specifically to replace your traditional portable scanner.
The second was intended to be a mobile scanner that you would use in your vehicle.

The First Revision wasn’t Great :/
Development was progressing however!

This is the point in the project where I started making some big changes. I went from attempting to re-design the horrid web-ui with another horrid web-ui to writing my own UI in python. The idea here was that the Rasberry Pi would run not only the OP25 software but also the display. It went through several variations from here.

You could see progress slowly being made here.

This was the point in my project that I realized I could begin to add my own features on top of OP25, this didn’t have to be just some passive overlay to the WebUI provided with the software, this could manipulate the OP25 instance to do things nothing publicly available could do!

Suddenly my UI could auto-connect to an OP25 instance, it supported Radio Reference database importing and more.

With the new remote application on the Raspberry Pi with the OP25 instance I could now start doing things like importing Radio Reference data and implementing my own modes of functionality.

I added night-mode functionality that would auto-switch depending on the time, an alert window which would read a file and provide you with an audible, visual and logged alert when that talkgroup was heard.

The ScanGrid

After suggested by a viewer I began working on the scan grid. This feature was completed on January 20th and would allow you to create a grid of buttons to enable/disable the scanning of talk groups on the fly. This meant that you could easily modify your scanlist without having to sit in a text editor or go through a bunch of menus when you’re on the go.

Site Location Tracking and Auto-Site Switching / Roaming Completed!

By the end of the month this revision was nearly completed and I had successfully tested automatic site-switching which allows you to drive through an area and have OP25 automatically switch sites based on your location in relation to the known tower location we grabbed from our radio reference import.

I of course had to figure out how to plot those sites on a map first.

The only downside to what appeared to be a very successful software release was that the application ran poorly on the python interpreters available for Android and it was very limited when it came to grabbing system calls (or using an actual cell-phone gps and not just the usb model I had).

This meant that once again I was going to have to re-write this thing in order to make it useful as a mobile control head. The fact that I would deploy to android and potentially iOS also meant that nearly any mobile device could become the GPS unit and the touchscreen display for the control head.

I decided I was going to write this in Kivy allowing me to easily port to Android/iOS without drastic changes to the updating code I wrote for use on the back-end.
About 5 days later on February 2nd 2021 I finally had the webUI text updating on the App in real-time
A few more days and I had some basic talk group information displayed.
Shortly after figuring out how to get my text to update I started framing the App in a similar fashion to that of TKinter.
This too was re-designed as I put everything into a proper Material Design menu and begun to re-implement my call log

Finally at the end of March I have an APK compiled and running on my phone!
There is so much that went into learning how Kivy works to get this moving, not to mention manipulating OP25.
I have a heck of a lot more left to implement, design and re-design but I hope one day I’ll have this sitting in my car replacing the $1000+ scanner and put it up on the app store so others can do the same.

Below is the current state of the App, to be released once I hit Stable Alpha 1.0