New TETRA Trunk Tracker for use with SDR# and the TETRA Demodulator Plugin

Over on our forums user thewraith2008 has just released news about his new software called TETRA Trunk Tracker. The software works in conjunction with the TETRA demodulator plugin for SDR#. It works by using two dongles, one to monitor a TETRA trunking channel, and the other to decode voice audio, although a single receiver mode is also available which works with a reduced and fixed bandwidth.

TETRA Trunk Tracker
TETRA Trunk Tracker

The post reads:

TETRA Trunk Tracker will follow calls on a TETRA network.

TETRA Trunk Tracker reads DATA that is output from the SDR# plug-in TETRA Demodulator (by TSSDR) via the 'Network Info' calls log window.

It interprets this DATA to determine when a call is set-up, then instructs SDR# (VC) to move to the carrier (frequency) that the call will be on.

It will also watch out for other PDUs to determine when a SSI starts or completes transmissions and when calls are complete (Released).


  • A basic call recording (All or Selective call recording).
  • Display current call details with list of seen SSIs for that call. (SSI populate as they TX).
  • GSSI holding - will only allow calls with selected GSSI to be heard.
  • Call lockout based on GSSI. Can be unchecked in list to lockout GSSI.
  • Call Priority. (Only normal version)
  • GSSI weighted 0-9, 9 is highest. If on active call and other call event occurs, if new call has higher
  • priority then will switch to it.
  • Collect/Save all seen GSSIs with Labels and Priority, By Network.
  • Collect/Save seen SSIs with Labels and Last seen Date/Time, By Network.
  • Set a call time-out. Returns to idle state if call does not see a release PDU
    after X time in seconds.
  • Log call events to screen and file, if enabled.
  • Log raw CC and VC PDU messages as seen by the 'TETRA Demodulator' plug-in, if enabled.
  • Log GSSI daily call activity. (Simple version does not play calls when this is selected)
  • Set base frequency via UI.
  • Set CC park carrier # via UI.
  • Set VC park carrier # via UI.
  • Suppress some PDUs. (unchecked is mainly for testing only)
  • Suppress lockout messages.
  • Sort SSI and GSSIs/Lockouts (by GSSI). This only occurs on start-up.
  • Country Code label, defined via file (shown as menu item)
  • Network label, defined via file (shown in tool tip where MNC,LA is in 'Call Details' panel)
  • Location Area label, defined via file (shown in tool tip where MNC,LA is in 'Call Details' panel)
    Only shown when Network label used.
  • Ignores Encrypted PDUs (with no reference to them)
  • Set a seen GSSI priority via UI.
  • Update a seen GSSI/SSI label via UI.
  • Call active indicator.
  • Restore SDR# windows to a defined position.

If the TETRA Demodulator does not work for you this program will do nothing to change that.

This is the third release of this program. (TETRA Trunk Tracker v0.99.6)
And 2nd release for (TETRA Trunk Tracker v0.99.6s - Simple)

Two versions are available:

  • Normal (Uses 2 SDR# and 2 Dongles) with TETRA Demodulator and Net Remote plug-ins
  • Simple (Uses 1 SDR# and 1 Dongles with some features not available) with TETRA Demodulator and Net Remote plug-ins

Backup your "Tetra-trunk-tracker.dat" settings file.
Then delete "Tetra-trunk-tracker.dat" as it has changed and old one will cause error on load.

Some work as gone into trying to make TETRA Trunk Tracker easier to run once the initial setup has been done.

A MCC (Country Code) label file is included for your convenience "TETRA_mcc.txt".

It has only been tested on Windows 7 - Professional SP1 (32 bit), English

You MUST have a PC that is capable of running SDR# x 2 with the TETRA plug-in. (Not overloaded CPU usage.)

It is in alpha stage. This means is may contain errors that may cause issues with the other programs it
works with. i.e. crashing them or itself.

The TETRA plug-in currently been developed by TSSDR is also in early development. Because of this
any changes made in plug-in releases most likely will break this program.

I have created it to suit my needs. And it currently works for me with the TETRA network I monitor.

I make no claim that it will work for other networks.

Please read the provided files for set-up and usage:

  • TTT_set-up_manual.pdf
  • TTT_Features_and_Usage.pdf

I have tried to be as thorough as possible with the documentation to explain usage and features.
I believe any questions can be answered by reading these files.
These files most likely are not complete and contain errors and are not laid out as good as they could be.

It only works with the provided TETRA plug-in supplied in zip. (2018-June-06).
This version uses a custom compiled version of 'Net Remote' supplied in zip

It is only meant to be a temporary solution until something better comes along.

Hopefully all goes well for you setting it up.

Download link

MD5 HASH 6f33fcf9662573b77e177e899793b9f9

Video showing starting it and it running
Video showing starting it and it running - Simple version

Notify of

Inline Feedbacks
View all comments

download link expired


I have been using this for about 7 months now (in UK), but I now want to use it in dual mode with a 2nd Dongle, i have read the instructions to do this but find them confusing as they are NOT written for a layman but an experienced user, can anybody point me towards a video that explains how it done. TIA




I works great ! Thanks a lot for developers !


Download link not working… Any mirror


Works perfectly! Thanks for sharing! The Group “hold” and “Lockout” features are very useful for targeted listening. Suggestion: for streaming online using IceCast you could add a web-call (with IceCast credentials)
that updates the stream’s *metadata* with Group & User information!


could you please tell me how to set up tetra trunk tracker step by step
as i’m a beginner and i tried many times but i cant start it


Step 1 – Read the manual that is supplied with the program.
Step 2 – See Step 1.


if you’re going to reply with an a*hole comment, do the world a favor and don’t bother replying at all. RTFM is a bs answer from someone (like you) who most likely knows less than the person asking the question in the first place.


Nice. Why don’t you answer then?


SDRSharp TETRA demod plug-in crash investigations

An item with the same key has already been added.
at mscorlib.dll.ThrowHelper.ThrowArgumentException (IL offset: 0x10)
at mscorlib.dll.Dictionary`2.Insert (IL offset: 0x81)
at SDRSharp.Tetra.dll.MM_protocol.ParseMMPDU (IL offset: 0x219)
at SDRSharp.Tetra.dll.SduParser.Parse (IL offset: 0x67)
at SDRSharp.Tetra.dll.PduParser.ResourcePDU (IL offset: 0xe6)
at SDRSharp.Tetra.dll.PduParser.ParsePDU (IL offset: 0x55)
at SDRSharp.Tetra.dll.TetraDecoder.Process (IL offset: 0x698)
at SDRSharp.Tetra.dll.TetraPanel.DecodingThread (IL offset: 0x98)
at mscorlib.dll.ThreadHelper.ThreadStart_Context (IL offset: 0x14)
at mscorlib.dll.ExecutionContext.RunInternal (IL offset: 0x79)
at mscorlib.dll.ExecutionContext.Run (IL offset: 0x0)
at mscorlib.dll.ExecutionContext.Run (IL offset: 0x2b)
at mscorlib.dll.ThreadHelper.ThreadStart (IL offset: 0x8)

SDR# v1.0.0.1700, RTL-SDR, TETRA demodulator plug-in (hotfix #6), Windows 10 Home (64-bit) version 1809 (OS build 17763.316), .NET Framework version 461814 (On all other OS versions, including Windows 10 October 2018 Update: 461814)

I started TETRA demod plug-in (config: increase PDU element verbosity checked, other options unchecked) and started baseband recording (RTL-SDR 0.25 MSPS, 8 bit PCM) and opened network info window. I also started logging call tab PDU text box to file (by using screen scraping utility which I coded with C#). When SDR# crashed it still was able to close the wav file correctly. I replayed the IQ file in SDR# and it also caused program crash. I opened log file and last line was (also when crash happens the last line seen in PDU textbox was the same as in log file):

PDU encrypted:2 Data incorrect! Carrier:x TimeSlot:xx SSI:x D_Facility

I did some experiments without IQ recording (with call tab textbox logging) and when crash happened, the last line in the log file was: ….. D_Facility


New version released:
“Der angegebene Schlüssel war nicht im Wörterbuch angegeben.
at mscorlib.dll.Dictionary`2.get_Item (IL offset: 0x1e)
at SDRSharp.Tetra.dll.TetraDecoder.Process (IL offset: 0x2ac3)
at SDRSharp.Tetra.dll.TetraPanel.DecodingThread (IL offset: 0xb8)
at mscorlib.dll.ThreadHelper.ThreadStart_Context (IL offset: 0x14)
at mscorlib.dll.ExecutionContext.RunInternal (IL offset: 0x79)
at mscorlib.dll.ExecutionContext.Run (IL offset: 0x0)
at mscorlib.dll.ExecutionContext.Run (IL offset: 0x2b)
at mscorlib.dll.ThreadHelper.ThreadStart (IL offset: 0x8)”

It seems to be more stable if one starts SDR# with run as administrator



I am struggling with the following:
when I center the WFM band to the pick of TETRA signal and tetra_trunk_trucker_simple starts to finding calls, the center of the band within sdr# jumps 30Mhz down (from 391Mhz to 361Mhz and stops).
The same situation when I manually start tetra_trunk_tracker by clicking on green start button.
Any ideas ?


Your using in an old version. See forum for latest versions:

You most likely have not set the “CC Park” carrier number.
See PDF documentation that is supplied in package for further set-up details.


thanks for tips.

If you mind, please have a look at .
The seconds 00:28 and 1:01 when carriers are found.


As I said in previous post, “You most likely have not set the “CC Park” carrier number.”
And you have not.
The video shows this to be “3648” (391.2125MHz). This is your “CC Park” carrier number.
Main carrier = “CC Park” (CC = Control Channel)

You also need to verify you are using the correct offset, or further incorrect tuning will occur.

All this is covered in the supplied documentation.


in my case it was ppm issue – I had to set proper ppm to aim the center of carrier.
BTW thanks for tips.


TETRA Demodulator plug-in has been updated by me. “Tweaked Edition (Unofficial) v1.0.0.5” (tetra_x86_2018-09-11)
It’s is required for some SDS features to work with TETRA Tunk Tracker v1.0.5. Please read text files in zip for plug-in.

This plug-in version changes/adds and fixes some items:

FIXED .NET pop-up errors. Should no longer require “TETRA popup error dismisser’ is you use it.
ADDED: Increased some PDUs verbosity.
ADDED: Audio DSP – Bandpass filter and AGC
ADDED: Support for D_SDS_Data long location report. [Experimental]
ADDED: Support for D_SDS_Data Text Messaging. [Experimental]
Interval for displaying output to “Network Info” window.
See ‘SETUP.TXT’ and ‘UPDATE.TXT’ for more details.

Screen scraping logging :


Posting this was unnecessary as is already posted to


“TETRA Trunk Tracker for use with SDR# and TETRA Demodulator plug-in” on RTL-SDR forum:

Don’t why link didn’t work


My problem is that the value shown in ‘TETRA Demodulator’ “Network Info” > Current > Offset is “3”
Any idea how to set this up?


Any idea how to set this up?

The answer to your question is in the documentation. “TTT_Features_and_Usage.pdf”


I was totally blind.. What was i thinking
Thanks a lot!!


Thankyou so much for this.
I have it working, sort of, but i have the following questions:
1. On my CC SDR any Tetra freq I connect to seems to imply that it is a control channel as it has Main and Current values the same. On the VC SDR I dont always see anything in Main (00.000MHz) but current is always correct. Do I need to be seeing something in the Main section on the VC SDR for it to work?

2. Does the VC park freq need to be on a completely unused frequency that is within 12.5KHz of the CC freq?

3. I see the volume slider moving on the VC SDR whenever “Call” is green but it is not actually un-muting the VC SDR. Any idea what that might be? (Just to confirm that I have a single SDR# running fine already with the Tetra Demodulator)

3. In Tetra Demodulator, does the Voice Auto box need to ticked on both CC and VC SDRs, only on one or on neither?



Hmm, now I’m hearing transmissions but it is the CC SDR that is un-muting!
Going to try the simple (1 RTL) version…


Oh dear, now its asking me to start the second SDR all the time, I’ll keep trying…


1. If all your TETRA frequencies when tuned to, show ‘Main’ and ‘Current’ as the same value (but LA is different) then your network does not have additional traffic frequencies, only different location areas.

2. Yes, must be unused. Can be any unused frequency within the selected frequency band. TETRA Demodulator plug-in does not always show correct carrier number when unused frequency is selected. (It does not know offset yet) That’s why I say NOT to place VC Park 12.5KHz from any other active frequency.

3. Most likely you have not followed the set-up instructions.
3(4). Auto should be off. See #3

TETRA Trunk Tracker and SDR# needs to have an initial set-up completed before it works correctly.
Please read the PDFs that are supplied in the zip file (in “docs” folder).
-TTT_Set-up_manual.pdf [This is mistakenly named “TTT_SDS_Set-up_manual” in v0.99.8]
-TTT_SDS_Set-up_manual.pdf [This is mistakenly named “TTT_Set-up_manual” in v0.99.8]


Thankyou very much for your reply, yes I do have a number of different LA values and colour codes within the same network, however I’m not sure if this makes it easier or harder for the Trunk Tracker to follow conversations?
I did actually get it all working as it should last night after some trial and error. I found my main problem was that I needed to make sure I was exactly ‘bob on’ the signals on both SDRs (i.e. having to alter PPM values once the RTL sticks have warmed up. I assume that the number directly under the Red “Received” marker in Tetra Demodulator needs to be higher the better?)
I did read through all the docs but may not have been interpreting some of them correctly.
Anyway, thanks again for what you’ve done.
I’m using it right now and going to try some of the more advanced uses like GSSI / SSI naming, recording etc


Glad to hear you got it going.

yes I do have a number of different LA values and colour codes within the same network, however I’m not sure if this makes it easier or harder for the Trunk Tracker to follow conversations?

TETRA Trunk Tracker determines where to switch to based on PDU D-Setup. So if it says call is on carrier 1234 @ timeslot 2 then it sets that up. It doesn’t switch between LAs in a network, although SSIs in a call can be connected from other LAs.


Hi all. I’ve already try to configure as stated in the manual with supplied Net Remote plugin but the plug in is not appear on side bar of the SDRSharp. Mine using SDRSharp ver 1637, OS Windows 7 Ultimate x64 with SP1 installed, .Net Framework 4.72, VCredist 2017 and 2013 (both x86 and x64 installed). Trying with SDRSharp version 1668 with no luck (still no Net Remote plugin appear on side bar). But Tetra demodulator is working flawlessly. Can anybody give me some clue to solve my problem?


Please make sure your using the “Net Remote” from the TETRA Trunk Tracker v0.99.7.
This has the the 32 bit version of “Net Remote” plug-in. (64 bit didn’t work.)

Also make sure you have added the “MagicLine” to “Plugins.xml” file in your SDR# folder.
Information about this is in “ThisVersion.txt” file in zip file “” in the plug-ins folder.

I’ll update the PDF to include this info.


Yup, I’ve already put Net Remote plugin from the TETRA Trunk Tracker v0.99.7 onto SDR# folder (version 1670) and adding magic line into plugins.xml. Tetra Demodulator plugins is ok but Net Remote plugins still doesn’t appear on sidebar. I have no idea so far….


After trying many times, the last attempt is installing net remote plugin with the original one from Ear To Ear Oak. After successful installation then net remote plugin appear on SDRSharp side bar, continue to exit the application and replace with supplied net remote plugin from TTT. Voila… it works perfectly. This can be happened when net remote plugin not yet installed before (fresh install of SDRSharp). Problem solved…


Strange, as far as I know the installer for “net Remote” only copies the DLL file and modifies the “plugin.xml” file.

It worked for you that’s the main thing.


The download link is dead. Can someone give me another link to download. Thank you!


The link to the latest version is in forum ‘User Projects’. Look for last update post.

This link to forum post is given at beginning of article above as “released news”

I have no idea how to add link here.


Great app!
The bad news is that it seems TSSDR has stopped developing his SDR# Tetra plugin and gave source code to an Australian company. At least it is was i understand from a Google translation of a russian forum:


No one knows where TSSDR has gone. Maybe just a well deserved break. And from what I understand, he does not even have live TETRA in his location and developed the plug-in from IQ samples. Amazing really.

I do not have his source code.
My work is independent from his but with the goal of improving on what already has been done.
People love to jump to conclusions.


… maybe it is possible to develop new external decoder which uses UDP output from SDR# TETRA demodulator plug-in?


I’m sure it would possible to process the Normal/Sync continuous downlink bursts output from UDP, I would be concerned that the further delay would cause an issue with timing of calls possibly cutting off the beginning of a call. Which already seems to happen in some cases.

While I have inspected the UDP for bursts and found the sync, I have not gone further than the descrambling of broadcast/block1 and 2 bits through RM(30,14).
This is a lot beyond my knowledge on the subject.

I think in the end it would be better to start something from scratch.


… realtime decoding may not be possible but how about some kind of buffering and decoding bit later in a separate process/machine …?


I am using tetra_trunk_tracker_simple.exe and I am holding 1 group. This is working very well for a while but now and than I see the following error:

System.NullReferenceException: Object reference not set to an instance of an object
bij SDRSharp.Tetra.NetInfoWindow.UpdateTextBox(List`1 rawData)
bij SDRSharp.Tetra.TetraPanel.TimerGui_Tick(Object sender, EventArgs e)
bij System.Windows.Forms.Timer.OnTick(EventArgs e)
bij System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
bij System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

I use the simple version because when I open 2 times SDR I get an error on “net remote”, port already opened. This makes sense since a port can be opened only once. How to solve these problems?


I made a utility program to deal with this pop-up error. It is supplied.
You are not using the supplied ‘Net Remote’ plug-in.

All this is covered in the supplied documentation. (Which I spent some time preparing)


Seems to work very well with MCC: 240 MNC: 11 in simple mode here in Stockholm.
Each LA seems to have 4 channels in my area and my strongest ones are within 2 MHz so simple can handle it.


“… are within 2 MHz so simple can handle it.”

TETRA Trunk Tracker is not restricted by the bandwidth of the dongle. VC (carrier/frequency) can be anywhere within the 100 MHz for a given frequency band.


Great work, so the only limitation in single mode is call priority ?


Thanks, glad it’s working for you.
Yes, that’s correct. No call priorities in single mode (Simple).
Logging to CSV is restricted to a logging only mode, but in the end works the same.

I’m testing adding SDS Location Data (GPS) as well. Which works with DSDPlus LRRP program to display on map. I’ll add more about this in a post in the forums with a link to a video demonstrating it later.


Figured it out.. Running really good on simple, I will sort out a 2nd dongle and try the advanced tracker… Class job.


Mines SEEMS to be working, it seems to be tracking etc but after a DRelease I get UI Reset and my freq changes to something random.. still figuring out..

If my control channel is 393.8625 what should be my base and CC park be ?


Your Base Frequency would be “300 MHz”

Select 393.8625 MHz frequency in SDR#. In the TETRA Demodulator panel, it will show the “Current” xxxx 393.8625 MHz
“xxxx” is the carrier # and is the “CC Park”
“Main” indicates what CC is for that network (MNC).

“but after a DRelease I get UI Reset and my freq changes to something random”
This is most likely moving to the default carrier “2604” and default “Base frequency” [800 MHz] which would be around 865 MHz

Please also make sure you set the correct “Offset”.
This value is shown in ‘TETRA Demodulator’ “Network Info” > Current > Offset


All working as expected now.. Love it. thanks.


Because TETRA Trunk Tracker is not .net application or a plug-in.


Cant start it (win10)

comment image


That error shows that you have not set-up the program correctly. Please read “TTT_Set-up_manual” for details on setting up properly. This is a must.

I have only tested with Windows 7 Professional 32-bit.
Others have said for Windows 10 run TETRA Trunk Tracker with elevated privileges “Run as Administrator”

Please note that you must have TETRA Demodulator plug-in running and working with SDR# before using with TETRA Trunk Tracker.

Tobias M.

Why would you use ActiveX winsocks in a .net application/plugin?


It is really alpha state. When starting a decode, sdr# stopped and exit.