nd5y

Member
Joined
Dec 19, 2002
Messages
12,628
Reaction score
4,980
Location
Wichita Falls, TX
A is normal/allowed, B blocks, and DE marks encrypted/locked out.
What happens if your TG list is all set to A and a new TG appears?


It was working for a while on 3 different systems but I think something broke or this is just more AI slopware.
 

arancormonk

DSD-neo | mbelib-neo
Joined
Dec 12, 2025
Messages
58
Reaction score
73
What happens if your TG list is all set to A and a new TG appears?


It was working for a while on 3 different systems but I think something broke or this is just more AI slopware.

Can you provide a log or something that can at least point me in the general direction of where the problem is?

And yes, you caught me, my goal with dsd-neo is to see how far I can push modern tools while having a 15+ YoE MSEE at the helm. I wish I had the time to do everything by hand while earning exactly $0.00, but honestly, the spec, process, and rules in my head are what matter more. This is literally my form of playing video games and I'm the only user that matters in the end. So to each their own, but I'd definately encourage you to use other software.
 

nd5y

Member
Joined
Dec 19, 2002
Messages
12,628
Reaction score
4,980
Location
Wichita Falls, TX
Can you provide a log or something that can at least point me in the general direction of where the problem is?
Where would logs be? I don't see any dsd-neo log files in my home folder or /var/log.

I made 3 sets of ini, groups and channels files for 3 different systems. They all have names reflecting their system. The ini files point to the proper locations of the groups and channels files. I made .desktop files with --config paths to the ini files. It worked OK but later when I tried it I was seeing TG activity but no audio. Not sure why. It might be a linux audio or RTL-SDR issue. I will try again from scratch tonight or tomorrow.

My local city system is a Harris P25 phase II simulcast. The others are military bases with Motorola and Harris P25 Phase I non-simulcast systems. One of those is 60 miles away and weak but it worked. I don't know if I need to try different settings for those.

There are a lot of menu options and settings but the ini file doesn't seem to contain that much data. I don't know if everything is being saved when I force it to Save Config (Current ) or Save Config As...

All I want groups for is to show the TG names, not receiving only whitelisted TGs or locking out certain TGs. I don't know if that's possible. The two Harris systems send RID aliases over the air and that was working earlier.

In the ini file I set rtl_freq to the current CC freq and that worked but sometimes it got changed to 850000000. I made a list of the system channels starting with 1 in the format 1,85596250 but I don't know if it is actually using that or only rtl_freq.
 

arancormonk

DSD-neo | mbelib-neo
Joined
Dec 12, 2025
Messages
58
Reaction score
73
Where would logs be? I don't see any dsd-neo log files in my home folder or /var/log.

I made 3 sets of ini, groups and channels files for 3 different systems. They all have names reflecting their system. The ini files point to the proper locations of the groups and channels files. I made .desktop files with --config paths to the ini files. It worked OK but later when I tried it I was seeing TG activity but no audio. Not sure why. It might be a linux audio or RTL-SDR issue. I will try again from scratch tonight or tomorrow.

My local city system is a Harris P25 phase II simulcast. The others are military bases with Motorola and Harris P25 Phase I non-simulcast systems. One of those is 60 miles away and weak but it worked. I don't know if I need to try different settings for those.

There are a lot of menu options and settings but the ini file doesn't seem to contain that much data. I don't know if everything is being saved when I force it to Save Config (Current ) or Save Config As...

All I want groups for is to show the TG names, not receiving only whitelisted TGs or locking out certain TGs. I don't know if that's possible. The two Harris systems send RID aliases over the air and that was working earlier.

In the ini file I set rtl_freq to the current CC freq and that worked but sometimes it got changed to 850000000. I made a list of the system channels starting with 1 in the format 1,85596250 but I don't know if it is actually using that or only rtl_freq.
A means normal/allowed in the group CSV. It does not automatically make the file a whitelist.

If allow_list = false, or the UI says Black List Mode, the group file can be used mainly for TG names. A new unknown TG should still be followed and played, but it will show without a name.

If allow_list = true, -W, or the UI says White List Mode, then only TGs listed in the group file are followed. A new TG may show activity, but it will not tune/play audio until you add it to the group CSV as TG,A,Name.

For what you want, use something like this:

Code:
[trunking]
enabled = true
group_csv = "/full/path/to/groups.csv"
allow_list = false

Keep named TGs as A. Do not use B or DE unless you actually want to block/mute those TGs.

DSD-neo does not create normal log files in $HOME or /var/log by default. Normal messages go to stderr. If running with the ncurses UI, stderr is suppressed unless you redirect it before startup.

Start it like this if you want a log file:

Code:
dsd-neo --config /full/path/system.ini -N -T 2> ~/dsd-neo-system.log

For a .desktop launcher, use a shell if you want redirection:

Code:
Exec=sh -c '/full/path/dsd-neo --config /full/path/system.ini -N -T 2>> "$HOME/dsd-neo-system.log"'

There are also optional logs you can configure:

Code:
[logging]
event_log = "/full/path/events.log"
frame_log = "/full/path/frames.log"

event_log is usually the useful one for call/event history. frame_log is more detailed/debug-oriented.

Your separate config files approach is fine. Use absolute paths everywhere: the .desktop file, the .ini file, group_csv, and chan_csv. Relative paths can break because a .desktop launcher may start the program from a different working
directory.

Also, if your .desktop command uses --config ... -N or any other CLI flags, include -T for trunking. Otherwise trunking inherited from the config may be disabled for that run.

If you see TG activity but no audio, first check:

1. Make sure you are not in whitelist mode unless you really want that.
2. Make sure output is not null and PulseAudio/PipeWire is not muted or using the wrong sink.
3. Make sure the TG is not encrypted.
4. Make sure group/private/encrypted call following is enabled in the UI.
5. For P25 trunking, make sure it is actually retuning to the voice channel.

For P25 systems, rtl_freq should be the current control channel frequency. The channel CSV is used for channel/frequency mapping and control-channel hunting, but rtl_freq is the predictable startup frequency.

Watch the units in the channel CSV: it must be Hz. For 855.9625 MHz, use:

Code:
ChannelNumber(dec),frequency(Hz)
1,855962500

not 85596250, which is only 85.596250 MHz.

For P25 Phase II trunking, use a mode that includes the P25 Phase I control channel plus P25 Phase II voice. In the config, use:

Code:
[mode]
decode = "tdma"

For a known simulcast/LSM/CQPSK site, try forcing QPSK:

Code:
[mode]
decode = "tdma"
demod = "qpsk"

or on the command line:

Code:
dsd-neo --config /full/path/system.ini -N -T -mq

The code can try to auto-switch between C4FM and QPSK, but forcing QPSK is often simpler when you know the site is simulcast. For the Phase I non-simulcast systems, do not force -mq; start with p25p1 or leave demod auto/C4FM.

If rtl_freq changes to 850000000, that is the built-in RTL default. That usually means the config was not loaded, rtl_freq was missing, or the current live/default frequency was saved back to the config.

Validate and inspect with:

Code:
dsd-neo --validate-config /full/path/system.ini
dsd-neo --config /full/path/system.ini --print-config

Save Config does not save every possible UI/runtime setting. It saves the supported config fields: input, output, mode, trunking CSVs/options, logging, alerts, and recording. Some live UI/debug/DSP state is not persisted.
 

nd5y

Member
Joined
Dec 19, 2002
Messages
12,628
Reaction score
4,980
Location
Wichita Falls, TX
It's working great now on the local system. I think the main problem was I had allow_list true instead of false and the talkgroup list was messed up.

I had decode = "auto" and that worked earlier but I set decode = "tdma" and demod = "qpsk" and it still works.

I poted the wrong frequency here. In the file it was really 9 digits in Hz. I think one time I had the RTL-SDR unplugged and maybe that messed up everything.

Thanks for your help.
 

nd5y

Member
Joined
Dec 19, 2002
Messages
12,628
Reaction score
4,980
Location
Wichita Falls, TX
This may be another problem that I didn't even think of the other day. The Harris P25 phase II system here will sometimes have some talkgroups in phase I for hours at a time. If the program is set to -ft -mq I don't know if it works when phase I FDMA talkgroups show up.
 

arancormonk

DSD-neo | mbelib-neo
Joined
Dec 12, 2025
Messages
58
Reaction score
73
Was going to ask the same. Have a system that's both p1 and p2.

This may be another problem that I didn't even think of the other day. The Harris P25 phase II system here will sometimes have some talkgroups in phase I for hours at a time. If the program is set to -ft -mq I don't know if it works when phase I FDMA talkgroups show up.
I run it all the time with harris p1/2 simulcast system... I live in the middle of nowhere, so it's the only live system I can test...and literally the only reason I started this project.

Code:
dsd-neo -i rtl:0:769.76875M:9:-2:48:0:2:bias -mq -T --enc-lockout -N

Those switches are all you need (assuming you want ncurses and encryption lockout).
 

nd5y

Member
Joined
Dec 19, 2002
Messages
12,628
Reaction score
4,980
Location
Wichita Falls, TX
Does this look normal?
Code:
--Input Output--------------------------------------------------------------------------------------
| RTL: 0; G: 28dB; Mon: 2X; PPM: 0; SQL: -50.0 dB; PWR: -31.4 dB; DSP-BW: 48 kHz; FRQ: 855962500;
| Auto PPM: Locked (PPM: 0)
| Pulse Digital Output: 8 kHz; 2 Ch; G: 13% G: 30% (+|-) Auto   HPF
| Trunking - Group(g) Private(u) Data(d) Encrypted(e) Calls - Black List Mode
----------------------------------------------------------------------------------------------------
--RTL-SDR Visual Aids-------------------------------------------------------------------------------
| Const View:  Off (O)  Eye: Off (E)  Hist: Off (K)  Spec: Off (f)
----------------------------------------------------------------------------------------------------
--Audio Decode--------------------------------------------------------------------------------------
| Tuner state:  Free
| Demod/Rate:   [QPSK][4800]
| Decoding:     [AUTO]  SNR: 27.7 dB  ▁▂▃▄▅ (QPSK)
| Output (x):   [On]
| Slot 1 (1):   [On]
| Slot 2 (2):   [On]
----------------------------------------------------------------------------------------------------
 

arancormonk

DSD-neo | mbelib-neo
Joined
Dec 12, 2025
Messages
58
Reaction score
73
Does this look normal?
Code:
--Input Output--------------------------------------------------------------------------------------
| RTL: 0; G: 28dB; Mon: 2X; PPM: 0; SQL: -50.0 dB; PWR: -31.4 dB; DSP-BW: 48 kHz; FRQ: 855962500;
| Auto PPM: Locked (PPM: 0)
| Pulse Digital Output: 8 kHz; 2 Ch; G: 13% G: 30% (+|-) Auto   HPF
| Trunking - Group(g) Private(u) Data(d) Encrypted(e) Calls - Black List Mode
----------------------------------------------------------------------------------------------------
--RTL-SDR Visual Aids-------------------------------------------------------------------------------
| Const View:  Off (O)  Eye: Off (E)  Hist: Off (K)  Spec: Off (f)
----------------------------------------------------------------------------------------------------
--Audio Decode--------------------------------------------------------------------------------------
| Tuner state:  Free
| Demod/Rate:   [QPSK][4800]
| Decoding:     [AUTO]  SNR: 27.7 dB  ▁▂▃▄▅ (QPSK)
| Output (x):   [On]
| Slot 1 (1):   [On]
| Slot 2 (2):   [On]
----------------------------------------------------------------------------------------------------

Looks like it's working to me, the code knows to intelligently switch sps/timing between p1 and p2.

Does the squelch level do anything when running on a trunked system?

Not really, all the demod is in the symbol domain now using the rtl/sdr inputs. I have it set to pause the demod pipeline when the squelch is closed, but I typically run all the time with it open (default). Only place it does something is with analog monitor or edacs voice channels.
 

dispatchgeek

Control channel goes "brrrrr"
Joined
Feb 29, 2004
Messages
461
Reaction score
476
Location
Between the cornfields and the pastures, Michigan.
This is literally my form of playing video games and I'm the only user that matters in the end. So to each their own, but I'd definately encourage you to use other software.
This makes me incredibly happy to see your attitude surrounding this project. I can’t count how many times I’ve watched the radio community literally bludgeon free radio software to death between criticism of the dev and burnout over feature creep. I want to support this and I want to ask for enhancements. I also have no programming chops and don’t want to burn out the dev.

This post is not criticizing the other respondents, just glad that you have a motivation in place that places your needs first.
 

arancormonk

DSD-neo | mbelib-neo
Joined
Dec 12, 2025
Messages
58
Reaction score
73
@arancormonk - the Lockout slot 1 or 2 function in the terminal ui- does that lockout the talkgroup or the whole slot? Is it persistent between sessions or does it reset at some point?
Yeah, the wording there is a little misleading. The plain 1/2 keys toggle the actual slot audio on/off, and that’s what the Off/On indicator next to the slot is showing.

The !/@ lockout keys don’t disable the whole timeslot. They use slot 1 or slot 2 only to pick which currently-seen TG to lock out. So if TG 1234 is active on slot 2 and you hit @, it locks out TG 1234, not all of slot 2.

It applies immediately in the running session. It also tries to append that lockout to the group CSV if one is configured, so it can survive restarts. One caveat: if that TG already exists earlier in the CSV, the older row may still
win on the next import, so manually cleaning/updating the CSV is the safest way to make it permanent.

The UI/docs would probably be clearer as “Lock out current TG from slot 1/2” instead of “Lock out slot 1/2.”
 

dispatchgeek

Control channel goes "brrrrr"
Joined
Feb 29, 2004
Messages
461
Reaction score
476
Location
Between the cornfields and the pastures, Michigan.
I am running into an issue where it runs well for probably 20 to 30 minutes and then one of two things happen.
1. Signal box turns blue, still shows a very useable SNR but doesn't decode the P25P1 control channel.
2. Signal box stays green, but SNR meter shows N/A.

Restarting the RTL stream from the menu can sometimes get it going again for a few minutes.

If this is a bug and not a screw up on my part, I'll move it over to github. I am running windows, so I'll need to figure out how to dump logging.

My config, monitoring a simulcast cell on 853.725. I could dial the gain down to 40 with a still useable SNR.

Code:
version = 1

[input]
source = "rtl"
rtl_device = 0
rtl_freq = "853725000"
rtl_gain = 49
rtl_ppm = 1
rtl_bw_khz = 48
rtl_sql = -120
rtl_volume = 3
auto_ppm = true

[output]
backend = "pulse"
pulse_sink = "Headphones (Realtek USB2.0 Audi"
ncurses_ui = true

[mode]
decode = "p25p1"
demod = "qpsk"

[trunking]
enabled = true
group_csv = "c:\mpscs.csv"
allow_list = true
tune_group_calls = true
tune_private_calls = true
tune_data_calls = false
tune_enc_calls = false

[logging]

[alerts]
enabled = false
voice_start = true
voice_end = true
data = true

[recording]
per_call_wav = false
per_call_wav_dir = "C:\RadioApps\dsdneo\calls"
rdio_mode = "dirwatch"
rdio_system_id = 1942
rdio_api_url = "http://127.0.0.1:3000"
rdio_upload_timeout_ms = 5000
rdio_upload_retries = 1
rdio_api_delete_after_upload = false

[dsp]
iq_balance = false
iq_dc_block = false
 

arancormonk

DSD-neo | mbelib-neo
Joined
Dec 12, 2025
Messages
58
Reaction score
73
I am running into an issue where it runs well for probably 20 to 30 minutes and then one of two things happen.
1. Signal box turns blue, still shows a very useable SNR but doesn't decode the P25P1 control channel.
2. Signal box stays green, but SNR meter shows N/A.

Restarting the RTL stream from the menu can sometimes get it going again for a few minutes.

If this is a bug and not a screw up on my part, I'll move it over to github. I am running windows, so I'll need to figure out how to dump logging.

My config, monitoring a simulcast cell on 853.725. I could dial the gain down to 40 with a still useable SNR.

Code:
version = 1

[input]
source = "rtl"
rtl_device = 0
rtl_freq = "853725000"
rtl_gain = 49
rtl_ppm = 1
rtl_bw_khz = 48
rtl_sql = -120
rtl_volume = 3
auto_ppm = true

[output]
backend = "pulse"
pulse_sink = "Headphones (Realtek USB2.0 Audi"
ncurses_ui = true

[mode]
decode = "p25p1"
demod = "qpsk"

[trunking]
enabled = true
group_csv = "c:\mpscs.csv"
allow_list = true
tune_group_calls = true
tune_private_calls = true
tune_data_calls = false
tune_enc_calls = false

[logging]

[alerts]
enabled = false
voice_start = true
voice_end = true
data = true

[recording]
per_call_wav = false
per_call_wav_dir = "C:\RadioApps\dsdneo\calls"
rdio_mode = "dirwatch"
rdio_system_id = 1942
rdio_api_url = "http://127.0.0.1:3000"
rdio_upload_timeout_ms = 5000
rdio_upload_retries = 1
rdio_api_delete_after_upload = false

[dsp]
iq_balance = false
iq_dc_block = false
i'd appreciate a github issue, my brain works better when things are organized vs. the chaos here :)
 

nd5y

Member
Joined
Dec 19, 2002
Messages
12,628
Reaction score
4,980
Location
Wichita Falls, TX
I think mine (Linux AppImage) also seems to quit decoding after a while.

I don't know how the terminal text colors work in Win 10/11. I don't remember if you can even change that. With my terminal text color palate when I start the program the top line is white (uncolored) and the rest is all dark cyan. Parts of it will turn green. I don't know what green indicates. Sometimes the green part will rapidly alternate green/cyan with garbled audio or no CC decode.

What is GFSK? I have never heard or seen that before. Is that supposed to be GMSK (gaussian minimim shift keying)? I thought the only thing that uses GMSK is D-Star.

I get GFSK with auto demod on some DMR, NEXEDGE and some P25. I thought DMR, Both NXDN, and P25 except for QPSK simulcast were all 4 level FSK which to me is C4FM. If I use -mc or demod = "c4fm" in the ini file it doesn't seem to work sometimes.
 

arancormonk

DSD-neo | mbelib-neo
Joined
Dec 12, 2025
Messages
58
Reaction score
73
I think mine (Linux AppImage) also seems to quit decoding after a while.

I don't know how the terminal text colors work in Win 10/11. I don't remember if you can even change that. With my terminal text color palate when I start the program the top line is white (uncolored) and the rest is all dark cyan. Parts of it will turn green. I don't know what green indicates. Sometimes the green part will rapidly alternate green/cyan with garbled audio or no CC decode.

What is GFSK? I have never heard or seen that before. Is that supposed to be GMSK (gaussian minimim shift keying)? I thought the only thing that uses GMSK is D-Star.

I get GFSK with auto demod on some DMR, NEXEDGE and some P25. I thought DMR, Both NXDN, and P25 except for QPSK simulcast were all 4 level FSK which to me is C4FM. If I use -mc or demod = "c4fm" in the ini file it doesn't seem to work sometimes.

Correct: DMR, NXDN, and P25 C4FM are 4-level FSK-family signals. In dsd-neo, the “GFSK” label is not meant as a strict standards name for the protocol, and it is not meant to imply D-Star/GMSK.

GFSK is the generic filtered-FSK demod/slicer optimization path. C4FM is the P25-style C4FM path with its own timing/windowing and heuristics, QPSK is for CQPSK/LSM-style P25 paths, and GFSK is the more generic FSK path that tends to fit DMR, NXDN, ProVoice, and sometimes non-simulcast P25 better depending on the signal and input chain.

So seeing GFSK on DMR or NXDN is expected. The label could probably be clearer as “FSK” or “generic FSK,” because it is more of an internal demod profile than a claim that the transmitted signal is formally GFSK. If forcing -mc / demod = "c4fm" hurts decode on some of those signals, that usually means the generic FSK timing/slicer path is matching that capture better than the C4FM-specific path.
 

dispatchgeek

Control channel goes "brrrrr"
Joined
Feb 29, 2004
Messages
461
Reaction score
476
Location
Between the cornfields and the pastures, Michigan.
i'd appreciate a github issue, my brain works better when things are organized vs. the chaos here :)
Added. Just wanted to make sure I wasn't screwing something up!

In the words of Monty Python:

"On second thought let's not go to Camelot RR Forums, it's rather a silly place."

 
Top