The ircDDB Gateway for D-Star
Find a file
Andy Taylor fc571c1e13 Fix MQTT implementation, align with DStarGateway, and add documentation
MQTT Implementation (aligned with DStarGateway / MMDVMHost):
- Rewrite MQTTConnection with mosquitto_loop_stop() fix to prevent
  background thread zombies on shutdown
- Add MQTT authentication support (mqttAuth, mqttUsername, mqttPassword)
- Add configurable client name (mqttName) used as topic prefix
- Use PID-based client IDs (avoids time_t truncation on 32-bit ARM)
- Use std::string interface throughout (no wxString in MQTT layer)
- Align JSON link status fields with DStarGateway (repeater/reflector/
  protocol/reason/action) for dashboard compatibility

Shutdown Safety:
- Add MQTTLogFinalise() calls to both daemon (IRCDDBGatewayAppD::run)
  and GUI (IRCDDBGatewayApp::OnExit) shutdown paths to ensure clean
  MQTT disconnection and thread cleanup before process exit

JSON Status Events:
- Update all ~30 WriteJSON call sites across DPlus, DExtra, DCS, and
  CCS protocol handlers to use new function signatures
- Simplify IRCDDBGatewayThread::writeJSONStatus to delegate to
  WriteJSONStatus

Config Parser Hardening:
- Add empty-line crash guard to IRCDDBGatewayConfig, TimerControlConfig,
  and TimeServerConfig parsers (str.IsEmpty() check before GetChar)

Documentation:
- Add MQTT.md with topic structure, JSON examples, and troubleshooting
- Add CONFIGURATION.md with full reference for all config files
- Add BUILD.md with build parameters and dependency information
- Add linux/ example configs for ircddbgateway, timeserver, timercontrol
- Modernise README.md with feature list and DStarGateway recommendation
2026-03-08 21:34:45 +00:00
APRSTransmit Merge branch 'master' into mqtt 2026-02-18 17:56:52 +00:00
Common Fix MQTT implementation, align with DStarGateway, and add documentation 2026-03-08 21:34:45 +00:00
Data Add Portuguese voice files 2021-06-03 02:42:26 +01:00
debian Add Portuguese voice files 2021-06-03 02:42:26 +01:00
GUICommon Merge branch 'master' into mqtt 2026-02-18 17:56:52 +00:00
ircDDB Merge branch 'master' into mqtt 2026-02-18 17:56:52 +00:00
ircDDBGateway Fix MQTT implementation, align with DStarGateway, and add documentation 2026-03-08 21:34:45 +00:00
ircDDBGatewayConfig Merge branch 'master' into mqtt 2026-02-18 17:56:52 +00:00
linux Fix MQTT implementation, align with DStarGateway, and add documentation 2026-03-08 21:34:45 +00:00
RemoteControl Merge branch 'master' into mqtt 2026-02-18 17:56:52 +00:00
TextTransmit Merge branch 'master' into mqtt 2026-02-18 17:56:52 +00:00
TimerControl Fix MQTT implementation, align with DStarGateway, and add documentation 2026-03-08 21:34:45 +00:00
TimeServer Fix MQTT implementation, align with DStarGateway, and add documentation 2026-03-08 21:34:45 +00:00
VoiceTransmit Merge branch 'master' into mqtt 2026-02-18 17:56:52 +00:00
.gitignore Add basic JSON logging and JSON status messages. 2023-07-21 11:44:45 +01:00
BUILD.md Fix MQTT implementation, align with DStarGateway, and add documentation 2026-03-08 21:34:45 +00:00
CHANGES.txt Add AMBE data bypass processing for Fast Data. 2018-11-14 10:50:08 +00:00
CONFIGURATION.md Fix MQTT implementation, align with DStarGateway, and add documentation 2026-03-08 21:34:45 +00:00
COPYING.txt Initial commit. 2018-05-09 19:23:17 +01:00
ircDDBGateway.sln Merge branch 'master' into mqtt 2026-02-18 17:56:52 +00:00
ircDDBGateway32.nsi Add Portuguese voice files 2021-06-03 02:42:26 +01:00
ircDDBGateway64.nsi Add Portuguese voice files 2021-06-03 02:42:26 +01:00
Makefile Add basic JSON logging and JSON status messages. 2023-07-21 11:44:45 +01:00
MakefileGUI Add basic JSON logging and JSON status messages. 2023-07-21 11:44:45 +01:00
MQTT.md Fix MQTT implementation, align with DStarGateway, and add documentation 2026-03-08 21:34:45 +00:00
README.md Fix MQTT implementation, align with DStarGateway, and add documentation 2026-03-08 21:34:45 +00:00

ircDDBGateway

Note: For new installations, consider using DStarGateway instead. DStarGateway is an actively developed, wxWidgets-free rewrite of ircDDBGateway with additional features such as NAT traversal, RS-MS1A message forwarding, and automatic host file downloads. ircDDBGateway remains fully functional and is still in use at many sites, but DStarGateway is the recommended path forward for new deployments.

ircDDBGateway allows a D-Star repeater to interface into callsign routing via ircDDB and all of the different reflector types. It works with both DStarRepeater (homebrew hardware) and Icom repeater stacks (ID-RP2C).

Features

  • Callsign routing via ircDDB (up to 4 networks simultaneously)
  • D-Plus REF reflectors
  • DExtra XRF reflectors
  • DCS reflectors
  • XLX reflectors
  • CCS7 routing
  • Supports Icom repeater stacks and homebrew repeaters
  • Up to 4 repeater modules per gateway
  • Icom DD mode under Linux with Internet access
  • D-RATS data transfers
  • DPRS to APRS-IS gateway
  • Full multi-lingual text and voice announcements
  • DTMF or UR call control
  • Remote control interface
  • STARnet digital voice server (up to 5 groups)
  • Reflector usage policies
  • MQTT telemetry publishing (log messages, link status events)

Building

Builds on 32-bit and 64-bit Linux as well as on Windows using Visual Studio 2022 (x86 and x64).

Standard Build

make
sudo make install

With GUI Programs

make -f MakefileGUI

MQTT Dependency

MQTT telemetry is always compiled in. Install libmosquitto-dev before building:

sudo apt-get install libmosquitto-dev
make
sudo make install

To disable MQTT at runtime, leave mqttAddress empty in the config file. See MQTT.md for full configuration details, topic structure, and JSON format.

Drop-in Replacement for dl5di OpenDV Packages

This compiles the program to be used as a drop-in replacement for the no longer maintained DL5DI OpenDV packages. Systemd unit files for running ircddbgatewayd as a daemon are also installed.

export TARGET=opendv
make
sudo make install

You may need sudo -E make install or sudo TARGET=opendv make install to pass the environment variable, depending on your system configuration.

Enable and start the service:

sudo systemctl enable ircddbgatewayd.service
sudo systemctl start ircddbgatewayd.service

To uninstall:

sudo systemctl disable --now ircddbgatewayd.service
sudo make uninstall

The uninstall will not remove your /etc/ircddbgateway configuration file.

Configuration

Edit /etc/ircddbgateway (or /etc/ircddbgateway_<name> when using the -name option) to match your setup. An example configuration is provided in linux/ircddbgateway.example.

See CONFIGURATION.md for a complete reference of all settings, defaults, and allowed values.

ICOM Repeater Setup

If using an ICOM ID-RP2C, configure the repeater using the ICOM utility. By default the ID-RP2C uses IP address 172.16.0.1 and expects the controlling device at 172.16.0.20 with the default password PASSWORD. Ideally the ID-RP2C is connected directly to a secondary ethernet port on the device running ircddbgatewayd.

In the ICOM utility, set the port in "Communication Settings" to match the "Gateway" section port (20000 by default), then match it in Options > Network Setup.

Example configuration for a 70cm repeater on Repeater 1:

gatewayType=0
icomAddress=172.16.0.20
icomPort=20000
repeaterCall1=GB7XX
repeaterBand1=B
repeaterType1=1
repeaterAddress1=172.16.0.1
repeaterPort1=20000

Companion Programs

Only ircddbgatewayd is required for basic operation. The following companion programs are also included:

Program Description
ircddbgatewayconfig GUI configuration editor
texttransmit Send a text message via the gateway
voicetransmit Send a voice announcement via the gateway
timercontrol Scheduled reflector linking control
timeserver Transmit time announcements
remotecontrol Remote control client
aprstransmit Send APRS data via the gateway

Licence

This software is licenced under the GPL v2.