Talking to Roon from another VLAN (I got it working)

Hi @Aaron_Turner , awesome work and write up! Thanks a lot for this effort.

I also used to have the Roon remotes on a different VLAN and subnet than the core. Discovery was not a problem for me though as Roon seems to be also sending out multicast (SSDP) messages that get correctly forwarded by pfsense. However it was always a bit slow, maybe because it sends out the broadcasts first. I am just wondering if your udp relay daemon is required in addition to the multicast discovery.

For me it did not work out though as the iPad app was crashing frequently when the remote was in a different subnet then the core. Also I discovered that the core tries to establish connections to the router for whatever reasons. So I had finally to give in and move my ipad and phone to the Roon / Media subnet :frowning:

Kind regards,


If you use udp-proxy-2020, you don’t need to worry about multicast forwarding for Roon clients to talk to a Roon Core.

If you’re using something like AirPlay with Roon to stream to an AppleTV you’ll still need multicast forwarding for Apple Bonjour (aka mDNS) which is what the Avahi daemon on pfSense is for.

1 Like

Anyone got a guide on how do I install udp-proxy-2020 on my raspberry pi (armv7) running wireguard?

The GitHub pages links to pre compiled binaries. Just download and unpack the archive.

well I tried, but got sudo: ./udp-proxy-2020: command not found. I guess it isn’t compatible to my pi.

Are you sure the path to udp-proxy-2020 is correct? Have you checked that the file has the executable flag? You can run the command ‘ls -l’ in the directory of the binary to check this.

I had this working on my RPi4…what model pi do you have and which binary did you download?

I downloaded the udp-proxy-2020-0.0.9-linux-armv7.
Managed to have it executed using the below

sudo ./udp-proxy-2020 --interface eth0,wg0 --port 9003 --cache-ttl 300

But nothing seems to happen. Roon wasn’t able to see my devices over vpn.

wireguard & pi is on xx.xx.1.4 , roon rock is on xx.xx.1.5

Before we debug further, please perform the following tasks (in order) and validate it still doesn’t work:

  1. Reboot your phone or other device which is running the Roon client over VPN
  2. Connect to VPN
  3. Start Roon

If that still doesn’t work, then you can use the -P flag to generate pcap files for debugging:

  1. Force quit Roon (if you don’t know how to do this, reboot your phone)
  2. Restart udp-proxy-2020 and add the -P flag
  3. Connect to VPN
  4. Start Roon
  5. Wait 30 seconds

Then you can copy the *.pcap files in /root to your PC. Easiest way to share them with me is to open a ticket on github and attach them there. Sign in to GitHub · GitHub

Hi @Aaron_Turner,

I seem to be having the same issue as @Kelvin_Yip. I have udp-proxy set up on my Pi4 running Wireguard and after a bit of tinkering, the service seems to be starting and running normally.

When I connect to ny Wireguard VPN from my iPhone, I can see/browse my Roon Core (running on a dedicated Rock machine), but my iPhone can’t be selected as a playback zone.

I pulled some pcap logs; would you have time/inclination to review them if I submit a GitHub ticket?

Can you make sure you’re running v0.0.11 first? That has a fix for that exact issue.

If you’re still having issues, use the --pcap and --pcap-path /some/directory and then reboot your phone and then recreate the issue and then attach the pcap files to a new ticket: Sign in to GitHub · GitHub

@Aaron_Turner first and foermost thank you so much for the work and sharing.

I am trying to set this up for my 2.6 pfsense machine. I am not very familiar with BSD, so I am probably doing something wrong, as I cannot get it to work. I have followed these instructions:

First question I would have would be for step
" Copy the correct udp-proxy-2020 binary for your system to /usr/local/bin/udp-proxy-2020"

…would this be a file named ‘udp-proxy-2020’ in the dir /usr/local/bin/ ? (where the filename would be the renamed bin file which I downloaded (amd64 version)) OR a file in a dir called ‘/usr/local/bin/udp-proxy-2020/’ ?

I believe I have tried both (and performed all other steps).

However when I try ‘service udp-proxy-2020 start’ as root, it returns:

“env: /usr/local/etc/rc.d/udp-proxy-2020: No such file or directory”

…but when i do a ls in the folder, the file is there?

…like I said, this is probably due to my limited understanding of the OS, so hopefully someone can help me out by telling me what to check :).

Also, have you considered making this an official package for pfsense? Like others I am way more trusted with their awesome gui… :slight_smile:



  1. directory is /usr/local/bin File is called udp-proxy-2020.
  2. the missing file or directory error is pretty self-explanatory… my only guess is the file you created is slightly wrong or something. Maybe not chmod 755?

Honestly, I run run pfSense 2.6.0 at home personally and this is (as best as I know at least) exactly how I have things configured.

As for making a package… I have. I even have a ticket for it. TL;DR: Don’t hold your breath unless someone steps in to help. :frowning:

:slight_smile: Well thanks for doing so! Not sure why noone has stepped in, would be a great addition I think!

And with regards to the error being pretty self-explanatory, I would agree, but that’s also why I am puzzled… Please see the screenshot attached. I uploaded the file using pfsense’s GUI, which puts the file in /tmp. I then copied it over, I then see the file being there. I then chmod it, and then it says the file’s not there when I try to start the service… I’m lost… :slight_smile:

Hi, would anyone have instructions for installing udp-proxy-2020 on a pfsense amd64 box? Would love to try, but don’t really know where to begin. My goal is to be able to use Roon remotely when I am connected to my home LAN remotely via OpenVPN (running on the pfsense box).

I was trying to follow the script, but don’t know what it means to edit:

change the port and add --interface {dev-name} as many times as needed.

udp_vars="–port 9003 --interface lagg0,lagg0.200,lagg0.400,ovpns2 --logfile /var/log/udp-proxy-2020.log"

On my system, my WAN is igb3 and LAN is igb2, but don’t have anything that says ovpns2…

Thank you!

@Martin_Timmermans : Can you verify the file contents are indeed this file? udp-proxy-2020/udp-proxy-2020 at main · synfinatic/udp-proxy-2020 · GitHub

also what happens if you just try running the script manually: /usr/local/etc/rc.d/udp-proxy-2020 start

hi @hammer :slight_smile:

The instructions are here: udp-proxy-2020/startup-scripts/pfSense at main · synfinatic/udp-proxy-2020 · GitHub

you will want to use igb2 for your internal network and the name of your OpenVPN server interface. ovpns2 is mine, but yours could be different. It should be ovpnsX where X is a number.

Thank you…that’s the part I don’t understand. On my pfsense, I don’t have an ovpnsX interface. I run OpenVPN Server on the pfsense box and OpenVPN is only used when, say, I connect to it when from the iOS app when I am away. It is not always on…does that make a difference?

On pfsense, going to VPN/OpenVPN, I see that interface is WAN and Protocol is TUN and Port is XXXX. Tunnel network is So I think it’s my main LAN and than I want to “connect”? But how?

Thank you

Have you run ifconfig on your pfsense box? the UI hides the interface name.

Ah! Thank you! It’s ovpns2. Let me try the instructions now!