This is a software to monitor the Amateur Radio based DMR network.
The worldwide network is build by several regional networks which are
connected together by bridges.
You may find more information at http://www.dmr-marc.net/
and at http://dmrassociation.org/
The DMR monitor allows the visualization of the activities on the
different parts of the network on a webpage.
A functional installation of this monitor software can be found here:
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
The DMR monitor system basically uses 3 components:
This is the data capture software. It should work on every PC which
has access to the IP datastream of a single DMR repeater or a DMR
network. In Germany we run it on a SmartPTT-server which has access
to 5 DMR networks.
It has also been tested with a cheap Mikrotik router RB750 in the
line to a repeater using Mikrotiks free remote sniffer tool "trafr".
These routers are able to run a sniffer tool with filters and send
the datastream to a PC on the network.
A setup like that only allows to see traffic of one single network,
where the setup on a SmartPTT server or similar bridges allows to
capture several networks and to see even traffic on repeaters where
a timeslots ist switched local/not linked.
Our SmartPTT Server currently uses 5 network ports where different
networks are connected.
I modified the known standard network tool "tcpdump".
It is called "windump" for Windows platforms, but it is the same
tcpdump allows to interpret some router protocols, I added basic
DMR interpretation to that feature.
SmartPTT runs on Windows, so we use the Windows version "windump"
to get access to the network traffic.
The Mikrotik remote sniffer tool works on Linux, there we use the
Linux version of "tcpdump".
The Windows executable can be found in the client directory.
The Linux version is supplied as a patch to the original source
code from tcpdump.org only.
All standard functionality is still implemented, in case of questions
on standard features please first check the tcpdump manpage.
The modified version of tcpdump captures the DMR header and reduces
traffic like the keep-alive messages between all repeaters and other
components on the network.
It also converts the IDs and sequence numbers of the header from
hexadecimal to decimal values and groups it to a human readable format.
This is usefull for debugging network issues.
There is no decoding of any voice data, only parts of the header
which are transferred open in simple hexadecimal format are converted
The tool sets up an internal cache with unique transmission-IDs
build from repeater-ID, timeslot and sequence number to keep track
on each connection and prevent duplicate messages from streams.
As a result it creates 1 message per minute for each active gateway
on the network, and 2 messages for each voice transmission, 1 at
the start and 1 at the end.
Most of the visualisation part is taken from the DStar ircDDB project
The output of the modified tcpdump is transfered to the database
server by the standard tool "netcat" (nc).
This is simply done by UDP, one way, no feedback.
The tool netcat is also availble for Linux and Windows platforms.
PLEASE NOTE that this version of tcpdump does not work properly on
VMWare systems! The output will be shifted by 2 byte which creates
invalid values. I will try to fix this issue by updating to a newer
release of tcpdump. For the moment I can provide a a special version
for VMWare on request.
You may recognize this issue easily when you compare the output to
what the documentation shows.
2) Database Server
The receiver of the UDP transmissions is a perl script running on
a Linux machine.
There the IDs are looked up in a table, translated to the actual
callsigns and finally stored to a MySQL database.
The ID/callsign table is updated twice per day by another perl-tool,
which reads the official registration table from the MARC website.
Finally some php-scripts create the output on the webserver by
selecting the appropiate data from the SQL-database.
The "server" directory supplies scripts, sample configurations, samples
of start files, screenshots of the layout and a dump of the MySQL
Please find more comments inside the scripts.
There are also some little tools included, for example to request the
status of a specific repeater, like this:
This tool will answer with a string of a timestamp and 3 digits, the
first saying if the system is up, the second if it is linked on TS1,
the 3rd on TS2.
This may be used to show the status of the own repeater on webpages
with icons and other grafics.
Such little nice things can easily be realized with a simple SQL-
request to the database server.
73 de Hans, DL5DI