OP25 OP25 control channel logging

Status
Not open for further replies.

etherxrally

Member
Joined
Sep 16, 2012
Messages
8
Does OP25 have the capability now to decode and output control channel data to file? I was looking at this https://www.viavisolutions.com/en-u...logging-discontinued-application-notes-en.pdf and figured something similar might be possible with OP25 but I'm not sure how in depth OP25 goes into decoding control channels. I have mainly used it to listen to audio so I'm not as knowledgeable about its control channel capabilities. I was thinking a structured data output like JSON would be nice and could be feed into something like ELK stack or Splunk.
 

NebraskaCoder

Member
Joined
Oct 26, 2016
Messages
325
Location
Omaha, NE
At this point, it is limited to the verbose error logs (then you redirect it to a file), but I'm not sure if it is in the format you want it in. I'm hoping to have time some day to dive into the code and fork a project that does more with the CC data.
 

etherxrally

Member
Joined
Sep 16, 2012
Messages
8
There must be some sort of under the hood work going on because OP25 is able to trunk so its looking into the data to some degree. It must just be focused on the minimum to make the basic functionality work. Anybody know where is OP25 code, its grabbing this from? maybe it could be expanded at the same spot. I would assume there is some function that is parsing the data, finding the field or fields it needs and processing and leaving the other stuff alone.
 

NebraskaCoder

Member
Joined
Oct 26, 2016
Messages
325
Location
Omaha, NE
When running rx.py, the -v needs to be above 10 such as -v 11
I haven't used multi_rx.py yet but you need to set the debug / verbosity above 10
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,339
Location
Talbot Co, MD
Does OP25 have the capability now to decode and output control channel data to file? I was looking at this https://www.viavisolutions.com/en-u...logging-discontinued-application-notes-en.pdf and figured something similar might be possible with OP25 but I'm not sure how in depth OP25 goes into decoding control channels. I have mainly used it to listen to audio so I'm not as knowledgeable about its control channel capabilities. I was thinking a structured data output like JSON would be nice and could be feed into something like ELK stack or Splunk.
Yes.

OP25 (boatbod repo) has the capability to demodulate a channel and save raw dibit symbols to a file and these can later be replayed into op25 as if they were received from the air. It can also playback DSD .WAV and .IQ captures also this can sometimes require a little more seup/configuration to make it work properly.

Decoding the control channel into text messages and parameters is also possible by turning the regular logging up to "-v 11".
 

hrh17

Member
Joined
Mar 4, 2015
Messages
144
Location
.
Ohh I must have missed that update of op25 being able to decode wav files. I'll be testing this out ASAP thanks boatbod
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,339
Location
Talbot Co, MD
Ohh I must have missed that update of op25 being able to decode wav files. I'll be testing this out ASAP thanks boatbod
Caveat - it only works with multi_rx.py and you need to set the config up correctly, so study the example in the distro calld "wav_example.json".
Here is one that I used while working on the tdma cc stuff. Note the wav_gain parameter has to be cranked up quite a bit!
Code:
{
    "channels": [
        {
            "name": "Playback", 
            "device": "sdr0",
            "trunking_sysname": "tkwav",
            "demod_type": "cqpsk", 
            "destination": "udp://127.0.0.1:23446", 
            "meta_stream_name": "",
            "excess_bw": 0.2, 
            "filter_type": "rc", 
            "if_rate": 24000, 
            "plot": "",
            "symbol_rate": 4800,
            "enable_analog": "off",
            "whitelist": "",
            "blacklist": ""
        }
    ], 
    "devices": [
        {
            "args": "wavsrc", 
            "wav_file": "/home/gnorbury/Downloads/tdmacc/Beeville-42-1R-DSDPlus-Raw-Input_2021-07-21@214754.wav",
            "wav_gain": 14.1,
            "gains": "", 
            "name": "sdr0", 
            "ppm": 0.0, 
            "tunable": false
        }
    ],
    "trunking": {
        "module": "tk_p25.py",
        "chans": [
            {
                "nac": "0x0",
                "sysname": "tkwav",
                "control_channel_list": "800.000000",
                "whitelist": "",
                "tgid_tags_file": "",
                "tdma_cc": true,
                "crypt_behavior": 0
            }
        ]
    },
    "metadata": {
        "module": "icemeta.py",
        "streams": [
            {
                "stream_name": "",
                "meta_format_idle": "[idle]",
                "meta_format_tgid": "[%TGID%]",
                "meta_format_tag":  "[%TGID%] %TAG%",
                "icecastServerAddress": "",
                "icecastMountpoint": "",
                "icecastMountExt": ".xspf",
                "icecastPass": "",
                "delay": 0.0
            }
        ]
    },
    "audio": {
        "module": "sockaudio.py",
        "instances": [
            {
                "instance_name": "audio0",
                "device_name": "pulse",
                "udp_port": 23446,
                "audio_gain": 1.0,
                "number_channels": 1
            }
        ]
    },
    "terminal": {
        "module": "terminal.py",
        "terminal_type": "curses",
        "curses_plot_interval": 0.1,
        "http_plot_interval": 1.0,
        "http_plot_directory": "../www/images",
        "tuning_step_large": 1200,
        "tuning_step_small": 100
    }
}
 
Status
Not open for further replies.
Top