Since version BrandMeister Core 20211222-205035 has support of DMRA AIS.

DMR Application Interface by DMR Association is a general-use IP-based interface for DMR applications and interworking. It is quite abstract and allows vendor's specific deviations. Also it is a bit slow due to complicated procedures (for example, call setup).

During the implementation we tried to provide flexibility of connector. To follow that approach most of specific procedures, such as registration business-logic are moved to Lua code of Registry. On this way, for example, you are able to register all subscribers of BrandMeister Network in an interconnected DMR Tier 3 network.

Limitations

  • On initial releases only voice calls are supported (group and private)
  • Only AMBE encoding (payload type DMRA-AIS) is supported, g.711 is not supported (and will never be supported)
  • BrandMeister Core doesn't buffer outgoing calls, AIS node may miss some early frames before call setup procedure ends
  • AIS Connect configured as a network-type connection, any call may change user's location while routing
  • BrandMeister Core supports multiple calls with each peers (maximum amount of concurrent calls per peer depends on amount of configured RTP ports)
  • Slot property (AIS' optional) has only informational meaning, Core doesn't check slot's state or timeout timer like it does with repeater-type connections
  • Due to security reasons each connection limited to static IP (domain name is resolved during the start or forced connection)
  • Supported one address of Signalling Gateway and only one of Media Gateway (may differ from Signalling Gateway)
  • No keep-alives and no dead-peer detection due to protocol design
  • Digest / MD5 authentication is supported (username equals to connection profile ID), but in case of Hytera's equipment doesn't work (Hytera's bug). Single password per connection profile.
  • Connection profile ID is used as contact name
  • To pass traffic between AIS node/network and BrandMeister Network please use standard way of bridge configuration and register a talkgroup in space AISSubscriptions (see bellow)

Configuration

Main configuration

AISConnect :
{
  port1 = 5060;   // SIP Port
  port2 = 45000;  // Start RTP Port (this port will be used for outgoing traffic)
  count = 20;     // Count of ports to receive RTP (equals to amount of allowed concurrent calls per connection, next to "port2")
  latency = 200;  // Latency of jitter buffer (100-800 ms)
  // Connection profiles
  connections =
  [
    "AISProfile1"
  ];
};

AISProfile1 :
{
  // ID of remote system
  number = 25010;
  // Connection mode:
  // Bit 0  - Allow to update terminal location in Registry (when AIS peer registers a user subscription)
  // Bit 1  - Allow to subscribe a group in embedded registry (when AIS peer registers a group subscription)
  // Bit 16 - Allow to send terminal location updates to AIS (BM registers a user on AIS peer)
  mode = 3;
  // Address and port of endpoint
  address = "ais.domain.net";
  port = 5060;
  // Incoming REGISTER request
  interval = 300;  // Registration timeout
};

Registry

  Space AISSubscriptions - used to send registration requests to AIS node:
    1 - AIS Profile ID
    2 - Group ID
    3 - Slot  (0 = undefined)
    4 - Expiration Time (should be 0 on insertion)

To configure access password please use standard way with call setPassword(LINK_TYPE_NETWORK, <profile ID>, '<password>')