Repository navigation
v1.0b — First working release (beta)
ipsc2hbp v1.0b — Beta
A bidirectional, single-process Python 3 protocol translator that connects one Motorola MOTOTRBO repeater (IPSC peer) to one upstream DMR network server (HomeBrew Protocol master — BrandMeister, DMR+, HBlink4, etc.).
This replaces the legacy two-process Python 2 chain (DMRlink IPSC_Bridge + HBlink HB_Bridge communicating over a local UDP socket) with a single Python 3.11+ process that translates directly in memory.
Status
Minimally working. Both directions of voice have been tested live against a real Motorola MOTOTRBO repeater and a real HBP master. Audio is clear end-to-end. AMBE round-trip has been verified lossless (0 bit errors across 48 SLOT_VOICE bursts). The bridge has been running under systemd without incident.
This is a beta release. We believe it is solid, but it has not been tested across a wide range of repeater models, firmware versions, codeplug configurations, or network conditions. Please report bugs.
What works
- IPSC master stack — registration, keepalive, watchdog, HMAC-SHA1 auth
- HBP peer stack — full handshake (RPTL/RPTK/RPTC/RPTO), keepalive, reconnect on any disconnect
- Outbound voice: IPSC GROUP_VOICE → HBP DMRD (VOICE_HEAD, SLOT_VOICE all burst types A–F, VOICE_TERM)
- Inbound voice: HBP DMRD → IPSC GROUP_VOICE (VOICE_HEAD, SLOT_VOICE all burst types, VOICE_TERM)
- TRACKING mode: HBP connects/disconnects with the IPSC peer
- PERSISTENT mode: HBP stays connected regardless of IPSC peer state
--wirecapture mode for AMBE round-trip diagnostics
Known limitations / out of scope
- Group voice only — private calls are not translated
- Single repeater, single network — one IPSC peer, one HBP master
- No TGID or timeslot rewriting — translates what it receives
- No data calls — GROUP_DATA and PVT_DATA are silently dropped
- No burst timeout watchdog — if a call loses its VOICE_TERM, the bridge waits for the repeater to resolve it
See theory_of_operation.md in the repository for full protocol and architecture documentation.
Requirements
- Python 3.11+
dmr-utils3andbitarray(pip install -r requirements.txt)- See
INSTALL.mdfor setup and systemd configuration
Bug reports
Please open an issue at https://github.com/n0mjs710/ipsc2hbp/issues and include:
- Repeater model and firmware version
- HBP master (BrandMeister, DMR+, HBlink4, other)
- Log output at DEBUG level (
--log-level DEBUG) - If audio-related: a
--wirecapture if possible