Try installing/running on ARMv7

Hi, I am trying to install/run roon bridge on an ARMv7 device. Its an older device but it has neon support. The install script finishes and i can start the bridge but the RAAT Server seems to exits (exit code =0) without any error messages afetr a few seconds. The RAATServer log shows this:

12/29 11:50:50 Info: Starting RAATServer v1.8 (build 1125) stable on linuxarmv7hf
12/29 11:50:51 Info: Local time is 12/29/2025 11:50:50, UTC time is 12/29/2025 10:50:50
12/29 11:50:52 Trace: [RAATServer] detected ALSA support
12/29 11:50:54 Trace: [bits] myinfo: {"os":"Linux 6.6.64","platform":"linuxarmv7hf","machineversion":100801125,"branch":"stable","appmodifier":"","appname":"RAATServer"}
12/29 11:50:56 Info: [RAATServer] creating RAAT__manager
12/29 11:50:56 Info: [RAATServer]     appdata_dir  = /root/.RAATServer
12/29 11:50:56 Info: [RAATServer]     unique_id    = 381ec600-3f8d-447b-bdb3-ba55e02b87fc
12/29 11:50:56 Info: [RAATServer]     machine_id   = 1669713c-291a-b18d-a4fa-72100c1ae866
12/29 11:50:56 Info: [RAATServer]     machine_name = trixie
12/29 11:50:56 Info: [RAATServer]     os_version   = Linux 6.6.64
12/29 11:50:56 Info: [RAATServer]     vendor       = 
12/29 11:50:56 Info: [RAATServer]     model        = 
12/29 11:50:56 Info: [RAATServer]     service_id   = d7634b85-8190-470f-aa51-6cb5538dc1b9
12/29 11:50:56 Info: [RAATServer]     is_dev       = False
12/29 11:50:56 Trace: [raatmanager] starting
12/29 11:50:56 Trace: [raatmanager/linux] FOUND id=hw:CARD=Element,DEV=0 usb_id=
12/29 11:50:56 Trace: [raatmanager/linux]       vendor=                               name=Element                       
12/29 11:50:56 Trace: [raatmanager] initialized
12/29 11:50:57 Info: [RAATServer] running RAAT__manager
12/29 11:50:57 Trace: [raatmanager] starting discovery
12/29 11:50:57 Trace: [discovery] starting
12/29 11:50:57 Info: [discovery] [iface:lo:127.0.0.1] multicast recv socket is bound to 0.0.0.0:9003
12/29 11:50:57 Info: [discovery] [iface:lo:127.0.0.1] multicast send socket is bound to 0.0.0.0:51198
12/29 11:50:57 Info: [discovery] [iface:eth0:10.0.0.48] multicast recv socket is bound to 0.0.0.0:9003
12/29 11:50:57 Info: [discovery] [iface:eth0:10.0.0.48] multicast send socket is bound to 0.0.0.0:34996
12/29 11:50:57 Info: [discovery] [iface:mlan0:10.0.0.208] multicast recv socket is bound to 0.0.0.0:9003
12/29 11:50:57 Info: [discovery] [iface:mlan0:10.0.0.208] multicast send socket is bound to 0.0.0.0:46760
12/29 11:50:57 Info: [discovery] unicast socket is bound to 0.0.0.0:9003
12/29 11:50:57 Trace: [raatmanager] starting server
12/29 11:50:57 Info: [jsonserver] listening on port 9200
12/29 11:50:57 Trace: [raatmanager] announcing
12/29 11:50:57 Debug: [discovery] broadcast op is complete
12/29 11:50:58 Trace: [inetdiscovery] added device raatserver/381ec600-3f8d-447b-bdb3-ba55e02b87fc in addr:__ADDR__
12/29 11:50:58 Trace: [inetdiscovery] added service com.roonlabs.raatserver.tcp for device raatserver/381ec600-3f8d-447b-bdb3-ba55e02b87fc
Starting the bridge log, this goes on forever:

00:00:00.046 Warn:  get lock file path: /tmp/.rnbgem0-
00:00:01.729 Trace: [childprocess] using unix child process
00:00:02.020 Debug: PathForResource, filename: ../.update
00:00:02.090 Debug: PathForResource, candidate: /opt/RoonBridge/Bridge/../.update
00:00:02.125 Debug: PathForResource, filename: RAATServer
00:00:02.125 Debug: PathForResource, candidate: /opt/RoonBridge/Bridge/RAATServer
00:00:02.140 Debug: PathForResource, filename: RoonBridgeHelper
00:00:02.141 Debug: PathForResource, candidate: /opt/RoonBridge/Bridge/RoonBridgeHelper
Initializing
00:00:02.455 Info:  ConnectOrStartAndWaitForExit RAATServer, path: /opt/RoonBridge/Bridge/RAATServer
00:00:02.809 Info:  Starting /opt/RoonBridge/Bridge/RoonBridgeHelper
Not Running (.o)
00:00:00.241 Warn:  get lock file path: /tmp/.rnbhgem0-
Running
00:00:18.047 Warn:  exception starting raatserver: System.Net.Sockets.SocketException (0x80004005): Connection refused
  at System.Net.Sockets.TcpClient..ctor (System.String hostname, System.Int32 port) [0x0006d] in <ef2b8cc0336c473382f0e9112dd3c795>:0
  at Sooloos.RAATServer.ConnectOrStartAndWaitForExit (System.String path, System.String args, System.Action`1[T] status, Base.ChildProcess& p) [0x00165] in <c3e2d33b54f34224bdf8da1e4595ee94>:0
Not Running (.o)
00:00:18.284 Debug: PathForResource, filename: ../.update
00:00:18.284 Debug: PathForResource, candidate: /opt/RoonBridge/Bridge/../.update
00:00:20.285 Info:  ConnectOrStartAndWaitForExit RAATServer, path: /opt/RoonBridge/Bridge/RAATServer
Running
00:00:26.322 Warn:  exception starting raatserver: System.Net.Sockets.SocketException (0x80004005): Connection refused
  at System.Net.Sockets.TcpClient..ctor (System.String hostname, System.Int32 port) [0x0006d] in <ef2b8cc0336c473382f0e9112dd3c795>:0
  at Sooloos.RAATServer.ConnectOrStartAndWaitForExit (System.String path, System.String args, System.Action`1[T] status, Base.ChildProcess& p) [0x00165] in <c3e2d33b54f34224bdf8da1e4595ee94>:0
00:00:26.369 Debug: PathForResource, filename: ../.update
00:00:26.369 Debug: PathForResource, candidate: /opt/RoonBridge/Bridge/../.update
Not Running (.o)
00:00:28.378 Info:  ConnectOrStartAndWaitForExit RAATServer, path: /opt/RoonBridge/Bridge/RAATServer
Running
00:00:34.422 Warn:  exception starting raatserver: System.Net.Sockets.SocketException (0x80004005): Connection refused
  at System.Net.Sockets.TcpClient..ctor (System.String hostname, System.Int32 port) [0x0006d] in <ef2b8cc0336c473382f0e9112dd3c795>:0
  at Sooloos.RAATServer.ConnectOrStartAndWaitForExit (System.String path, System.String args, System.Action`1[T] status, Base.ChildProcess& p) [0x00165] in <c3e2d33b54f34224bdf8da1e4595ee94>:0
00:00:34.439 Debug: PathForResource, filename: ../.update
00:00:34.439 Debug: PathForResource, candidate: /opt/RoonBridge/Bridge/../.update
Not Running (.o)
00:00:36.448 Info:  ConnectOrStartAndWaitForExit RAATServer, path: /opt/RoonBridge/Bridge/RAATServer
Running
00:00:42.475 Warn:  exception starting raatserver: System.Net.Sockets.SocketException (0x80004005): Connection refused
  at System.Net.Sockets.TcpClient..ctor (System.String hostname, System.Int32 port) [0x0006d] in <ef2b8cc0336c473382f0e9112dd3c795>:0
  at Sooloos.RAATServer.ConnectOrStartAndWaitForExit (System.String path, System.String args, System.Action`1[T] status, Base.ChildProcess& p) [0x00165] in <c3e2d33b54f34224bdf8da1e4595ee94>:0
Not Running (.o)
00:00:42.500 Debug: PathForResource, filename: ../.update
00:00:42.500 Debug: PathForResource, candidate: /opt/RoonBridge/Bridge/../.update
00:00:44.501 Info:  ConnectOrStartAndWaitForExit RAATServer, path: /opt/RoonBridge/Bridge/RAATServer
Running

Any ideas?

Connection refused indicates that the server is unreachable or the machine is rejecting the connection, possibly because of firewall rules.

See System.Net.Sockets.SocketException (0x80004005).

Thanks for the response!
I am on a minimal debian installation which does not have any firewalls/iptables, not sure if i missed something. I think the error in the log pops up because the RAATServer is exiting after a few sconds without any error. If i only start the RAATServer it shows no error messages (see logs) and shuts down after tha last log line.
I am a little bit confused hwta to do now. I found an old post that ROON wil switshc to .NET insteadof MONO but that was 2 years ago.

What is the server running on? It would seem that this is refusing the connection.

.Net is fully supported on Linux Nowadays, so that’s not relevant to the problem.

  1. I have no running ROONServer currently. I am trying to start the roon-bridge which starts the RAAT-Server. The roon-bridge/RAATServer is running on an Armv7l with a linux 6.6 kernel and a minimal debian distro (mmdebstrap). Its an SBC but not a known one. ALSA and sound output is working, network is working.
    After tracing around, i found out that the RAATServer can open the port on 9004 and listens. But exits without any error shortly after. I am currently trying to find out why
2174  setsockopt(5, SOL_TCP, TCP_NODELAY, [0], 4) = 0
2174  bind(5, {sa_family=AF_INET, sin_port=htons(9004), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
2174  listen(5, 2147483647)             = 0
2184  rt_sigaction(SIGCHLD, {sa_handler=0x25f1e8, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO|SA_NOCLDSTOP, sa_restorer=0xb6cfece1}, NULL, 8) = 0
.....
2174  accept(5, NULL, NULL <unfinished ...>
2202  exit_group(0)                     = ?
2202  +++  +++
2202  +++  +++
2184  --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=2202, si_uid=0, si_status=0, si_utime=1 /* 0.01 s */, si_stime=1 /* 0.01 s */} ---
  1. the roon-bridge is using MONO. Thats why i am curious if there is a roon.bridge which uses .NET because i found abn article on the roon webpage 2 years ago where they said they are switching from MONO to .NET

Don’t expect RAATServer to do anything if the server isn’t running. It’s Roon’s distribution component, and dependent on Roon Server.

We’ve already established that there is an exception because the server isn’t running, and the (local) RAATServer exits because there is nothing to do until the connection request is fulfilled.

The solution is to install Roon Server on another machine.

Roon has been using .Net Core on Linux for two or more years (the folders still refer to Mono.)

Hmm.. I dont think so
For testing purposes i already have installed the roon bridge on an x86 DietPi linux. There the RAATServer does not exit and reboot the whole time there, and i dont think its intended that the RAATServer does this even if the ROONServer is not up.

I am clueless. Maybe i am midding something in the kernel but withut proper logs (i tried strace aso) i am stuck now :frowning:

Hello @Christian_Durnberger,

Thank you for the detailed investigation and logs — we appreciate the effort you’ve put into troubleshooting this.

At this point, it’s important to clarify expectations around platform support.

While Roon Bridge and RAATServer may run on some ARM-based systems, ARM platforms (especially ARMv7 and non-standard SBCs) are not fully supported or officially qualified by Roon. These systems do not go through the same development, validation, or QA testing pipeline.

As a result:

  • We cannot guarantee stability or correct behavior on ARMv7
  • Unexpected exits, silent failures, or lifecycle issues (such as RAATServer terminating without errors) are possible
  • Behavior may vary significantly depending on kernel version, libc, CPU features, or distro build

Because this platform is outside officially supported configurations, we’re unfortunately unable to provide further troubleshooting or guarantee a working solution on this hardware.

If reliable operation is required, we recommend running Roon Bridge on a supported x86_64 Linux system or on a known, Roon Ready–certified device.

We understand this may be disappointing, but we want to be transparent about the current limitations.

1 Like

I recommend creating a thread about this topic in the Tinkering category, where topic threads don’t auto-close after a certain duration, unlike those in Support.

While this configuration isn’t fully supported, other Roon users might have experience with workarounds they are willing to share.

Thank you!