Protocol for Connection of Transmitters

Connection for transmitters is based on a simple cleartext TCP protocol 1). A tcpdump of a connection is shown below. Comments are inserted in italic where applicable.
Red color denotes what is sent to the master.
Blue color shows answers received from the master.


[UniPager-Raspager1 v1.0.3 df2et ThisIsAReallyGoodAuthKey]

First you have to send the name of your software, a version string starting with „v“, the callsign of the transmitter and your AuthKey. Remember that this is not the user account but an account for a transmitter.

2:6116

The master answers with message type 2 and his time hex encoded. The next five steps were originally designed to calculate the time offset between master and slave to determine the correct time slots. In the current implementation this is not needed because clients are NTP synced. Normally the client would answer by adding his time. As a dummy „0000“ is used here.

If login fails due to invalid credentials or the transmitter not being registered you will receive a message of type 7 and a string containing details about why the login failed. This could look as follows:

7 Invalid credentials

But let's continue as normal… :-)

2:6116:0000
+

So we answer by repeating what the master sent and adding „:0000“ as our time. Transmission end is indicated by a „+“.

2:6118
2:6118:0000
+

The same procedure happens a second time …

2:611A
2:611A:0000
+

… a third time …

2:611B
2:611B:0000
+

… four …

2:611D
2:611D:0000
+

… and done.

3:+611A
+

If the master answered with message type 3 (first number before the „:“) it is going to tell us how we need to set our clock. This is ignored here due to NTP.

4:0189
+

Then we finally get a message of type 4 telling us which time slots we are allowed to use for POCSAG tranmissions. In this case we got 4 (of 16 time slots): 0, 1, 8 and 9. From here on the master will send out information about incoming calls.

#00 6:1:3EC:3:5357.0 EA5FIV von DL4MFF um 1933z
#01 +

This is the first call. The master sent „#00“ which we have to confirm by increasing by one → „#:01 +“. The rest of the line is as follows (values separated by a „:“):

#01 6:1:11A8:3:#„6468/1!FB6GJW!!!!!!!wpo!EM5NGG!vn!2:44{
#02 +
#02 6:1:3EC:3:7133.0 RL5A von DG1RMY um 1933z
#03 +
#03 6:1:11A8:3:##8244/1!SM6B!!!!!!!!!wpo!EH2SNZ!vn!2:44{
#04 +
#04 6:1:3F0:3:7011.0 OE100BKC von OE3BKC um 1933z
#05 +
#05 6:1:11A8:3:'#8122/1!PF211CLD!!!!!wpo!PF4CLD!vn!2:44{
#06 +

This is a message to the rubrics content of Skyper pagers. It is adressed to RIC 4520 function 3 and the content is ROT-1 encoded.

#06 6:1:1B050:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#07 +
#07 6:1:F4628:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#08 +
#08 6:1:1B40B:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#09 +
#09 6:1:18C9B:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#0a +
#0A 6:1:1EE2B0:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#0b +
#0B 6:1:15E220:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#0c +
#0C 6:1:2047D:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#0d +
#0D 6:1:1EEAA3:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#0e +
#0E 6:1:1CAFD:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#0f +
#0F 6:1:18D40:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#10 +
#10 6:1:644E:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#11 +
#11 6:1:E49A:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#12 +
#12 6:1:1EF198:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#13 +
#13 6:1:1D83D:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#14 +
#14 6:1:1603F:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#15 +
#15 6:1:1C71:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#16 +
#16 6:1:1EEF2D:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#17 +
#17 6:1:61A09:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#18 +
#18 6:1:2118F:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#19 +
#19 6:1:12E0D:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#1a +
#1A 6:1:411:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die
#1b +
#1B 6:1:11A8:3:H!Fejohfo.Ofdlbsibvtfo!Fouxbsovoh;!Csboe!jo!fjofs!Usbgptubujpo!!32;44!Ejft!jtu!ejf
#1c +
#1C 6:1:11A8:3:H“Fejohfo.Ofdlbsibvtfo!Csboe!jo!fjofs!Usbgptubujpo!!31;59!Bvghsvoe!fjoft!Csboeft!l
#1d +
#1D 5:1:9C8:0:193500 161018
#1e +

This is a time synchronization call for Skypers. Adressed to RIC 2504 function 0 and contains time and date.

#1E 6:1:287E0:3:XTIME=1935161018XTIME=1935161018
#1f +

This is a time synchronization call for Swissphone pagers.

#1F 6:1:287EA:3:YYYYMMDDHHMMSS181016193500
#20 +

This is a time synchronization call for AlphaPoc pagers.

#20 6:1:3EC:3:7088.0 OE100OE von ON4AZP um 1935z
#21 +
#21 6:1:11A8:3:#$8199/1!PF211PF!!!!!!wpo!PO5B[Q!vn!2:46{
#22 +
#22 6:1:3EB:3:1840.6 HB3YAS von OK1AY um 1935z
#23 +
#23 6:1:11A8:3:„$2951/7!IC4ZBT!!!!!!!wpo!PL2BZ!vn!2:46{
#24 +
#24 6:1:3F0:3:7003.0 TA1PB von SP8ARY um 1935z
#25 +
#25 6:1:11A8:3:'$8114/1!UB2QC!!!!!!!!wpo!TQ9BSZ!vn!2:46{
#26 +


The client initiates a TCP connection to one node of the masters on port 43434. Login and AuthKey need to be available. So you may need to register a transmitter beforehand.

The incemental counter is just an 8-bit value that is reset on overflow meaning that if you receive FF from the master you answer with 00.