Analyzing the APRS infrastructure in the Hamburg area

APRS stations around Hamburg

In this article I will try to analyze the APRS infrastructure in the Hamburg area based on raw APRS messages received by 2m handheld connected via USB soundcard to a Raspberry Pi. On the Raspberry Pi, I run Dire Wolf and I use Xastir on my Laptop with Ubuntu to receive and visualize the data on a map.

APRS is much more than a position system and you can do much more with it than showing your position on a map. It can be used to send text-messages to other OMs and there are a couple of APRS services available which allow for example to send E-Mails through APRS. To make sure that this works, a good APRS infrastructure is needed.

The most important parts of this infrastructure are Digipeaters and Igates.

A DIGIPEATER is a station that receives messages and sends them out again. If the digipeater is placed on a good and high location it can cover a large area and can allow mobile stations to reach a big area even with a low mobile antenna. Wide digipeaters which cover a large area and fill in digipeaters which try to cover local blind spots. To decide how a message is repeated the PATH-settings are used. A typical Path-setting is: “WIDE1-1,WIDE2-1”. I will not explain this in detail in this article but it means something like: Local repeater: Please repeat once and the next wide repeater: please repeat another time. There are several articles about these PATH settings and it can be quite confusing as this changed over time and you will still find a lot of very old descriptions that are not valid anymore. Maybe I will explain this in another article later.

An IGATE is a station that is connected to the APRS Internet Service “APRS-IS” which is a global network of servers that share APRS messages. An Igate receives messages from “the air” and sends it to the network (RX Igate) and the other way round (TX-Igate). There are many tutorials how to build an RX Igate to increase the coverage for position messages that can be seen online, for example at, but this only works in one direction. Reliable 2-way communication requires TX Igates and a good coverage with digipeaters.

There are a couple of stations acting as Igate and Digipeater at the same time.

Based on this knowledge we can now analyze the infrastructure in the Hamburg area in Northern Germany. The goal is to detect Igates and Digipeaters. For that we use the PATH information of the received messages. As described before, the original path is usually sent as “WIDE1-1,WIDE2-1” or similar. If this message is received by a digipeater, one part of the path is replaced with the own callsign and marked with a “*, which means that this part of the path is already used.

Let’s send a message: I use my Kenwood TH-D74 to send a position messages. As a path I use “WIDE1-1,WIDE2-1”. Here is how the message looks like:

DK3ML>U3STQL,WIDE1-1,WIDE2-1:`Fil#N-/>"4'}Happy New Year^

At the beginning there is the callsign of the sending station. In this case, it’s mine: “DK3ML”. After the “>” sign, we see the AX.25 Destination data. This field can have different meanings. We will ignore it for now. Between the AX.25 destination and the “:” we find the digipeater path. As I received my own message directly, there is no digipeater involved yet, so the path is the same, I sent: “WIDE1-1,WIDE2-1”

A couple of seconds later, I received the following message:

DK3ML>U3STQL,DB0ELB*,WIDE1*,WIDE2-1:`Fil#N-/>"4'}Happy New Year^

Most of the message is the same, but the path field changed. WIDE1-1 was replaced with “DB0ELB*,WIDE1*”. The second part of my path “WIDE2-1” is still there. What does this mean?

DB0ELB is a fill-in digipeater, listening for WIDE1-1 path information. This digipeater picked up my message and replaced WIDE1-1 with “WIDE1*” and sent it again. The “*” indicates, that this part of the path was already used and the digipeater also added its own callsign to the path, again marked with a “*”. Now every station in range of this digipeater was able to pick up my message even if it was not in direct range of my own antenna.

Another couple of seconds later, I received the following message:

DK3ML>U3STQL,DB0ELB*,WIDE1*,DB0HHN*:`Fil#N-/>"4'}Happy New Year^

Again it’s the message I sent earlier and this time the PATH was changed again. “WIDE2-1” was now replaced with “DB0HHN*”. So DB0HHN is another digipeater that received my message from DB0ELB and sent it again. Now all hops of my path are used and this message will not be repeated again.

So we identified already 2 Digipeaters: DB0ELB and DB0HHN. But where are they located and is there any additional information about them? Well, let’s wait and study the messages.

After a few minutes, the following message is received:

DB0ELB>APRX25,WIDE2-2:!5334.47N100942.79E#PHG2200 W1

Screenshot of a window in Xastir showing all received raw messages

DB0ELB is now sending some information about itself. As a path it’s just sending “WIDE2-2” which means that this message can be repeated 2 times by wide-area digipeaters. We also see the position of the station and a URL. Sadly the website seems to be unavailable at the moment, so that we don’t find out more about this station. I also received a couple of more messages from DB0ELB with some kind of telemetry data, but the position is the most important information for now. It’s just a couple of hundret meters away from my station in the city of Wedel near Hamburg.

What about DBHHN? A couple of minutes, we know the answer:

DB0HHN>AP4R10,WIDE1-1:!5347.16N/01004.03E#E12 Norderstedt

Now we know the position of the second digipeater. It’s a couple of kilometers north of Hamburg in Norderstedt.

Let’s check a couple of more messages to identify more digipeaters:

DL8HAV>U3SWV5,DB0FS-10*,WIDE1*,DB0HHN*:`N)l -/`Wilfried qrv via DB0XH_$

So we found 2 more digipeaters: DB0FS-10 and DB0HHW. After waiting a couple of more minutes I also received information about both stations:

DB0HHW>APRX28,LOCAL:!5340.88NS00939.83E#PHG3430/W4 Digi Uetersen M21
DB0FS-10>APMI06,DB0HHW*,WIDE2-1:@012024z5335.86NI00956.87E&IGate & Digi U=12.2V,T=16.3C

Now we know the position of the other 2 digipeaters received and one of them (DB0FS-10) is also sending as a status message some additional information: It seems to act as an Igate and digipeater at the same time. On the picture all stations are visible: DB0ELB next to my station in the south east, DB0HHW on the west side, DB0HHN in the north east corner and DB0FS-10 in Hamburg. After 30-60 minutes I received a complete overview about the APRS infrastructure in my area.

I my next article I am planning to find out more about the Igates in my area.

QRV Frequenz als APRS Status Text senden – Send frequency as APRS status text

Wenn man mit APRS unterwegs ist, empfängt man viele andere Stationen, aber weiß meistens nicht, auf welcher Frequenz sie QRV sind, wenn man sie direkt ansprechen kann. Manchmal liest man Texte, wie “QRV auf DB0XH” oder ähnliches. Es gibt jedoch eine Möglichkeit, den Text so zu senden, dass man mit einem geeigneten Funkgerät direkt die Frequenz auswählen und dann Kontakt aufnehmen kann. Wie das geht, steht in der APRS Freq Spec. If you are driving with APRS, you might receive a lot of stations, but you never now how to reach them, if you want to talk to them. Sometimes you read status messages like “QRV on DB0XH”, which gives you a hint, but there is a much better way to transmit the frequency, so that the radio can be tuned to it with a few clicks. This is described in the APRS Freq Spec and I just tried it. And it works!

Continue reading

Social media idea: APRS + Photo + Twitter = #aprsphoto

As I like photographing and hamradio I had the idea to combine both. Every day hams are sending APRS messages from all over the world, but all we see is a dot on a map. Isn’t that sad? Let’s show how it really looks where we do hamradio. Let’s show what’s behind the track on a map!

The idea is to take a photo and send a APRS beacon at the same place at the same time and post both on Twitter using the hashtag #aprsphoto.

I just started:

Continue reading

Setting Symbol for RX-Igate with pymultimonaprs

Since a couple of weeks I am running a APRS RX-igate on a Raspberry PI with RTL-SDR dongle and pymultimonaprs. To show on the map that it’s a RX-only Igate it’s recommended to set the black diamond with a “R” overlay as a symbol. To do this you have to use “R” as table and “&” as a symbol.

Here is my configuration:

"beacon": {
"lat": ...,
"lng": ...,
"table": "R",
"symbol": "&",
"comment": "PyMultimonAPRS iGate",
"status": {
"text": "Raspberry PI - RX Igate",
"file": false

Yaesu FT1-XDE – My APRS settings

I was asked a couple of times about the APRS settings on the FT1-XDE, so I decided to list them here with some comments. Maybe it’s useful for somebody else.

To open the APRS settings, press [DISP] for a second and chose menu 9 (APRS) and press [ENT]

If you just want to start quickly, here are the basic settings:

4) APRS Modem: 1200bps
16) BEACON TX: manual
23) CALLSIGN: Put your callsign there
25) MY SYMBOL: Whatever you want as a symbol

Now leave the APRS settings, switch VFO B to 144.800 (if this is the APRS frequency used in your country) and then press F + 9 (BCONTX) and you will send your first APRS beacon message.

Continue reading