Roon ARC and dynamic IP

I have installed Roon 2.0 and ARC on my phone. Manually forwarded port on my edge firewall (external IP is on one of the WAN interfaces with using bridge mode on ISP’s modem). And everything works great as long as my external IP is not changed. Unfortunately, my ISP changes my IP every 24 hours. It seems that ARC cannot handle this and expects to work with IP which was detected during Roon ARC setup.

It looks that core does not report its public IP periodically to whatever service which is responsible for storing this ARC configuration. Restarting roonservice on core also does not help. The only solution is to repeat ARC setup so that new IP is registered.

Has anyone managed to make ARC work with dynamic external IP and can confirm that it still works after IP change? If not, then it makes ARC a bit useless for people with dynamic external IP.

By the way, why don’t you guys simply allow to enter a DDNS domain name for external connection instead of (or in addition to) this autoconfiguration? I understand reasons that not all people are technical savvy but come on. Dynamic DNS is not a rocket science technology, and many people use it for CCTV or access to home network via VPN.

That does seem like a bug.

A very tiny percentage of users have truly static IPs. Mine is also dynamic, but seems to be stable for months, rather than hours, at a time. So I haven’t experienced the problem you have.

Hopefully Roon will have fixed this by the time my IP address changes :slight_smile: .

I started playing with DDNS during lock-down as we were spending most of our time away from home at the summer house. My ISP in Denmark changes the public IP every month or so. Static IPs require a business account. This is probably the situation for many roon users.

This is so common that any of the DDNS suppliers I tried supplied some kind of client you run in the background on your home network to check for changes by your ISP which then auto-updates your DDNS configuration:

Shouldn’t roon be doing something similar? It will not be obvious there is a problem for a while (if there is a problem) . . .

I think what Roon is doing is having the Core send your current external IP address to the Roon servers periodically, so the ARC client can be told what the correct destination IP is.

I guess if the refresh time of the ISPs external IP address is faster than the update time of the IP address on the Roon servers then this might cause the issue described in the OP.

I have manually refreshed my IP by reconnecting PPPoE interface and restarted roonserver service. Indeed, IP has been refreshed this time. Will be checking RAAT logs to see how frequently this happens and if restarting service is needed to do the refresh. If it is, then I will setup daily restart in crontab.

UPDATE: looking at logs, it does the refresh every 4 hours

For anyone concerned by a fact that waiting max 4 hours for roon core to recognize external IP change is too long - I wrote a simple script to check if DDNS record is changed, then if it is, the script restarts roon service. I am running it via crontab every 10 minutes.
If you are running minimal ubuntu installation, you need to install dnsutils and cron packages.
Of course, your network device must be first configured to update DDNS when your IP changes. If it is not possible, you can use ddclient package on your linux core.

#!/bin/bash

# path to log
TMP_FILE="/tmp/curr_ip.txt"

# find IP address and store it in $current_ip variable
current_ip=`dig +short YOURHOST.ddns.net`

# get prev IP from file
prev_ip=`cat $TMP_FILE`

# echo "current IP: $current_ip"
# echo "prev IP: $prev_ip"

# check if ip has changed and restart roonserver
if [ "$current_ip" != "$prev_ip" ]; then
    #echo "IP has changed"
    echo "$current_ip" > "$TMP_FILE"
    systemctl restart roonserver
fi

What Roon is doing is sort of “private DDNS” as only your account will learn the public IP. But, as you discovered, it’s refresh is not as fast as some of the DDNS sevices.