Home
Become a radio amateur
Repeaters
Tools
Blog
The club
Contact
Members
FRDEITEN
HB9V · Radio Amateurs of Canton Vaud
Home/Blog/Installing an XLX Multiprotocol Gateway Reflector

Installing a Multi-mode XLX Reflector

YSF, DMR, D-Star, C4FM on Ubuntu 22.04 / 24.04 or Debian 12

Complete, updated guide - October 2025

1. Introduction

What is XLX?

XLX is a multiprotocol, multi-mode reflector for amateur radio digital modes. It lets you set up a server that simultaneously supports:

  • D-Star (with the DPlus/REF, DCS and DExtra/XRF protocols)
  • DMR (Digital Mobile Radio)
  • YSF/C4FM (Yaesu System Fusion)

Advantages of XLX

  • Native multi-mode: DMR and YSF users can communicate without transcoding hardware
  • Up to 26 modules (rooms A to Z)
  • Real-time dashboard
  • Interlinking between reflectors possible
  • Open source and Pi-Star compatible
To allow communication between D-Star and the other modes, you will need hardware AMBE chips (around €90 each, at least 2 required). DMR ↔ YSF has worked natively since 2020.

2. Prerequisites

Server

  • VPS or dedicated server running Ubuntu 22.04/24.04 or Debian 12
  • CPU: 1-2 vCPU minimum
  • RAM: 1-2 GB minimum
  • Storage: 20 GB minimum
  • Recommended providers: Linode, DigitalOcean, OVH (€5/month)

Network

  • Fixed public IP address (IPv4 required)
  • Fully qualified domain name (FQDN): for example xlx.votre-domaine.fr
  • Network ports reachable

XLX number

Choose an unused 3-digit number (000-999). Check at: https://xlx.n5amd.com/index.php?show=reflectors

Use ONLY digits, no letters. Your reflector will be called XLX###.

3. Preparing the system

Connecting to the server

ssh root@votre-serveur.com

Updating the system

sudo apt update -y sudo apt upgrade -y sudo apt dist-upgrade -y

Creating an administrator user

apt install sudo -y adduser votre-callsign usermod -aG sudo votre-callsign su - votre-callsign cd ~
From now on, use this user for all commands.

4. Installing the dependencies

sudo apt install -y \ git git-core apache2 php libapache2-mod-php \ php-cli php-xml php-mbstring php-curl php-mysql \ build-essential g++ make ufw certbot python3-certbot-apache

Checking the versions

php -v # PHP 8.x apache2 -v # Apache 2.4.x gcc -v # GCC 11.x or later

5. Downloading and configuring XLX

Downloading the source code

cd ~ git clone https://github.com/LX3JL/xlxd.git cd xlxd/src nano main.h

Settings to change in main.h

1. Enabling YSF auto-link

Change:

#define YSF_AUTOLINK_ENABLE 0

To:

#define YSF_AUTOLINK_ENABLE 1

2. Server IP address

Find your IP:

curl ifconfig.me

Then change:

#define IP_ADDRESS "123.45.67.89" // Your public IP

3. Number of modules (optional)

#define NB_OF_MODULES 26 // To enable A-Z

Save: Ctrl + X, then Y, then Enter

6. Compiling the reflector

make clean make sudo make install sudo chmod +x /xlxd/xlxd

Downloading the DMR ID database

sudo wget -O /xlxd/dmrid.dat http://xlxapi.rlx.lu/api/exportdmr.php

7. Configuring the system service

sudo cp ~/xlxd/scripts/xlxd /etc/init.d/xlxd sudo nano /etc/init.d/xlxd

Change the ARGUMENTS line:

ARGUMENTS="XLX### votre.ip.publique 127.0.0.1"

Example:

ARGUMENTS="XLX123 203.0.113.45 127.0.0.1"

Enabling:

sudo update-rc.d xlxd defaults

8. Installing the web dashboard

sudo cp -r ~/xlxd/dashboard /var/www/xlxd sudo nano /var/www/xlxd/pgs/config.inc.php

Essential settings

1. Contact information

$PageOptions['ContactEmail'] = 'votre-email@domaine.com'; $PageOptions['MetaDescription'] = 'XLX### - Multi-mode Reflector'; $PageOptions['MetaAuthor'] = 'VOTRE-CALLSIGN';

2. Calling Home configuration (IMPORTANT)

$CallingHome['Active'] = true; $CallingHome['MyDashBoardURL'] = 'xlx.votre-domaine.fr'; $CallingHome['Country'] = 'FR'; $CallingHome['Comment'] = 'French Multi-mode Reflector'; $CallingHome['HashFile'] = '/xlxd/callinghome.php';
$CallingHome['Active'] MUST be set to true to appear in the public lists.

Setting the permissions

sudo chown -R www-data:www-data /var/www/xlxd/ sudo chown -R www-data:www-data /xlxd/

9. Configuring the Apache web server

sudo nano /etc/apache2/sites-available/xlx.votre-domaine.fr.conf

Contents:

<VirtualHost *:80> ServerName xlx.votre-domaine.fr ServerAdmin votre-email@domaine.com DocumentRoot /var/www/xlxd <Directory /var/www/xlxd> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>

Enabling:

sudo a2ensite xlx.votre-domaine.fr.conf sudo systemctl reload apache2

10. Configuring the firewall

TCP ports

sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS sudo ufw allow 22/tcp # SSH sudo ufw allow 10001/tcp # XLX Core sudo ufw allow 10002/tcp # Interlink sudo ufw allow 42000/tcp # YSF sudo ufw allow 30001/tcp # DExtra sudo ufw allow 20001/tcp # DPlus sudo ufw allow 30051/tcp # DCS

UDP ports

sudo ufw allow 8880/udp # DMR+ sudo ufw allow 10001/udp # XLX sudo ufw allow 42000/udp # YSF sudo ufw allow 30001/udp # DExtra sudo ufw allow 20001/udp # DPlus sudo ufw allow 30051/udp # DCS

Enabling:

sudo ufw enable sudo ufw status verbose
For cloud VPSs, also open these ports in the provider's firewall.

11. Starting and checking

sudo service xlxd start sudo systemctl status xlxd sudo chown -R www-data:www-data /var/log/xlxd.xml sudo systemctl restart apache2

Testing the dashboard

http://xlx.votre-domaine.fr

You should see your XLX### reflector with version v2.5.3.

12. SSL configuration (recommended)

sudo apt install certbot python3-certbot-apache -y sudo certbot --apache -d xlx.votre-domaine.fr sudo certbot renew --dry-run
Now go to https://xlx.votre-domaine.fr

13. Registering in the public lists

With $CallingHome['Active'] = true, your reflector registers automatically.

Delay: 2 to 48 hours to appear in the public lists.

Check at: https://xlx.n5amd.com/index.php?show=reflectors

14. Troubleshooting

The service won't start

sudo journalctl -u xlxd -n 50 cat /etc/init.d/xlxd ls -la /xlxd/xlxd sudo chmod +x /xlxd/xlxd

The dashboard is empty

sudo systemctl status apache2 sudo chown -R www-data:www-data /var/www/xlxd/ sudo tail -f /var/log/apache2/xlx-error.log

Not in the lists

  1. Check $CallingHome['Active'] = true
  2. Check the FQDN
  3. Wait 24-48 hours
  4. Check the logs

15. Maintenance

Updating XLX

sudo systemctl stop xlxd cd ~/xlxd && git pull cd src && make clean && make sudo make install sudo systemctl start xlxd

Updating the DMR database

sudo wget -O /xlxd/dmrid.dat http://xlxapi.rlx.lu/api/exportdmr.php sudo systemctl restart xlxd

16. Connecting to the reflector

From Pi-Star (D-Star)

  1. Configuration → Expert → MMDVMHost
  2. D-Star Network section:
    • Protocol: XLX
    • Hostname: xlx.votre-domaine.fr
    • Port: 30001
    • Module: B

DTMF codes

  • *###A → Module A
  • *###B → Module B
  • *U → Disconnect

17. Conclusion

Congratulations! Your multi-mode XLX reflector is up and running.

Next steps

  1. Test with your hotspot
  2. Set up dedicated modules
  3. Add AMBE transcoding if needed
  4. Promote your reflector

Good practice

  • Document your configuration
  • Update regularly
  • Monitor the logs
  • Keep it secure (SSL, updates)
  • Share your knowledge
73 and enjoy operating on your new XLX reflector!

Continue reading

Latest articles

All articles →