Software Defined Radio
I bought an RTL-SDR module with their little antennae kit for fun (link, amazon). On my macbook I was recieving FM within a few minutes via SDR++, recieved some spotty fire and police stuff right away too. Moved antennae outside and that was good enough to allow receiving 460.4 fire stuff with a working squelch setting.
See also:
SDR variants
- RTL-SDR v4 (bought this initially).
- Airspy https://itead.cc/product/airspy/
The airspy would capture more bandwidth, in cases where the RTL-SDR needs two units for bandwidth.
Python resources
PySDR
this is a book
- source: https://github.com/777arc/PySDR
- book: https://pysdr.org/content/rtlsdr.html#rtl-sdr-python-code
this actually uses pyrtlsdr
pretty incredible resource.
It doesn't have examples of fully working notification-type systems… but I think it has enough that if I could generate the spectrum graph from the RTL-SDR then I could go about turning it into an audio file for processing.
pyrtlsdr
PySpecSDR
python-hrpt
Decoding images from a NOAA satellite, pretty incredible: https://github.com/radio-satellites/python-hrpt.
P25 signals
Really good description of how P25 works: https://www.mathworks.com/help/comm/ug/p25-spectrum-sensing-with-synthesized-and-captured-data.html Example python code to see if it's present from "raw" recordings: https://github.com/777arc/PySDR/issues/18#issuecomment-2015779302
trunk-recorder
By Luke Berndt
Github: https://github.com/robotastic/trunk-recorder. Recommended for decoding P25 by the author of the PySDR book (in a github issue).
The author also hosts OpenMHZ, gave a great talk on all this stuff: http://lukeberndt.com/2024/shmoocon-2024/. Second Rachel By The Bay reference in one day (her rant on web cruft hit top of HN same day)!
This didn't compile for me because a boost issue, the author fixed it pretty quick and I got it to compile with some extra flags on cmake:
cmake ../source \ -DOPENSSL_ROOT_DIR=$(brew --prefix openssl@3) \ -DCMAKE_CXX_COMPILER=$(which clang++) \ -DCMAKE_C_COMPILER=$(which clang) \ -DCMAKE_CXX_FLAGS="-isystem $(xcrun --show-sdk-path)/usr/include/c++/v1" \ -DCMAKE_OSX_SYSROOT=$(xcrun --show-sdk-path)
sdrtrunk
Trying sdrtrunk https://github.com/DSheirer/sdrtrunk/wiki/Getting-Started. I got it downloaded, and up and running. It failed to recognize the tuner:
2025-01-03 09:10:23.821 INFO i.g.d.s.t.m.TunerManager - Tuner: USB Tuner - RTL-2832 USB Bus:1 Port:1 - Added / Starting ... [481MB/1GB 24%] 2025-01-03 09:10:23.823 INFO i.g.d.s.t.m.DiscoveredTuner - Tuner Error - Stopping - RTL-2832 USB Bus:1 Port:1 Error: Can't set configuration (ie reset) on the USB tuner - LIBUSB_ERROR_NO_DEVICE [481MB/1GB 24%] 2025-01-03 09:10:23.823 INFO i.g.d.s.t.m.DiscoveredTuner - Stopping Tuner: RTL-2832 USB Bus:1 Port:1 [481MB/1GB 24%] 2025-01-03 09:10:23.823 ERROR i.g.d.s.t.m.DiscoveredUSBTuner - Unable to start tuner [RTL-2832] - error: Can't set configuration (ie reset) on the USB tuner - LIBUSB_ERROR_NO_DEVICE [481MB/1GB 24%] 2025-01-03 09:10:28.782 INFO i.g.d.s.t.ui.TunerEditor - Restarting RTL-2832 tuner [533MB/1GB 27%] 2025-01-03 09:10:28.783 INFO i.g.d.s.t.m.DiscoveredTuner - Tuner Error - Stopping - RTL-2832 USB Bus:1 Port:1 Error: Can't set configuration (ie reset) on the USB tuner - LIBUSB_ERROR_NO_DEVICE [533MB/1GB 27%] 2025-01-03 09:10:28.783 INFO i.g.d.s.t.m.DiscoveredTuner - Stopping Tuner: RTL-2832 USB Bus:1 Port:1 [533MB/1GB 27%] 2025-01-03 09:10:28.787 ERROR i.g.d.s.t.m.DiscoveredUSBTuner - Unable to start tuner [RTL-2832] - error: Can't set configuration (ie reset) on the USB tuner - LIBUSB_ERROR_NO_DEVICE [533MB/1GB 27%] 2025-01-03 09:15:05.752 INFO i.g.d.s.t.ui.TunerEditor - Disabling RTL-2832 tuner [1GB/1GB 52%] 2025-01-03 09:15:06.885 INFO i.g.d.s.t.ui.TunerEditor - Enabling RTL-2832 tuner [1GB/1GB 53%] 2025-01-03 09:15:06.885 INFO i.g.d.s.t.m.DiscoveredTuner - Tuner Error - Stopping - RTL-2832 USB Bus:1 Port:1 Error: Can't set configuration (ie reset) on the USB tuner - LIBUSB_ERROR_NO_DEVICE [1GB/1GB 53%]
Since it works in SDR++, I'm not sure what else to try. I did put the rules file in place (and confirm I can view it without sudo):
% ls /etc/udev/rules.d/ rtl-sdr.rules
If I was to try it again, I'd try building the program to make sure that the Java resources are correct. Looks like in bin is has the -arm version of usb4java but maybe I should have the -aarch version?
SDR++
- SDR++ user guide: https://www.sdrpp.org/manual.pdf
- cache
I got this up and running really easily!
Radioreferece
CoMIRS stuff:
https://www.radioreference.com/db/sid/7127
System Name: Commonwealth Of Massachusetts Interoperable Radio System (CoMIRS) Location: Regional, MA County: 8 Counties System Type: Project 25 Phase II System Voice: APCO-25 Common Air Interface Exclusive System ID: Sysid: D14 WACN: BEE00 Last Updated: October 23, 2024, 11:11 am UTC [Updated System Description Text] System Notes Massachusetts State Police operate two radio systems, an analog trunked system, heard east of the Connecticut River, and Mount Greylock, and a newly implemented digital system, which is slowly growing to cover the entire commonwealth.
Cities like Cambridge, Worcester, Boston, and special systems such as MassPort can only be heard on their respective closest systems
Talkgroups which begin with "6 - - - -" (i.e. 65102), and are five digits, are dynamic talkgroups that are assigned when another linked system's user has connected with the CoMIRS radio system. They are never permanent, despite how frequently they may occur.
Site | Name | County | Frequencies |
---|---|---|---|
026 (1A) | Warwick | Franklin | 851.200, 851.375c, 852.3125c, 852.475, 853.475c, 853.6375c |
Red (c) are control channel capable frequencies
And for franklin county:
DEC | HEX | Mode | Alpha Tag | Description | Tag |
---|---|---|---|---|---|
3699 | e73 | D | FranklinCty PD | FRCOG - Police Simulcast | Law Dispatch |
2300 | 8fc | D | FC-New Salem PD | New Salem PD Simulcast | Law Dispatch |
2302 | 8fe | D | FC-MtToby PD1 | Mount Toby 1 Simulcast | Law Dispatch |
2304 | 900 | D | FC-MtToby PD2 | Mount Toby 2 Simulcast | Law Dispatch |
2306 | 902 | D | FC-ShelburnePD1 | Shelburne PD - Simulcast | Law Dispatch |
3697 | e71 | D | FranklinCty FD | FRCOG - Fire Simulcast | Fire Dispatch |
2310 | 906 | D | FC-Fire Tones | FRCOG - Fire Tones | Fire Dispatch |
3701 | e75 | D | FC-Fire Ops 3 | Fire Ops 3 | Fire-Tac |
3703 | e77 | D | FC-Fire Ops 4 | Fire Ops 4 | Fire-Tac |
3705 | e79 | D | FC-Fire Ops 5 | Fire Ops 5 | Fire-Tac |
3707 | e7b | D | FC-Fire Ops 6 | Fire Ops 6 | Fire-Tac |
3709 | e7d | D | FC-Fire Ops 7 | Fire Ops 7 | Fire-Tac |
Franklin county:
https://www.radioreference.com/db/browse/ctid/1218 cache
Frequency | License | Type | Tone | Alpha Tag | Description | Mode | Tag |
---|---|---|---|---|---|---|---|
460.400 | WQDL962 | RM | 173.8 PL | Frnk Cnty FD | Fire Countywide Operations | FMN | Fire Dispatch |
453.100 | RM | RM | 206.5 PL | BoMt Fire | Borden Mountain Tower Fire WMLEC Tie | FMN | Fire-Talk |
453.150 | RM | RM | 206.5 PL | Mt.Grace FD | Mount Grace Tower Fire WMLEC Tie | FMN | Fire-Talk |
460.1875 | RM | RM | 156.7 PL | Mt Toby FD | Mount Toby Fire Tower | FMN | Fire-Tac |
453.1125 | M | M | 156.7 PL | Frnkln TAC-1 | Franklin County TAC-1 | FMN | Multi-Tac |
453.8875 | M | M | 156.7 PL | Frnkln TAC-2 | Franklin County TAC-2 | FMN | Multi-Tac |
453.9125 | M | M | 156.7 PL | Frnkln TAC-3 | Franklin County TAC-3 | FMN | Multi-Tac |
458.0375 | M | M | 156.7 PL | Frnkln TAC-4 | Franklin County TAC-4 | FMN | Multi-Tac |
458.1125 | M | M | 156.7 PL | Frnkln TAC-5 | Franklin County TAC-5 | FMN | Multi-Tac |
458.9125 | M | M | 156.7 PL | Frnkln TAC-6 | Franklin County TAC-6 | FMN | Multi-Tac |
Shutesbury:
Frequency | License | Type | Tone | Alpha Tag | Description | Mode | Tag |
---|---|---|---|---|---|---|---|
155.745 | WPNT575 | RM | 146.2 PL | Shutsbry DPW | Public Works | FMN | Public Works |
Scan New England
CoMIRS
- https://www.snewiki.com/wiki/index.php/Massachusetts_Commonwealth_Interoperability_Radio_System
- cache
CoMIRS - Commonwealth of Massachusetts Interoperability Radio System
Motorola P25 Phase I (FDMA)/Phase II (TDMA) hybrid system. System ID: D14 WACN: BEE00 NAC: Multiple - NAC Varies by Site Massachusetts P25 trunked system. For the Massachusetts State Police Analog system primary page, click here To convert the P25 talkgroup to see if it matches an "analog" talk group, multiply the TG by 16. (i.e. 2209*16=35344) Sites have had analog emissions designators added to their FCC licenses, and may be mixed use. To see a list of ALL TALK GROUPS used on the CoMIRS system, including on the campus sites (Cambridge, Worcester, etc.), please Click Here
For "Warwick" frequencies:
Frequency | Usage | Latest Confirmation |
---|---|---|
853.6375 | Control Channel | 2023.03.07 cg |
853.4750 | Control Channel | 2023.03.07 cg |
852.3125 | Control Channel | 2023.03.07 cg |
851.3750 | Control Channel | 2023.03.07 cg |
851.2000 | Voice | 2023.03.07 cg |
Franklin County talk groups:
- Operations channels are available to police and fire agencies.
- The 22xx and 23xx Talk Groups may be inactive as they were used for system capacity testing.
Talkgroup ID | Encrypted | Notes | Confirmation/ReConfirmation |
---|---|---|---|
3697 | No | Franklin County Fire Simulcast w/ 460.4000 | 2024.03.31 W1KNE |
3699 | No | Franklin County Police Simulcast w/ 460.3500 | 2024.03.31 W1KNE |
3701 | No | Operations 3 | 2023.04.21 cg |
3703 | No | Operations 4 | 2023.04.21 cg |
3705 | No | Operations 5 | 2023.04.21 cg |
3707 | No | Operations 6 | 2023.04.21 cg |
3709 | No | Operations 7 | 2023.04.21 cg |
2577 | No | Greenfield Fire | 2022.11.05 W1KNE |
2579 | No | Greenfield PD patch w/ 460.5250 | 2022.11.05 W1KNE |
2585 | No | Orange Fire | 2022.06.04 W1KNE |
2587 | No | Orange PD - Patched with analog TG | 2023.04.15 sawyer1002 |
2583 | No | Montague Police | 2023.04.15 sawyer1002 |
2581 | No | TF Fire (Part of Montague) | 2023.04.15 sawyer1002 |
2298 | No | Franklin Cty Montague patch w/ 453.4875 | 2020.02.24 cg |
2300 | No | Franklin Cnty New Salem 1 patch w/ 453.2875 | |
2302 | No | Franklin Cty Toby 1 patch w/ 460.1875 | 2020.02.24 cg |
2304 | No | Franklin Cty Toby 2 patch w/ 460.6000 | 2020.03.02 ghoward02 |
2306 | No | Franklin Cty Shelburne 1 patch w/ 453.4750 | 2020.02.24 cg |
2314 | No | Franklin Cty Colrain 1 patch w/ 453.4250 | 2020.03.09 ghoward02 |
2316 | No | Franklin Cty Erving 1 patch w/ 453.2625 | 2020.03.09 ghoward02 |
2317 | No | Franklin Cty Charlemont patch w/ 460.5500 | 2020.03.15 ghoward02 |
For the analog, it would be 3697*16 = 59152 So it's actually the analog system, not digital.
Analog system
This page is for the legacy analog system. This system is slowly being replaced by CoMIRS (Mass. State Police P25 System) Along with the two trunks, Massachusetts State Police use several conventional frequencies, including the former low band channels. System ID: 0D14 P25 voice channels use N144 (Hex), 324 (Dec). Users should attempt to program the Simulcast sites for reception of most Talkgroups IntelliRepeaters are used for limited coverage/fill in of coverage sites and not all Talkgroups maybe heard. This page gets built by viewers like you. Please submit data and corrections.
Zone 15 Warwick IntelliRepeater Mount Grace, Warwick. (Franklin County) Licenses WPMG792
Frequency | Note | Confirmation/Reconfirmation |
---|---|---|
854.0875 | CC & Voice | 2023.03.07 cg |
854.6125 | CC & Voice | 2023.03.07 cg |
856.9875 | Voice and P25 | 2023.03.07 cg |
857.9125 | Voice and P25 | 2023.03.07 cg |
859.7125 | Voice and P25 | 2023.03.07 cg |
859.9875 | Voice |
Franklin County Towns part of the FRCOG radio system. These TGs may be patched with their CoMIRS counterpart.
Talkgroup | ID | Encrypted | Notes | Confirmation/ReConfirmation |
---|---|---|---|---|
FC FD Simulcast 1 | 59152 | No | Franklin County Fire Simulcast w/ 460.4000 | 2023.08.09 GaryS |
FC PD Simulcast 1 | 59184 | No | Franklin County Police Simulcast w/ 460.3500 | 2024.03.31 W1KNE |
Franklin County | 59216 | No | Operations 3 | 2022.06.01 ecps92 |
Franklin County | 59248 | No | Operations 4 | 2023.04.15 sawyer100 |
Franklin County | 59280 | No | Operations 5 | 2023.04.15 sawyer100 |
Franklin County | 59312 | No | Operations 6 | 2023.04.15 sawyer100 |
Franklin County | 59344 | No | Operations 7 | 2023.04.15 sawyer100 |
Greenfield FD | 41232 | No | Greenfield Fire | 2023.04.15 sawyer100 |
Greenfield PD | 41264 | No | Greenfield PD patch w/ 460.5250 | 2023.04.15 sawyer100 |
Orange FD | 41360 | No | Orange Fire | 2022.06.07 ecps92 |
Orange PD | 41392 | No | Orange PD - Patched with analog TG 36656 | 2024.11.11 GraniteScanner |
Montague Police | 41328 | No | Montague Police | 2023.04.15 sawyer100 |
Turner's Falls Fire | 41296 | No | TF Fire (Part of Montague) | 2023,04.15 sawyer100 |
TwoToneDetect
Backlinks: Software Heroes: Episode 1
Python tool to detect tones from an audio source and send notifications, by Andy Knitt. See more on the blog.
I wanted to see the code, looks like it's fundamentally just two python scripts. From version 70, it's based on Python 2.7. It's not open source, the author notes in the forum that he provided the source code at some point, and on the download site:
TwoToneDetect is free for personal and noncommercial use by public safety agencies and organizations. If you’d like to use the program for commercial purposes, please contact me.
Version 70 includes pushover but apparently that has been removed (since now IaR is paying the bills?). Since it's free for personal use, I wanted to see if I can adapt the scripts for my own use and just to learn about radio. It's possible as follows:
strings TwoToneDetect70 | grep -i python looks like 2.7 git clone https://github.com/extremecoders-re/pyinstxtractor ~/.pyenv/versions/2.7.18/bin/python pyinstxtractor/pyinstxtractor.py TwoToneDetect70 ~/.pyenv/versions/2.7.18/bin/pip install uncompyle6 cd TwoToneDetect70_extracted ~/.pyenv/versions/2.7.18/bin/uncompyle6 TwoToneDetect70.pyc > TwoToneDetect70.py ~/.pyenv/versions/2.7.18/bin/uncompyle6 out00-PYZ.pyz_extracted/TTD70.pyc > out00-PYZ.pyz_extracted/TTD70.py
If you look in the TwoToneDetect70_extracted
folder,
this software actually includes GNU Readline,
so technically the source codes needs to be provided (and the software needs to
be licensed under GPL).
I won't go so far to push these scripts to github,
but you can follow the above steps if you want.
TODO Setup a Pushover version off the 800 digital locally
Use one of the P25 decoders and a python script to send alerts to pushover for myself. Could configure later to more home automations.
IaR source code
The terms and conditions on IaR's site expressly forbid inspecting the binary, but I figured I'd ask if they'd provide the source code. Good chance that their code, just a new version of the above, contains the same library and they should provide the source code.
But instead my request resulted with a threat…and while I can't actually check whether their code contains GPL due to the license, I suspect it does. Perhaps someone should check, like the FSF. Here's the exchange:
ADS-B
Setup:
- XRDS -RF KMR400 SMA to N Cable 6ft, N-Male to SMA-Male Connector Low Loss Extension Cable 50 Ohm SMA Cable for 3G/4G/5G/LTE/ADS-B/Ham/GPS/WiFi/RF Radio to Antenna Use Purchased Dec 27 2024 for $15.99, amazon link
- 5.5dBi 1090/978 N-Type Female Antenna - 26-inch by ADSBexchange Purchased Dec 27 2024 for $44.95, amazon link
- FlightAware Band Pass Signal Filter, Dual 978-1090 MHz, Dec 27 2024
- FlightAware Pro Stick, with bandpass total is $77.78 USD, Dec 27 2024
Goals:
- Dashboard so I can see what's coming off the antennae
- Feed various online services for fun
Attic placement sounds like it generally works well, but outside is best. Maybe worth optimizing the antennae location once I have the software up and running to my liking.
1090 vs 978
All of the equipment I got tracks both, and with a local airport nearby I wanted to try out the 978.
You would think I could just switch (tuning the SDR to each frequency every few seconds), but the software doesn't seem to support this well.
TODO setup feed to FlightAware
Set this up on the old Linux macbook.