Various DMR related protocols implemented with kaitai-first approach
Project description
DMR Kaitai protocols
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
- Add or update
.ksydefinition file - Run re-compilation script
./rebuild-all.sh(generates .py from .ksy and formats them using black formatter) - Provide at least one example dataset to check the implementation with
And specifically avoid these mistakes:
- 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)
Development notes
- Use
make test,make buildormake test-only(without rebuilding the .py files first), or use the commands from Makefile directly, if you don't havemakeavailable - If you intend to modify/develop this library, use
python3 -m pip install -e --upgrade ., changes to dmr-kaitai project sources are then automatically propagated to your environment without re-installing
Tools
If you install through pip3 install dmr-kaitai or manually from repo using python3 -m pip 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dmr_kaitai-1.1.2.tar.gz.
File metadata
- Download URL: dmr_kaitai-1.1.2.tar.gz
- Upload date:
- Size: 49.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d9dae06f622957703e5c626594da1ccbb45b997a6c925105bcdfc2c02faca34
|
|
| MD5 |
1e302e7d2c1ff837f308205473dcad29
|
|
| BLAKE2b-256 |
019d52a40f028f896d3120baf10587264ad3cdf204a626ca66a316311974d6dc
|
File details
Details for the file dmr_kaitai-1.1.2-py3-none-any.whl.
File metadata
- Download URL: dmr_kaitai-1.1.2-py3-none-any.whl
- Upload date:
- Size: 95.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f491a9bf52c081c1c3906702f4a10c874f32e83c767e4cc301a210c2e467149
|
|
| MD5 |
245518911e413ac58ffc3e9f597e371c
|
|
| BLAKE2b-256 |
cde1e478fc3a71e0c941ee3d3f44e1d9d54d73421bf235619bff0f9382335f6c
|