For the final Marco, Dorothy and I going to work on demodulating frequencies that use APCO Project 25. We’d like to see if we can decipher (1) whether communication is occurring and potentially (2) the information being transmitted. We’re not sure if communications might be encrypted but this itself might be useful information. If we have time we’d also like to build a tool that could send relevant information gleaned to affected parties.
The RTL-SDR tutorial I found before last class ended up being a pretty good one for pointing us in the right direction. We’re not using SDRSharp but we found this pretty detailed tutorial for how to use digital speech decoder (DSD) using GQRX. They also have a github. We were able to get as far as piping audio over UDP. After installing DSD, alsa-oss, and socat, you can display and set the port audio devices for dsd (we used 5 because this was our default; in the tutorial he used 11):
$ ./dsd -a
$ ./dsd -i pa:5 -o pa:5
Then we could get hex output, using this command:
$ socat stdout udp-listen:7355 | xxd
I think piping in audio through dsd is just a matter of changing the command to which the audio is getting piped, but when I tried this with a signal gqrx froze (example code below is saving output to a .wav file). I wonder if it will be a problem doing this in real time? Still, right now I think we are just trying to get enough P25 signal to play with. Another question I have is whether the mode we’re using to record/pipe audio will matter once we pass it through DSD?
$ socat stdout udp-listen:7355 | ./dsd -i – -w dsd_output.wav
We are using a linux laptop while we figure these pieces out. In an ideal deployment we also don’t want a human to have to listen constantly, so Dhruv pointed us to gqrx-scan to automate this piece, which will allow us to record and hopefully automate a response as much as possible when there is a signal. Assuming this all goes smoothly, we will create a prototype using Raspberry Pi that we could sell/deploy to various areas.
Frequencies for testing P25 decoding