Another radio related phlog post.
▔▼▄▟█▃ ▄█▙▅▀
▝▜▊▀●▃ ▄▀▔█▀ p25 - a digital trunking radio system,
▔ became pretty ubiquitous here in the USA
▝▘ now. Often used by law enforcement, but
▗▅ ▂▖ ▐▍ ▗▂ ▅▖ also many other entities, including
▁▟██▇▀ ▟▋ ▝▜██▙▖ commercial users.
╼▘ ▝▀ ██ ▝▘ ▔╾
▗██▎ Interesting radio traffic there. There's
▟██▋ a few services online, like broadcastify
▕█▟▙█ which let you stream this stuff online
▐▜▜▛▛▌ without even having a radio, although
▊▛▟▙▜▉ usually it's just limited to law and EMS
▐█▃██▃█▍ stuff.
█▛▆▜▛▇▜█
▐▍▐▍▐▌▐▋▐▌ So, I've mentioned in previous posts
▕▛┏▘▚▐▋▞▝┓▜▏ that I've got this fancy USRP2 sdr radio
▟█▘▁▂██▂▁▝█▙ sitting here, and it's actually got
▗██▇█▟██▙█▇██▖ enough bandwidth to slurp in the entire
█▔▚▂╱▔█▊▔╲▂▞▕▉ p25 frequency range for the two major
▐▌ ▟▜ █▊ ▛▄ ▐▌ local p25 networks all at once.
▗▛▗▞ ▚ █▉ ▞ ╲▖▜▖
▟▙▘▁▁▁▂▙█▉▟▂▂▁▁▝▟▙ But- what if, instead of live-streaming,
▟▛▛▀▀▀━▄▟██▙▄━┻▀▀▜▜▋ it like broadcastify does, I were to
▗█ ▝▖ ▁▅▀██▀▄▁ ▗▘ █▖ just log all the audio forever (or at
█▘ ▝▄■▘ ██ ▝■▄▛ ▝█ least until I run out of disk space),
▟▛ ▁▄▀▜▖ ▕██ ▗▛▀▄▁ ▜▙ that way, if you read something in the
▗█▂■▀ ▜▖ ▕██▏ ▗▛ ▀■▂█▖ local newspaper, you can go back and
█▀▔ ▜▖▕██▏▗▛ ▔▀█ listen to the radio traffic about the
▜▃██▃▛ incident AFTER the fact. No more need to
▜██▛ pay attention in real-time.
▀▀
So what does this actually look like?
Antenna => USRP2 => ethernet switch => raspberry pi => this server!
The pi decodes all the signals and every hour it will upload what it
received to this server for all to browse.
There unfortunately are still some limitations. I'm making use of a
few hacks on top of the op25 python codebase to pull this off, but
even-though the usrp2 has enough bandwidth to pull in all data
without ever having to tune, the op25 codebase wasn't exactly
written with something crazy like that in mind. Instead it tunes in
to one thing at the time. It does come with a multi_rx script to
make use of multiple sdr radio's at once, but it has no provisions
for multiple decoders on the same SDR using an insanely wide sample
rate. As such, I'm still working on my own version that forks of
multiple decode processes that listen to the same stream of data,
but there's quite a few pitfalls to implementing this, as it
involves a lot of I/O on an rpi; and whilst the pi4 is quite
powerful, it's not exactly an i/o monster.
In any event, you can browse the logged audio on gopher here:
gopher://gopher.linkerror.com/1/radio/p25logs/
it is updated every hour.
( note, the lagrange gopher client doesn't seem to deal with the
spaces in the folder names very well so you might have to use
something other than lagrange to browse these on gopher
unfortunately. )
.. or... on www here:
https://www.linkerror.com/p25/logs/
( usename: radio ; password: livetransmission )
.. or download the whole lot incrementally via rsync here:
rsync://linkerror.com/p25/
Rsync is really the recommended way, because then you can just play
the files in order with your favorite audio player without clicking.
They are named such that when sorted by filename, they should play
in the correct order as received - just be aware there's a lot of
data there, so try and be nice to my bandwidth and only pull in one
day at a time or so :)