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.