mirror of
https://github.com/g4klx/ircDDBGateway.git
synced 2026-04-03 03:14:47 +02:00
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
126 lines
4.2 KiB
Markdown
126 lines
4.2 KiB
Markdown
# ircDDBGateway
|
|
|
|
> **Note:** For new installations, consider using [DStarGateway](https://github.com/F4FXL/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](https://github.com/g4klx/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](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](linux/ircddbgateway.example).
|
|
|
|
See [CONFIGURATION.md](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.
|