You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FreeDMR/docs/dmr-data-observability.md

4.3 KiB

DMR Data Observability

FreeDMR can emit passive, per-burst metadata for received DMR data/control traffic. The observer does not change routing, packet bytes, acknowledgement state or delivery behavior.

Enable

The feature is disabled by default. Enable it in [GLOBAL]:

DATA_PACKET_LOGGING: True

Restart FreeDMR after changing the setting.

The setting applies to both HBP and FBP/OpenBridge receive paths. Voice header, voice payload and voice terminator bursts never enter the data observer.

At normal INFO log level, FreeDMR emits only decoded human-readable records:

  • *DMR DATA TEXT* for conservative ASCII, UTF-16BE or UTF-16LE text;
  • *DMR DATA GPS* for complete NMEA GPRMC/GNRMC positions;
  • existing *IN-CALL TA* records for complete Talker Alias text;
  • existing *IN-CALL GPS* records for decoded embedded-LC positions.

Set the server log level to DEBUG when raw burst and protocol detail is also required.

Logged fields

At DEBUG, each eligible RX burst produces one bounded *DMR DATA OBSERVE* record:

Field Meaning
TRANSPORT Source receive path: HBP or FBP/OBP.
STREAM ID, SEQ, TS, CALL Wrapper stream and burst metadata.
SRC, DST, PEER Wrapper source, destination and peer IDs.
TYPE Data type reported by the HBP/FBP wrapper.
AIR_TYPE, CC Uncorrected Slot Type data bits carried in the 33-byte DMR burst.
MATCH Whether wrapper and air-burst data types agree.
CODING Expected coding for the wrapper data type.
SYNC Raw 48-bit center sync field.
DPF Data Packet Format for a BPTC-decoded Data Header.
CSBKO, FID Opcode and feature-set ID for a BPTC-decoded CSBK.
LOGICAL Generic 12-byte BPTC(196,96) information extraction where applicable.
RAW Complete original 33-byte DMR burst payload.
CRC Validation status. The first implementation reports NOT_CHECKED.

Supported DPF labels are UDT, response, unconfirmed, confirmed, defined short data, raw/status short data and proprietary. Unknown values remain numeric and are labelled UNKNOWN.

CSBK, MBC header/continuation, Data Header and Rate 1/2 bursts receive generic BPTC extraction. Rate 3/4 and Rate 1 payloads are kept raw; this observer does not guess at trellis or rate-1 decoding. Idle and reserved burst types are deliberately skipped to avoid noise and log-volume overhead.

Human-readable reconstruction

The observer keeps a small per-router least-recently-used collector. It retains at most 32 data streams and 256 logical bytes per stream. Only decoded Rate 1/2 logical blocks are accumulated; voice, CSBK, Data Header, Idle, Rate 3/4 and Rate 1 payloads are not added to the human-content buffer.

Obvious text runs of at least four characters are reported. The known UDP port signature 5016 (1398 hexadecimal) gives an ETSI/ANYTONE SMS profile hint, and port 4007 (0fa7) gives a MOTOROLA SMS hint. These are hints for capture analysis, not proof that every payload follows that vendor profile.

Complete $GPRMC and $GNRMC sentences are converted to decimal latitude and longitude and include status, UTC, speed in knots and course. Duplicate text or location observations within the bounded stream buffer are suppressed.

Deliberate limits

This is a capture aid, not a DMR data endpoint. It does not currently:

  • validate or correct BPTC, CRC16, CRC9 or data CRC32;
  • perform standards-complete DMR fragmentation/pad/CRC reassembly;
  • send confirmed-data ACK/NACK/SACK responses;
  • infer a vendor profile;
  • decode binary MD-380, Motorola LRRP or Hytera LP locations;
  • parse ARS, IP packets or vendor application ACKs;
  • write new report-socket event formats.

Those features need capture-backed fixtures for ETSI/Anytone, MD-380-like, Hytera and Motorola profiles before they can be implemented reliably.

Performance and privacy

When disabled, the receive path performs only the configuration check and exits. When enabled, per-burst work and collector memory are bounded. Human-readable records are concise at INFO; detailed DEBUG logging can be voluminous, so use it only while collecting protocol captures on a system with appropriate log capacity.

RAW and LOGICAL may contain private message, location or application data. Treat these logs as sensitive and disable the feature after capture work.

Powered by TurnKey Linux.