Date | Description |
---|---|
2015/07/02 |
|
2015/07/08 |
|
2015/07/09 |
|
2015/07/26 |
|
2015/12/24 |
|
<mscgen caption="Login Sequence" uniquifier="Login"> msc {
Host, Master; Host->Master [label="RPTL00040178"]; --- [label="Deny"]; Master->Host [label="MSTNAK00040178"]; --- [label="Accept"]; Master->Host [label="MSTACK000401780A7ED498"];
} </mscgen> The repeater connects to the master by issuing the seven byte RPTL command below:
'R' 'P' 'T' 'L' followed by the repeater id as a four byte binary integer.
Example:RPTL00040178
The master replies with either MSTNAK if the repeater id is not recognized or some other reason not
to allow the repeater to log in, or a MSTACK if authentication can begin, these are detailed below:
'M' 'S' 'T' 'N' 'A' 'K' followed by the repeater id as a four byte binary integer.
Example:MSTNAK00040178
'M' 'S' 'T' 'A' 'C' 'K' followed by the repeater id as a four byte binary integer
and a random 32-bit integer.
Example:MSTACK000401780A7ED498
This 32-bit integer is prepended to a secret pass phrase issued by the person running the master and is in effect the password for system entry for this repeater.
The 32-bit integer should be interpreted as a 32-bit pattern and not as an integer and used as-is. This new passphrase is then subject to SHA-256 and the reply sent to the master: 'R' 'P' 'T' 'K' followed by the repeater id as a four byte binary integer and by the SHA-256 output.
Example: (with a passphrase “DL5DI” and the random number from the example above the SHA-256 is built from “0A7ED498DL5DI”)
RPTK00040178cbf0e29abbd11c6573825d36a664e3064441f91fc815ac5dc5ca570d4c4a5f85
If all is well then the master will reply with MSTACK if the login was successful or an MSTNAK is the login was rejected. These are shown below: 'M' 'S' 'T' 'A’ 'C' 'K' followed by the repeater id as a four byte binary integer.
Example:MSTACK00040178
'M' 'S' 'T' 'N' 'A' 'K' followed by the repeater id as a four byte binary integer.
Example:MSTNAK00040178
<mscgen caption="Keep-alive Sequence" uniquifier="KeepAlive"> msc {
Host, Master; Master=>Host [label="MSTPING00040178"]; Host=>Master [label="RPTPONG00040178"]; ...; --- [label="No pong received retry"]; Master=>Host [label="MSTPING00040178"]; Host=>Master [label="RPTPONG00040178"]; ...; --- [label="Close connection master side"]; Master=>Host [label="MSTCL00040178"]; ...; --- [label="Close connection repeater side"]; Host=>Master [label="RPTCL00040178"];
} </mscgen>
Every minute a ping message will be sent by the repeater to the master and it will expect a reply
from the master. If no reply is received from the master within a certain period, the repeater will try another ping and await a pong. This will occur a number of times spaced one minute apart.
If no ping is received the master will mark the link as dead. Any later packets from the repeater are met with MSTNAK replies and the repeater should log into the master again.
These are: 'M' 'S' 'T' 'P' 'I' 'N' 'G' followed by the repeater id as a four byte binary integer.
Example:MSTPING00040178
'R' 'P' 'T' 'P' 'O' 'N' 'G' followed by the repeater id as a four byte binary integer.
Example:RPTPONG00040178
If the master is closing down then it should send a MSTCL to all of the attached repeaters and if a repeater is closing down it should send an RPTCL to the master.
These are: 'M' 'S' 'T' 'C' 'L' followed by the repeater id as a four byte binary integer.
Example:MSTCL00040178
'R' 'P' 'T' 'C' 'L' followed by the repeater id as a four byte binary integer.
Example:RPTCL00040178
After logging in, the repeater will send a packet detailing it's configuration to the master. All fields have a fix length, all 16/32bit hex values have the order like on air (ETSI spec). The packet format is:
Name | Length | Values | Meaning/Comment |
---|---|---|---|
Signature | 4 Byte | 'R' 'P' 'T' 'C' in ASCII | |
Callsign | 8 Byte ASCII | DL5DI___ | The allocated callsign of the repeater, Filled up with spaces |
RptrId | 4 Byte Hex | 00000000-FFFFFFFF | 3 Bytes registered DMR-ID for public repeaters, 4 Bytes for private repeaters |
RX Freq | 9 Digit | 434787500 | The receive frequency decimal in Hertz. |
TX Freq | 9 Digit | 434787500 | The transmit frequency decimal in Hertz. |
TX Power | 2 Digit dec | 00-99 | The transmit power in dBm, decimal. |
ColorCode | 2 Digit dec | 01-15 | The ColorCode/Systemcode of the repeater |
Latitude | 8 Digit decimal | -90 to +90 | Samples: +50.4243 -07.2432 The latitude with North as positive, in ASCII. A decimal point or decimal comma is allowed. (8 Digits including 4 decimals, +/- and decimal delimiter) |
Longitude | 9 Digit decimal | -180 to +180 | Samples: +007.3412 -142.1234 The longitude with East as positive, in ASCII. A decimal point or decimal comma is allowed. (9 Digits including 4 decimals, +/- and decimal delimiter) |
Height | 3 Digit dec | 000-999 | The antenna height above ground level in meters |
Location | 20 Digit | The nominal location of the repeater. This is a free form text field. (only ASCII, no special country specific characters or HTML codes, URLs) | |
Description | 20 Digit | Optional information about the repeater. This is a free form text field. (only ASCII, no special country specific characters or HTML codes, URLs, no advertisements or nonAmateur Radio content) | |
URL | 124 Digit | www.ham-dmr.de | Optional web page for the repeater or group. This is a free form text field. (no advertisements or non-Amateur Radio related links) “http://” not required |
Software ID | 40 Byte | linux:dmrrepeater-20150702 | software-ID with version number (no HTML, no advertising, only identification) |
Package ID | 40 Byte | rpm:dmrrepeater-20150720-2_i386 | Package-ID with version number and platform (no HTML, no advertising, only identification) |
When received by the master, it will reply with a 'M' 'S' 'T' 'A’ 'C' 'K' followed by the repeater id as a four byte binary integer.
Example:MSTACK00040178
All data passing packets have the same format and are 53 bytes in length. The content is:
Name | Length | Values | Meaning/Comment |
---|---|---|---|
Signature | 4 Bytes ASCII | 'D' 'M' 'R' 'D' | This allows multiplexing with other digital audio protocols. Seq No 1 Byte 00-ff (0-255) Starts at zero for each incoming transmission, wraps back to zero when 256 is reached. |
Src Id | 3 Bytes | 000000-FFFFFF | This implies that data cannot be passed until the identity of the transmitter is known. |
Dst Id | 3 Bytes | 000000-FFFFFF | This implies that data cannot be passed until the identity of the destination is known. |
RptrId | 4 Bytes | 00000000-FFFFFFFF | 3 Bytes registered DMR-ID for public repeaters, 4 Bytes for private repeaters |
Slot No | 1 Bit | 0b0000000x | 0 for slot 1, 1 for slot 2. |
Call Type | 1 Bit | 0b000000x0 | 0 for group call, 1 for unit to unit. |
Frame Type | 2 Bit | 0b0000xx00 | 0x00 for voice, 0x01 for voice sync, 0x10 for data sync, 0x11 unused. |
Data Type or Voice Seq | 4 Bits | 0bxxxx0000 | When data sync, this is the Data Type from the Slot Type. When voice/voice sync this is the voice sequence no, with 0 equal to A in the DMR specification, 1 for B, etc.
StreamID 4 Bytes 00000000-FFFFFFFF Random or incremented number which stays the same from PTT-press to PTT-release which identifies a stream. |
DMR Data | 33 Bytes | The on-air DMR data with possible FEC fixes to the AMBE data and/or Slot Type and/or EMB, etc. |
Name | Comment |
---|---|
RptrId | 3 Bytes registered DMR-ID for public repeaters, 4 Bytes for private repeaters. This is the User-ID of the owner with a 1 Byte prefix or suffix. Details will follow after coordination with DMR admin team. 901xxx worldwide system IDs for dongle, hotspot and other add on networks (coordinated by DMRplus network team, not registered individually, example: 901004 for DV4 dongle network). |
Location, Description, Software-ID | In all free-text fields the author of the application software has to make sure that the content is free of URLs, HTML tags, special characters and local language characters. |
You are free to:
Under the following terms: