Skip to content

Examples of config.json

Brett edited this page Feb 27, 2020 · 4 revisions

Below is a listing of various config.json examples. Each example will have a quick synopsis to what it is configured for. No single configuration below will match what you may need/desire for the system(s) that you wish to monitor!

SDR Array

This config defines numerous RTL-SDR's to monitor a system with a large swath of spectrum. The RTL-SDR's are configured at 2.4MHz, or 2400000. Both sides from center frequency are 1.2MHz. To get the 'step-up' or 'step-down' center frequency for the next RTL-SDR, just take your lowest frequency on the system, and add the RTL-SDR's total frequency (2.4) to the center of the previous RTL-SDR. The lazy way of doing this is by taking the center 851000000 then adding the rate 2400000 to the center: 851000000+2400000 = 853400000. You can see this in the SDR array below.

In doing this method, you will need to ensure:

  1. No voice or control frequency is extremely-near or in the center frequency (DC issue).
  2. and drift has been accounted for via PPM or error settings.
{
        "sources": [{
                        "center": "851000000",
                        "rate": "2400000",
                        "error": "900",
                        "ppm": "0",
                        "gain": "28",
                        "digitalRecorders": 6,
                        "digitalLevels": 8,
                        "driver": "osmosdr",
                        "device": "rtl=06",
                        "modulation": "qpsk"
        },{
                        "center": "853400000",
                        "rate": "2400000",
                        "error": "900",
                        "ppm": "0",
                        "gain": "28",
                        "digitalRecorders": 6,
                        "digitalLevels": 8,
                        "driver": "osmosdr",
                        "device": "rtl=04,buffers=16",
                        "modulation": "qpsk"
        },{
                        "center": "855800000",
                        "rate": "2400000",
                        "error": "600",
                        "ppm": "0",
                        "gain": "28",
                        "digitalRecorders": 6,
                        "digitalLevels": 8,
                        "driver": "osmosdr",
                        "device": "rtl=09",
                        "modulation": "qpsk"
        },{
                        "center": "858200000",
                        "rate": "2400000",
                        "error": "1200",
                        "ppm": "0",
                        "gain": "20.7",
                        "digitalRecorders": 6,
                        "digitalLevels": 8,
                        "driver": "osmosdr",
                        "device": "rtl=03",
                        "modulation": "qpsk"
        },{
                        "center": "860600000",
                        "rate": "2400000",
                        "error": "100",
                        "ppm": "0",
                        "gain": "20.7",
                        "digitalRecorders": 6,
                        "digitalLevels": 8,
                        "driver": "osmosdr",
                        "device": "rtl=02",
                        "modulation": "qpsk"
        }],
        "systems": [{
                        "control_channels": [853775000],
                        "type": "p25",
                        "talkgroupsFile": "/root/trunk-build/talkgroups.csv",
                        "recordUnknown": false,
                        "shortName": "ChangeMe",
                        "callLog": true,
                        "hideEncrypted": false,
                        "hideUnknownTalkgroups": false
        }],
        "defaultMode": "digital",
        "captureDir": "/root/trunk-build/audio_files",
        "callTimeout": "3",
        "logFile": "1",
        "frequencyFormat": "mhz"
}

HackRF

The HackRF config is likely to be interchangeable to other large-spectrum-covering devices by simply changing the device property.

With the HackRF, and likely with others such as LimeSDR, the rate can be anywhere from 1MSPS to 20MSPS (Maximum on HackRF) or even 61MSPS (on the LimeSDR) - yes, that's 61MHz of spectrum!

In the example below, the HackRF is running with a center frequency of 855.000MHz, covering 5MHz of spectrum to the left of center, and 5MHz to the right of center - for a total of 10MHz. The HackRF natively has a very low SNR, so we need to use ifGain and bbGain and bump up the signals. This is a balancing act and varies per system power emitted vs your distance from the site. Normal gain does not function with a HackRF as seen on SDR# and GQRX.

{
        "sources": [{
                        "center": "855000000",
                        "rate": "10000000",
                        "error": "0",
                        "ppm": "18",
                        "gain": "0",
                        "ifGain": "8",
                        "bbGain": "40",
                        "digitalRecorders": 15,
                        "digitalLevels": 8,
                        "driver": "osmosdr",
                        "device": "hackrf=56b35f",
                        "modulation": "qpsk"
        }],
        "systems": [{
                        "control_channels": [853775000,853962500],
                        "type": "p25",
                        "talkgroupsFile": "/root/trunk-build/talkgroups.csv",
                        "recordUnknown": false,
                        "shortName": "ChangeMe",
                        "callLog": true,
                        "hideEncrypted": false,
                        "hideUnknownTalkgroups": false
        }],
        "defaultMode": "digital",
        "captureDir": "/root/trunk-build/audio_files",
        "callTimeout": "3",
        "logFile": "1",
        "frequencyFormat": "mhz"
}

HackRF with multiple systems

Much like the example above, this just covers multiple P25 systems from a single HackRF device.

{
        "sources": [{
        "center": "855000000",
        "rate": "12500000",
        "ppm": "0",
        "ifGain": "8",
        "bbGain": "40",
        "digitalRecorders": "30",
        "modulation": "qpsk",
        "driver": "osmosdr",
        "device": "hackrf=56b35f"
    }],
    "systems": [{
        "control_channels": [853775000],
        "type": "p25",
        "talkgroupsFile": "SystemOneTalkgroups.csv",
        "shortName": "SystemOne",
        "callLog": "true",
        "recordUnknown": "true"
    },{
        "control_channels": [852112500],
        "type": "p25",
        "talkgroupsFile": "SystemTwoTalkgroups.csv",
        "shortName": "SystemTwo",
        "callLog": "true",
        "recordUnknown": "true"
    },{
        "control_channels": [856662500],
        "type": "p25",
        "talkgroupsFile": "SystemThreeTalkgroups.csv",
        "shortName": "SystemThree",
        "callLog": "true",
        "recordUnknown": "true"
    }],
	"captureDir": "/root/trunk-build/audio_files",
	"defaultMode": "digital",
	"callTimeout": "3",
	"logFile": "1",
	"frequencyFormat": "mhz"
}