How to set up a Yaesu System Fusion reflector (YSFReflector)

NOTE – 22nd April 2023
I have provided a new version of, if you have had problems with a ysfreflector.ini error, please start the install again from the first ‘sudo wget’ command.

Over the last four or five years I’ve been a regular user of two digital voice modes, D-STAR and DMR. I don’t particularly like to use them to work ‘DX’ but they both have their advantages regarding linking repeaters together and allowing me to keep in touch with people when I’m away from home.

Both have a relatively steep learning curve but over time, I’ve got my head around them and am quite happy configuring radios, building ‘code plugs’ (*shudder*) and operating them.

That left one digital voice mode that I’ve not yet tried; Yaesu System Fusion, often abbreviated to just Fusion or YSF. A few weeks ago I bought myself a Yaesu FTM-100DE and it’s sitting in my shack now. There are no Fusion repeaters nearby so I set up a cheap hotspot to allow me to access the network.
The first thing I’ll say is that the speaker in the FTM-100DE is rubbish! It’s tinny and the audio out of it is dreadful. I plugged an external speaker in and it’s so much better. In fact, I would say that the audio on Fusion is by far the best out of any of the digital modes.

Fusion is just as complicated as the other modes to a newcomer but I’m not going to go into that here. I’m assuming you’re here because you want to set up a reflector. I had a good reason to do that last week and I couldn’t find a complete (and accurate) guide to doing it. It was so frustrating that once I’d got one working, I decided to put together what I hoped would be a decent and easily followable guide.

I must point out that I’m not an expert. I’ve barely touched Fusion and I have a lot to learn. I just wanted to share a detailed solution to something which gave me a lot of frustration. I don’t claim to have written any of the scripts or packages used in this guide, I’m just putting everything together in one place in hopefully easy to follow steps. I have linked to the source pages I used as starting points at the bottom of this entry. – Sidenote, 22/04/2023 – I have fixed one of the scripts following a git repository change.

I did this on a Raspberry Pi and so my instructions are written specifically for that device. I’ve tested this on a Pi Zero W, a Pi2B, Pi3A+, a Pi3B and a Pi3B+. It will not work on a Pi4 as I’m using Raspbian Stretch which is not supported on a Pi4. I’m using Stretch rather than Buster because some parts of this have been removed from Buster. This entire process was successfully tested again on 22nd April 2023 on a Pi2B and on 3rd May 2023 using a Pi4.

*** Additional note – I have now managed to get this working on a Raspberry Pi4 using either Buster or Bullseye. The steps are largely the same with the addition of a couple of extra commands. Please read this guide carefully, making a note of the changes made for Buster/Bullseye. The Buster/Bullseye specifics will be italics and with asterisks ***

First, download Raspbian Stretch Lite (or Buster/Bullseye for a Pi4) and write it to an SD card. I highly recommend balanaEtcher to write the image out to an SD card. Note that we’re using the ‘Lite’ version of Raspbian so you won’t have any graphical user interface and all the work will be done from the terminal.

You will need to either give your Raspberry Pi a static IP address or set up a reservation in your router. I do this by looking at my router and checking what devices have connected and then set up a DHCP reservation so each particular Raspberry Pi I own will always have the same address each time it reboots.

Open up a terminal/dos prompt or whatever client software you’re going to use to connect to the Raspberry Pi and log in.  In my case, the Raspberry Pi is on so I use the command
ssh pi@

You’ll be prompted for a password – It’s currently set to raspberry.
Use the following command to enter the Raspberry Pi config utility:

sudo raspi-config

First of all, expand the filesystem.  You do this by selecting option 7 Advanced Options, then A1 Expand Filesystem, then select OK and you’ll be returned to the main screen.

Now select the first option Change User Password and press enter.  Press enter again and you will be prompted to Enter new UNIX password.  Type a new password, press enter and re-type your new password again.  You will get a message telling you your password has been changed successfully.  Make a note of this new password.

Use the arrow keys again to move down to 4 Localisation Options and press enter.  Use the arrow keys again to select I2 Change Timezone and press enter.  First select your Geographical area and press enter and then select your Time zone and press enter.

Now you should set your Wi-Fi country – By default, this image is set to GB (Great Britain) so if you’re in a different country you should change this to ensure that the Pi uses the correct frequencies.  Select 4 Localisation Options and press enter.  Scroll down to I4 Change Wi-fi Country and press enter. Find your country, press enter and then press enter again to return to the main screen.

Finally, select 2 Network Options and press enter.  Press enter again on N1 Hostname and give your Raspberry Pi a suitable name.

You will now be returned to the main Raspberry Pi Software Configuration Tool main screen.  Use the tab key to select <Finish> and press enter.  You will be asked if you would like to reboot now.  Press enter to reboot and once your Pi has rebooted, log back in using the new password you set earlier.  Make a note of this password because if you forget it, you’ll need to start from scratch.

If you’re using a Mac and connecting to your Raspberry Pi via the terminal you may notice the screen flashes badly.  You can fix this easily and quickly by going into the terminal Preferences/Profiles and make sure the box “Allow blinking text” is not ticked.

Assuming your Raspberry Pi now has either a static or reserved address, you can start with the actual setup.

Log in to your Pi with the new password you set above and type the following commands.

sudo apt update
sudo apt upgrade -y

This is making sure that Raspbian Stretch is fully patched as far as it will go. The first will go through quickly, the second command may take a little longer and if you’re using an older Pi or a Pi Zero, it will take a good few minutes. When it has completed, reboot the Pi.

Log back in and enter these two commands which are loading pre-requisites for the actual installation.

sudo apt install git -y
sudo apt
 install insserv -y

With those done, it’s time to download the install script and run it using these two commands.

sudo wget -O ~/ 
sudo bash

When the install completes, it will ask you for the name and the description of your reflector. The name should always start with your two letter country code, have one space and then the rest of the reflector name. You can use a maximum of sixteen characters. For my reflector, I chose GB QSO365. The description is free text and is a maximum of fourteen characters. For my reflector, I put in the description.

*** If you are using Raspberry Pi OS Buster or Bullseye, you would have received an error at this point, now you need to enter these commands: ***

cd /etc/init.d
sudo systemctl enable
cd ~

Don’t start the reflector just yet though as there are some things you need to do first.

Log into your router and set up port forwarding to the Pi. This is a great site with guides to many different routers. By default the reflector needs port 42000 forwarded to it although you may find that port is already in use on your system. In my case, ports 42000 and 42001 were already being used by my Fusion Pi-Star hotspot so I used 42002. If you have a Pi-Star hotspot on your network, you will need to change the port number away from 42000.  If you’re not using 42000 then you need to edit a configuration file on your Pi.

sudo nano -c /etc/YSFReflector.ini

Scroll down to around line 18 and change the following section:


In my case, I changed 42000 to 42002.

Save the file by pressing ctrl-x, then hit the Y key and then press enter.

Now you’re ready to start the reflector using the command given at the end of the installation.  We’re actually going to restart it because it may have started automatically after the installation completed.  This restart ensures that any port changes are activated.

sudo /etc/init.d/ restart

The next step is to register the reflector. Head over to the Reflector Registry site and click on Register Reflector. Enter the name and the description you used earlier but leave off the two character country code from the name. You need to put in the Host/IP-Address of your internet connection (NOT your Raspberry Pi). If you have a static external IP address, enter it here otherwise you will need to configure a dynamic DNS service.

The Port is the port you configured earlier and the rest should be obvious. You haven’t set up a dashboard yet so you can’t enter that. Click Submit and you’ll get an email telling you it’s been registered with a link to click to accept the privacy agreement.

Setting up a dashboard

You could stop here but it’s not so much fun without a dashboard because you can’t see what’s going on. You can see my reflector dashboard by clicking here. Let’s install a dashboard.
Enter the following commands:

sudo apt update
sudo apt install apache2 -y
sudo usermod -G www-data -a pi
sudo usermod -G www-data -a root
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 775 /var/www/html
sudo apt install php7.0-common php7.0-cgi php7.0 -y
sudo apt install libapache2-mod-php7.0 -y
cd ~
sudo git clone
sudo cp -R ./YSFReflector-Dashboard/* /var/www/html/

If the above commands fail when installing php, it may be because version the listed version is no longer available.  Change all instances of 7.0 for 7.1 (or 7.2, 7.3 etc) and try again.
*** For a Raspberry Pi using Bullseye or Buster, you’ll need to replace the instances of 7.0 with 7.4 ***

With those commands entered, open a web browser and go to where is the IP address of your Raspberry Pi and you’ll get the following screen:

All fields on this configuration page need to be filled in, the defaults are all correct but you have to overtype them yourself. To help you out, here are all the top options, you can just copy/paste these.

The same applies for the Global Configuration section. Even if there is text in the boxes, you need to overtype it. The Timezone is obvious, the URL to Logo field can be left blank and the rest are your personal preference.

When you click the ‘Save configuration’ button, you are presented with a screen telling you to remove setup.php. Sadly it doesn’t tell you where that file is saved so here’s the command to delete it. You should also remove index.html so that doesn’t get served by default:

sudo rm /var/www/html/setup.php
sudo rm /var/www/html/index.html

If you need to edit this configuration in the future, you can do it by editing a file.  Once you’re in the file, the options are obvious.

sudo nano /var/www/html/config/config.php

In your web browser now, just enter, substituting all those xxx for your own IP address. You should be presented with the dashboard for your reflector. If you want to make this available to the outside world, you need to forward port 80 in your router to the Pi and add the dashboard link to your entry on the Reflector Registry.

Everything is done. Now you just have to wait for your reflector to appear on the list of active reflectors here which can take up to two hours. You can also search for it on the Reflector Registry as it should now show active.

By default, your Pi-Star won’t know about the new reflector until it has automatically updated overnight but once it shows in the active reflector list, you can force an update. At the top of the Pi-Star dashboard you’ll find a button called ‘Update’. Click it.

When that has finished, click on Configuration and your new reflector will appear in the YSF Startup Host: drop down box. Select it and click the Apply Changes button.

Finally there are a couple of housekeeping tasks that I suggest you add.

You’re going to add two commands to crontab, this is the built in Linux task scheduler.  
The first restarts the reflector in the early hours of the morning and the second deletes entries from the log that are over six months old.

sudo crontab -e

If you’ve never used crontab on this Pi, you’ll be prompted which editor to use.  Just press ‘enter’ to select the default.

Scroll down to the bottom of the file and add these lines:

# Restart the reflector at 01:02
2 1 * * * sudo /etc/init.d/ restart
# Delete logs in the YSFReflector folder that are older than 180 days
01 0 * * * sudo find /var/log/YSFReflector/*.log -mmin +259200 -type f -delete

Save the file by pressing ctrl-x, then hit the Y key and then press enter.

And that’s it. Although it looks complicated, it’s quite straightforward. When I ran through the complete setup to write this guide, the process took about half an hour.

The reflector I created is called GB QSO365 and the YSF DTMF code is #26368. I will leave it online if anyone wants to use it but please don’t bridge it anywhere. The dashboard can be seen by clicking here.

Finally, here’s the reflector itself. It’s running on a Pi Zero with an external USB ethernet interface. It’s not exactly high-tech.  

As with any Raspberry Pi builds, providing you use a good quality power supply, this is a very reliable system.  It will just run forever.

Creating a YSFReflector
How to install a YSFReflector
YSFReflector dashboard


Add a Comment
  1. After reading some other tutorials and finding bits missing, I landed on this one – thanks to Keith for such a detailed breakdown which (after some brief intervention from Kim at had my YSF reflector online and up and running in a very short time.

    Always nice to actually do something yourself but have a good tutorial to help you along.

    1. Thanks Mick, I’m pleased it works well for you. It’s all very well to write these guides but until someone else actually tries it, I’m never 100% sure I’ve caught everything.

      73 Keith.

  2. Hi keith,

    The only problem i am having is connecting to it externally.. What would be the URL from external?


    1. Hi Nick,
      I assume you mean the dashboard? You need to forward port 80 through your router to the Raspberry Pi and then connect either directly to your IP address ( or to the dynamic DNS name you set up.
      73 Keith.

    2. sorted. Thanks very much for your help.

  3. Hi Keith your instruction are flawless Just make sure you select the right Keyboard layout for your country A UK keyboard layout doesn’t work well on a US keyboard LOL


    Randy KK4OVW

  4. Burnham Radio Club G4RGY

    Very good thanks , had to run script as a service so it runs on reboot and using later 7.3 php and kernel at 88473
    See there is bridge option on reflector site to talk group- is this a simple TG in website or MMDVM_Bridge required as well for DMR bridge?


  5. Thanks! YSF95375 US Steel City – Pittsburgh, PA is on the air!

  6. Keith your instruction are flawless, bud is there are instruction about 2 YSF Ref on 1 server?

  7. Thanks a lot 73 God bless you always

  8. Thanks for the great writeup. It works perfectly and now AZ_DIGIHAM is live running from a 3B+. Do you know if it would be possible to use Buster? do you know what is missing to make it work?

    1. I’m sorry, I don’t. I can’t remember what had changed on Buster which stopped it working but I might revisit that. My priority at the time was to get a working reflector that we could use straight away.
      I built this one originally on a zero and it worked perfectly but the CPU was sitting a little higher than I liked so I moved it to a 3A+ where it ticks along nicely. It doesn’t need a Pi4 although it would be nice to run under Buster.
      73 Keith.

  9. Hello, first of all thanks for your work. I wonder if this is possible to do on the Raspberry Pi zero W in my MMDVM hotspot for it to act both as a YSF Reflector and Hotspot?

    73 de TA2API

    1. Hi,
      If your MMDVM hotspot is based on Pi-Star then no, I don’t think this is going to work because the Pi-Star image makes the operating system read-only and I suspect that won’t be good for a reflector.

  10. I must be doing something wrong. I have my reflector up but won’t stay linked and does not seem to pass any traffic. The reflector is US WolfRiverCoil. I have my router port forward at 43000 and changed the PI in the configuration. Using a Raspberry PI3 B+. I’m listed and I can link to it but drops out after about a minute. What am I missing or do I need something else set in the router?

    1. I bet your ISP is blocking the port. Try 43001 or something like that. I ended up using port 42003.

  11. reflector ID is assigned automatically?

    thank for tutorial

    1. Yes, the reflector ID is assigned automatically when you register it.

  12. Keith
    Thanks for the tutorial, I hope I can find a way of tying it down to just one target repeater. Basically, Initially at least we want to give our local club members a “Way in to their local repeater”.


  13. Is there anyway to change the temperature on the dash board to read in Fahrenheit instead of Celsius?

    1. That’s a really good question – I have no idea.

  14. Thank you for a great step by step instruction on getting the reflector installed and online. I can get to the dashboard, and my reflector shows up on a hotspot, but it does not seem to be bridged to my Wires-X room. And while connected via the hotspot, nothing shows up on the dashboard. I have port 42000 TCP/UDP open on both my router and modem.
    How does the reflector connect back to the room? I have not found any posts anywhere describing the link from to Wires-X… Any help would be greatly appreciated!

    1. Hi Chris,
      I can’t help you when it comes to bridging a reflector to a Wires-X room, I’ve not attempted to do it, sorry. Perhaps someone else reading this is able to offer some advice on bridging a YSF Reflector over to Wire-X.

      1. Thank you for the reply. I guess I shall continue experimenting 😉

  15. i am geting YSFReflector.ini not found Help please

      1. At what point are you getting this message? YSFReflector.ini should be in /etc
        The command to use is sudo nano /etc/YSFReflector.ini

      2. I can see why this “YSFReflector.ini’: No such file or directory” error is happening, the reflector itself was removed from the git repository a couple of months ago. Without that, these instructions are useless. I’m trying to find out if it’s possible to get it added again.

    1. I can see why this “YSFReflector.ini’: No such file or directory” error is happening, the reflector itself was removed from the git repository a couple of months ago. Without that, these instructions are useless. I’m trying to find out if it’s possible to get it added again.

    2. Please try the install again, starting from the ‘sudo wget’ command. The reflector git repository has moved, I have uploaded a new file. Thanks.

  16. I have used these instructions in the past to build a YSF Reflector easily and with great success, however, the Reflector image I had saved and wrote back corrupted, and now these instructions install it and the dashboard, but the Reflector DOES NOT show-up in the registry, I have registered it, and still nothing? Am I missing something or has something in the code changed? Thanks, Greg

  17. So I see your picture of the ysf reflector with one USB converting into a network adapter to connect with the internet. What is the other USB cable doing?

    1. Hi Tim,
      It’s power. The Pi has two micro USB connectors, one goes to the ethernet adapter and the other one goes to an official Raspberry Pi PSU.
      73 Keith G6NHU

  18. So here is my question.   I find all kinds of documentation on how to build reflectors and multi nodes etc.   
    But what I never find is how these all connect into a physical repeater system.    
    Do I need a multi-port controller on the front end of things and then I’d feed the audio out of the pi’s or equivalent into the controller and then the controller determines which input gets the broadcast authority at that point?   

    i’m willing to build these fun connection points but I need to know how to practically use them.


  19. So I have installed the QSO365 YSF Reflector and installed the DG9VH YSFReflector Dashboard. I registered my YSFReflector and it has been showing offline for almost a day now. I had to add a port forwarding rule in my router to get access to the dash board and that is now working great! So I also added a port forwarding rule for port 42000 but that hasn’t made any difference and my YSF is still offline. How can I trouble shoot this issue? Everything seemed to install smoothly, but no dice. Any help you can offer would be greatly appreciated. By the way my YSF Reflector is #45150 and the dashboard is at

    1. Tim, did you forward TCP or UDP with port 42000? I’m not 100% sure which the reflector needs, I’ve forwarded both.
      73 Keith G6NHU

  20. I use port 42002, otherwise, on my home router, it won’t work with pi-star…

    1. Yup, I mention this in the article, I also use 42002 because 42000 and 42001 are being used by my hotspot.

  21. Hi, I have the reflector working but not the dash, i have the Apache2 landing page but nothing else seems to work

    1. Have you entered the final two commands? The first one downloads the dashboard, the second one copies it to the correct place.
      sudo git clone
      sudo cp -R ./YSFReflector-Dashboard/* /var/www/html/

      1. Sorry for the delay, I damaged my pi and been waiting to get another they are like rocking horse….

        I re formatted the sd card and followed the instructions only shows a little info:-

        YSFReflector-Dashboard by DG9VH Setup Process
        Please fill in the necessary information below
        YSFReflector Configuration
        Path to YSFReflector-logfile

        the reflector is working just not the dash, i’m sure i’m missing something simple

        only commands I have done differently are

        sudo apt install php8.0-common php8.0-cgi php8.0 -y
        sudo apt install libapache2-mod-php8.0 -y

        Many Thanks


        1. I don’t know, Brian. I’ve not used php8 but I did test earlier this week using php7 and it works perfectly. Perhaps try that?

          1. you are correct, I got tunnel vision and php8 stuck in my head even though its clearly listed on your guide

            Thank you very much for the support

  22. Hi, I tried to install the client with “”sudo wget“” but during the process I get error “”cannot stat ‘YSFReflector.ini’: No such file or directory””. do you have some advice? Thank you

    1. I can see why this “YSFReflector.ini’: No such file or directory” error is happening, the reflector itself was removed from the git repository a couple of months ago. Without that, these instructions are useless. I’m trying to find out if it’s possible to get it added again.

    2. Please try the install again, starting from the ‘sudo wget’ command. The reflector git repository has moved, I have uploaded a new file. Thanks.

      1. It works fine. Thanks

  23. Please try the install again, starting from the ‘sudo wget’ command. The reflector git repository has moved, I have uploaded a new file. Thanks.

  24. Will be a Raspberry Pi 4 update?
    Thank you

    1. I have been able to make it work using Buster and Bullseye so yes, you should be able to follow these updated instructions now. Please see the specific steps for Buster and Bullseye on a Pi4

  25. Building my first YSF reflector. Everything fine until the sudo wget command. I’m being told the not trusted-expired. Please help???

  26. Got my reflector installed and running. How do I change the logo. I thought the file was in /var/www/html/img but there was no img directory. I made the img directory and inserted logo.png into it. But still no good. I think I have the correct path in the config.php file. ANy suggestions?

    1. Hey Joe, in my case the logo is /var/www/html/header.png. The filename is defined in /var/www/html/config/config.php

      Hope that helps.

      73 Keith

      1. Keith
        Okay I moved the png file to /var/www/html/header.png still no good.What do I need in the config.php? I have the following: define(“LOGO”, “/var/www/html/header.png”);

        73 de Joe

        1. Sorry Joe, I really don’t know. That’s exactly what I’ve got in my config.php file but when I set this up three years ago, I did a lot of tweaking to get the dashboard how I wanted it and I really can’t remember all the changes I made. It’s going to be calling it from /var/www/html/index.php somehow. If you right click on my dashboard and view the source, that may help you.

        2. Keith,
          Got it working. Had the config.php wrong. Corrected it and works fine. Thanks

          Anything on my other question as to why the Dashboard is not showing who is transmitting?

          73 de Joe

  27. Also as of late I noticed the system does not show who is transmitting. I know a few people with the same problem.


  28. Ok I will try here one more time. MY Reflector and dashboard seem to be working fine. However the dashboard does not show anyone CURRENTLY TXing.Once in a while it will shown for a split second then nothing again.This has been driving me crazy for a little over 2 months. Any suggestions. If I log into other dash boards they seem to work fine. Please HELP..My dash is at

    1. Redid the dashboard and still no good. New IP for dash is

      1. if no live tx data……

        in putty
        log into the pi
        edit the file with

        sudo nano -c /etc/YSFReflector.ini

        change debug to 0

        save with CTRL X, Y, press enter

        then restart apache2 and the reflector as below

        sudo systemctl restart apache2
        sudo /etc/init.d/ restart

        now it works

        1. Hi Ken,
          Thanks for the reply.
          I finally found what the problem was.
          It was a wrong UDP port number in my YSF reflector list. I configured all my stuff to use port 42000 but in the YSF Reflector list I had 42002. Very stupid error but not easy to find out.

        2. how did you make your YSF connected at a TG310?
          i never been able to make my dashboard working here and no one want to help me?
          gervais ve2ckn

        3. you can connect an TG310 with your YSF ?
          and my dashboard does not function at all,
          never been able to make it work!

    2. did you find a solution to this please

  29. Hello all,
    Successfully installed the reflector and dash on a 3B+, running bullseye. This Pi won’t boot, for some reason on anything older.
    Having issues with the dash:
    After several days, the dashboard becomes slower and slower responding, and finally after anywhere from 3 days to a week, won’t respond at all. Restart, re boot etc does nothing. If I re flash the SD with the image I saved when built, everything is fine. After a few days, same thing.
    Any ideas what I’ve done wrong?

    1. Sounds like it could be SD card corruption. Either an SD card that’s on the way out, or I’ve seen corruption caused by a poor PSU.
      Do you have a spare SD card you can use to build the image?

  30. Yes, imaged 2 cards when I built it. So far, so good with card #2. Up time is 17 hr with no issue. The other thing I failed to mention that was happening was crazy values being displayed in sys load and CPU usage etc. Sys load sometimes at 1000% or more at times. The problem also escalated when entries of more than 2 pages accumulated in the all time heard list. Fingers crossed…..

  31. Hi, I tried to instal my reflector on a raspberry 3.
    I followed all the instructions and registration too.
    All seams working.I see my YSF id that is active and I see also it is in the web list of pi-star.

    The problem is that I cannot see my YSF ID in my pi-star local list and then I cannot connect it.

    Looking in my YSFReflector.ini I see these lines:
    I: 2023-12-27 12:38:15.172 Opening YSF network connection
    I: 2023-12-27 12:38:15.172 Opening UDP port on 42000
    I: 2023-12-27 12:38:15.172 Opening UDP port on 42000
    M: 2023-12-27 12:38:15.172 YSFReflector-20210824 is starting
    M: 2023-12-27 12:38:15.172 Built 12:45:27 Dec 27 2023 (GitID #09cd720)
    M: 2023-12-27 12:40:15.215 No repeaters/gateways linked

    Appear I do not have repeater or gateway linked.
    Unfortunately I do not have repeaters then how I can use use this reflector via hotspot?
    Or what is not working on my installation?

    I have a Raspberry 3 with the YSFReflector running and a separate hotspot HW

  32. Hi,

    Has the been removed from, I’m getting a 404, it happens when pasting into a browser too.

    Many thanks


    1. Hi Dave,

      No, it’s definitely there, I’ve just tested from a browser and also logged on by ftp to make sure it’s still there. You don’t have any network level adblocker that could be stopping it?


  33. Is there a way to BLOCK a user on the reflector.

  34. Good Evening, im getting similar to Dave. error: THE CERTIFICATE FOR ‘QSL.NET’ Is not trusted & expired

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.