Skip to main content

Various DMR related protocols implemented with kaitai-first approach

Project description

DMR Kaitai protocols

.github/workflows/sanity.yml Code Style: Python Black License Last released version PyPI downloads Python versions Wheel

This repository contains Kaitai-IO definitions of various protocols that can be met in DMR networks, both amateur and professional

Contributing

Please follow these steps

  1. Add or update .ksy definition file
  2. Run re-compilation script ./rebuild-all.sh (generates .py from .ksy and formats them using black formatter)
  3. Provide at least one example dataset to check the implementation with

And specifically avoid these mistakes:

  1. Modifying generated python sources / dissectors after generating

Supported

  • ETSI
    • CSBK (all from TS 102 361-2)
    • Data Blocks (Rate 1, 1/2, 3/4 confirmed and unconfirmed)
    • Data Headers (UDT, Response, Unconfirmed, Confirmed, Short Data Defined, Short Status Precoded, Proprietary)
    • UDP IPv4 Compressed header
    • FULL LC (Full Link Control, Group/Individual voice, GPS Info, Talker Alias + continuation blocks)
  • HAM
    • Homebrew 2015 (per DL5DI, G4KLX, DG1HT 2015)
    • Mmdvm 2020 (with non-standardized features in mmdvm-host, dmr-gateway, hblink and others)
  • Hytera
    • Data Delivery States
    • Data Transmit Protocol
    • GPS Data
    • HDAP (Hytera DMR Application Protocol)
    • HRNP (Hytera Radio Network Protocol)
    • HSTRP (Hytera Simple Transport Reliability Protocol)
    • IPSC (with separate definition for IPSC Heartbeat)
    • LP (Location Protocol)
    • RCP (Radio Control Protocol)
    • RRS (Radio Registration Service)
    • RTTP (Real-time Transport Protocol)
    • TP (Telemetry Protocol)
    • TMP (Text Message Protocol)
  • Motorola
    • ARS (Automatic Registration Service)
    • MBXML (Motorola Binary XML) - only partially supported now
    • TMP (Text Message Protocol)

Testing

run make test (or pytest directly like this env PYTHONPATH=. pytest -vrpP)

Tools

If you install through pip3 install dmr-kaitai or manually from repo using python3 setup.py install, you should be provided with command-line tools, to pass hex payloads of various protocols to and see what is inside. Tools support multiple hex payloads, each hex string is treated as separate PDU to parse and pretty-print

Usage example

> debug-hytera-hrnp 7e0400002010000100189b6002040005006400000001c403
{'block': 0,
 'checksum': 39776,
 'data': {'checksum': 196,
          'data': {'data': {'data': b'd\x00\x00\x00\x01'},
                   'message_length': 5,
                   'service_type': <ServiceTypes.radio_identification_request: 4>},
          'is_reliable_message': False,
          'message_footer': b'\x03',
          'message_header': <MessageHeaderTypes.radio_control_protocol: 2>},
 'destination_id': 16,
 'header_identifier': b'~',
 'hrnp_packet_length': 24,
 'opcode': <Opcodes.data: 0>,
 'packet_number': 1,
 'source_id': 32,
 'version': 4}

Full listing of available tools

  • debug-homebrew
  • debug-mmdvm
  • debug-hytera-rcp
  • debug-hytera-hdap
  • debug-hytera-hrnp
  • debug-hytera-hstrp
  • debug-hytera-tmp
  • debug-hytera-lp
  • debug-hytera-ipsc
  • debug-hytera-rrs
  • debug-hytera-dds
  • debug-hytera-dtp
  • debug-motorola-ars
  • debug-motorola-tmp

License

AGPLv3.0 see LICENSE file for more info

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dmr-kaitai-1.0.tar.gz (34.6 kB view details)

Uploaded Source

Built Distributions

dmr_kaitai-1.0-py3.7.egg (42.0 kB view details)

Uploaded Source

dmr_kaitai-1.0-py3-none-any.whl (56.1 kB view details)

Uploaded Python 3

File details

Details for the file dmr-kaitai-1.0.tar.gz.

File metadata

  • Download URL: dmr-kaitai-1.0.tar.gz
  • Upload date:
  • Size: 34.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.12

File hashes

Hashes for dmr-kaitai-1.0.tar.gz
Algorithm Hash digest
SHA256 a9fa5de05be1475a02513084d117294ffe0402dd5bdd50dcbe94854fd43b9ea7
MD5 3596b5cffa6923baff232510d016b003
BLAKE2b-256 eb26c806388a26c30af2ffc4b4aa879d970d6e7eab4edde8922fb47ffcc9197a

See more details on using hashes here.

File details

Details for the file dmr_kaitai-1.0-py3.7.egg.

File metadata

  • Download URL: dmr_kaitai-1.0-py3.7.egg
  • Upload date:
  • Size: 42.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.12

File hashes

Hashes for dmr_kaitai-1.0-py3.7.egg
Algorithm Hash digest
SHA256 fd9995a22281c87ece71f0bb1192ac82715b7d7664353ac9fe43ea1db428f16d
MD5 6596155f6c12a1b7debdd532bbb904aa
BLAKE2b-256 fb0d1ce64deae619985efdd474a0d041351b49b621e535eb340e6c48b7871758

See more details on using hashes here.

File details

Details for the file dmr_kaitai-1.0-py3-none-any.whl.

File metadata

  • Download URL: dmr_kaitai-1.0-py3-none-any.whl
  • Upload date:
  • Size: 56.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.12

File hashes

Hashes for dmr_kaitai-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ac176eeeaa95f93bf5a95392a7aaadd730fc786ddfc8b929ef21fe42a73a3e6
MD5 a9afe49e85fd1d290e74ca878853f644
BLAKE2b-256 dedb94e2336ea3b7986c84fcc1b31789705235939902b443e412192ec55d185a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page