Roon Bridge not working on BeagleBone Black

OK, that’s unfortunate to hear, but I understand. I made it private now. I hope it will be fixed in the next update of RoonBridge.

Yes, that is indeed the exact same problem. The custom board which is refered to there is the exact same board as I fixed this issue on. The custom board is based on a BeagleBone black and is almost identical. I also tested it on a BeagleBone black develop board, it worked there as well.

Basically as you can read from the post this is a custom board, where the company pulled the plug from. The kernel was at 3.8.13 when plugged.

I have now developed a new kernel on 5.10 and updated OS to Debian 11. At first I was pretty sure this was a Kernel issue regarding TLS and Internet standards. Although later when going back from Roon 1.8 to the latest 1.7 version I saw that the connection issue earlier stated showed on 1.7 aswell, exactly four times. Always four times.

I have been in embedded software engineering for some time now, and that immediatly excluded the kernel issues/options for me. If it was a kernel related issue it would either give the error, or it would not, but not give that error four times before connecting. That’s unexpected behaviour, and not an feature that is not enabled.

So, that pretty much told me it must be in the RoonBridge. After comparing these files for some time I came to the conclusion that the mono-sgen has at least changed (I don’t know anymore if it was a version change, or just compiled a different way.)

Furthermore, I found out that this issue is purely in RAATServer, Roonbridge and RoonBridgeHelper are working as expected. After this findings I installed mono runtime on Debian 11:

apt install mono-runtime-sgen

This provides only the runtime utilitys of mono, a bit like the RoonMono folder of the RoonBridge. I then changed the RAATServer script of the RoonBridge, I downloaded and extracted RoonBridge in my /root folder:

cd /root/RoonBridge/Bridge
vi ./RAATServer

Now change $MONO_DIR/bin/mono-sgen to your installation path of mono-sgen for me /usr/bin/mono-sgen:

cd "$ROOTPATH/Bridge"
if [ -x /bin/bash ]; then
    exec /bin/bash -c "exec -a RAATServer /usr/bin/mono-sgen --debug --gc=sgen --server RAATServer.exe $@"
else
    exec  /usr/bin/mono-sgen --debug --gc=sgen --server RAATServer.exe "$@"
fi

Save the file and you can now start and connect to the Core.

What I finally did in the repo I just made private is strip the mono-sgen from Debian 11. This is the armhf version of Debian. So, you revert the earlier made changes in RAATServer:

rm /root/RoonBridge/Bridge/bin/mono-sgen
cp /usr/bin/mono-sgen /root/RoonBridge/Bridge/bin/

Because there is a different version /root/RoonBridge/RoonMono/lib/mono/4.5/mscorlib.dll might has to change as well, same for other dependencies of mono-sgen, for me those dependencies are in /usr/lib/mono/4.5 and …/gac:

rm /root/RoonBridge/RoonMono/lib/mono/4.5/mscorlib.dll
find / -name mscorlib.dll
cp /your/path/to/mscorlib.dll /root/RoonBridge/RoonMono/lib/mono/4.5/mscorlib.dll
find / -name gac
find / -name 4.5
cp -r /usr/lib/mono/4.5/* /root/RoonBridge/RoonMono/lib/mono/4.5/
cp -r /usr/lib/mono/gac/* /root/RoonBridge/RoonMono/lib/mono/gac/

You will now be able to start the RoonBridge with the start.sh, it will now only use the mono-sgen in the RoonBridge folder itself.

What I do think might have happened regarding the mono version, since it seems like everyone with a armv7 except RPI does seem to have this issue, BBB or not. Is that stripped from for example Raspbian or heavily build (from source) on Raspbian, which causes some incompatabilities. However I do not know exactly how the mono-sgen was build (I think from source?). I checked versions of mono, and if I recall correctly the version where the same, so that would indicate different build

Might be something with the timing and making calls within the program as well. I have not yet had to time to build mono-sgen from source yet and test with that, but I might do so this week.

I provided a README as you, or your developer team might have seen with some pointers which I might think are worth looking at.

So to make clear: The problem you are refering to I am sure is fixed with the above method. As I am on exactly the same board. I am also sure this solution works for BeagleBone, there seem to be a lot of support requests about BeagleBone as well. I cannot say for sure about other custom boards with armv7, but I would expect this works, as the problem seems to be exactly the same from what I read on the support forum as on BeagleBone.

Feel free to respond, if you have any more questions.

edit: I should also add that the first solution where you only change the RAATServer script, does not provide the error once when the start.sh script is started, it immediatly connects.

The second solution, where you change the mono-sgen in RoonMono provides the error exactly once before connecting to the server. That is why I referred to some timing issues, or dependencies.

I stated this in the README, but I think it is something important so repeat it here once again.

3 Likes

Hi @Lars_Grootkarzijn ,

Thank you very much for the detailed instructions and the files you sent over, I have forwarded the ticket to the dev team for further review. We really appreciate you putting this together!

1 Like

Hi Noris, I forgot one thing in my edited version, I now added these lines to the instructions.

3 Likes

Hi Noris,

Since the last time of posting there has not been yet an update for RoonBridge. Out of curiosity I was wondering if the cause of this issue has been resolved.

Hi @Lars_Grootkarzijn ,

I see that the ticket is still in the queue but it hasn’t reached the top of the queue yet. I’ve bumped the ticket to be reviewed by the team, but I am unable to comment on a timeline.

Hello @noris,

Is there any update regarding all the work and effort @Lars_Grootkarzijn put into this and you guys publishing a new version of the Roon bridge?

Thank you in advance.