Roon Extension Manager 1.x (currently at v1.1.2)

Hi @Jan_Koudijs,

Thanks for your feedback! I was able to build the docker images and publish them with the info you provided me, first great step!
Testing of the extension however fails as in my configuration layout of the extension I have a box listing the available serial ports. The listing works fine running the extension on Windows however it does not on a Linux host. I have to look how I can solve this. I’m open to an idea :slight_smile:

Thanks,
Guy

There are a few things regarding the serial port. First thing is that the serial device has to be brought into the container, this is done by adding a device option in the repository entry of the extension. This provides an input field for the serial device path at install time, and uses the provided value as a default.

"options": {
    "devices": [
        "/dev/ttyUSB0:Serial Device Path"
    ]
}

In the Device Control category within the Extension Repository you can find examples of how to fit it in the generated .reg/etc/repository.json file.

The querying of serial ports fails because the udevadm application is not available in the Docker image, you can solve this by adding the eudev package to the RUN apk add... line provided earlier. It might be a disadvantage that this provides a long list of which only the device brought into the container can be used.

Last thing is the access to the serial device within the container, quickest way to fix this is to remove the USER node line in the Dockerfile.

1 Like

Yesterday I visited my user page on Docker Hub to find out that page loading was very slow and after a while it showed no repositories and stated that there were no public repositories available :exploding_head:

Checking the status page of the Docker Hub services showed that one of the services was indeed down, so I started breathing again :wink:

After opening the Settings dialog of the Extension Manager I saw that it was not possible to select an extension. It turned out that the service that was down prevented the querying of the Downloads count, which blocked the extension selection.

As it is not great (to put it mildly) that such a secondary function blocks the primary functionality, I used the downtime of the Docker service to make the Extension Manager more robust. Now an extension stop or restart is possible even in case some Docker Hub services are down.

To summarize the above:

Extension Manager v1.1.1 is now available!

It has also some other bug fixes and robustness improvements. The full change list:

  • Don’t let a failed Downloads query block the Settings dialog
  • Periodically retry Extension Repository download in case it failed
  • Fix a bug in the displayed Uptime when in the “weeks range”

Enjoy!
2 Likes

Hi @Jan_Koudijs,

Thanks for sharing these implementation details! I was able to make it work. In addition to your suggestions, I needed to add --device=/dev/ttyUSB0 to the docker run command.

What are the next steps getting the extension within the Manager’s repository?

Hi @Guy_Maurier,

I already prepared an entry for the Extension Repository and used your updated Docker image to verify it. All looks also fine to me so I just released version 1.0.11 of the repository which adds Moon Control to the list of supported extensions :partying_face:

Nice to see an additional device supported via an extension. Thanks!


BTW I also updated the Extension Generator (update to v0.5.0 via a git pull), so next time you build / publish your extension you don’t need the latest dummy workaround.

1 Like

Been bashing my head against this nonsense for multiple days now … I don’t see the point in only having Extension Manager run in a Linux container when I need the Audio entrypoint to be coming from a Windows machine (the same machine/virtual machine if possible.)

No matter what tinkering I do (and I’ve read a million workarounds from Github and such on Google) can I get Roon to recognise Roon Extension Manager is running in a Docker container on either this machine through WSL2 or a Hyper-V Virtual Machine - I’m pulling my hair out here.

The issue with Docker for Windows, WSL2 and Hyper-V is that they all setup a VLAN. Roon extensions make use of a discovery mechanism provided by the Roon API that doesn’t work across VLANs, the extensions are not able to discover the Roon core.

The option that works is running the Extension Manager in a VM. I made a description on how to do this with DietPi. Any soundcard responsible for providing the input signal has be made available inside the VM and should be detectable by ALSA.

1 Like

Hi - I understand the networking limitations of WSL2 and Hyper-V but there are ways to hack it so it’s shown to localhost - haven’t quite got my head around it yet.

As I’ve mentioned before DietPi is useless to me - the audio I need to send to Roon comes out of a Windows PC, it does work though I’ll give you that.

I’m stuck. Trying to install the Roon Extension Manager on my Synology, I SSH into NAS, followed the directions as shown at the start of this thread and ran the downloaded script, and here is what I got:

It hung on waiting for container creation - I had to Ctrl-C.

Should not this script run? perhaps I am missing something? Any tips would be greatly appreciated.

Looks like the script is meant for ordinary Linux distributions, not purpose built ones.
I would just install the Docker container if I were in your shoes.

@BlackJack is right, on a Synology NAS you have to use the manual installation method. Instructions can be found on the Wiki Installation page.

Thank you both for the reply, sadly my Unix skills are poor to say the least. I believe I’ve followed the instructions posted on the Wiki Installation page, nonetheless I seem to be failing. Specifically, I’m not sure where to get the stand alone image. I’ve combed through git but don’t find it. Here is the command I use:

sudo docker run -d --network host --restart unless-stopped --name roon-extension-manager --group-add 0 -v rem_data:/home/node/.rem/ -v /var/run/docker.sock:/var/run/docker.sock -e “TZ=America/Los_Angeles” theappgineer/roon-extension-manager:v1.x-standalone

Obviously it can’t located v1.x-standalone. I did not see on the wiki page information on downloading that file. Also, I did not see any instructions related to directories I need to setup, etc. Any thoughts from the far more qualified than me?

P.S.

This didn’t work for me either:

This command should do it, it will pull the image from Docker Hub. Can you share the complete output you get when you run this command?

@Jan_Koudijs, that you for your help and support and your great apps! I fiddled around and finally got this command to work. The solution was to uninstall and then reinstall Docker itself. I had no other images/containers running in Docker, but I previously had the extension manager and alarm clock installed. By fully deleting and then reinstalling Docker, I deleted any residual files that may have been an issue. So all seems well in order now. Thank you again!

P.S. I note that when installing the alarm clock, it asks for TZ. Does the alarm clock pull from the TZ of the container or does the alarm clock use the TZ as specified during its install?

1 Like

Nice to hear that you got it working!

When selecting the Alarm Clock for install the TZ is set to the value you provided during the Extension Manager install (i.e. America/Los_Angeles in your case). If you change this default value then this changed value will be used, but this setting is mainly a fallback if it hasn’t been set before, as it is not likely that someone wants to run different extensions in different timezones :slight_smile:

Thank you @Jan_Koudijs, works very well and I appreciate your help.

Regarding the alarm clock, I notice that when using the setting to play a specific genre, that many of the Genre I have in my library are not shown on the Genre pull down list. Also, the genre list is not alphabetical so with lots of genre it can be difficult to locate the desired one. Just FYI.

Regards.

I setup a DietPi VM (version 8.2.2) but cannot reproduce the issue you are facing.

What you could try is a reinstall of the Extension Manager:

dietpi-software reinstall 86

The genre list provided by the Roon API is sorted by the occurrence of a genre in your library (high to low), the list in the Alarm Clock settings contains the first 100 entries. If you have a lot of genres in your library then the usability is limited.

Interesting. I see a different behavior vis-a-vis the genre list in the alarm clock, however, I understand that you are just taking what the Roon API gives you so I will presume this is Roon. It looks like it is providing the rolled-up Genre and omitting sub-genre etc. It’s a small matter and I will just make a playlist. Thank you again for all your great work!

Hey @Jan_Koudijs ,
I have some problems get the Manager running. I’m running my own unraid server at home and Roonserrver as a Docker Container. If I search the apps section for you extension manager I find it and I also can install it from there. Went to the roon app on my Tablet to configure the Extension. Everything fine until I saw, that the manager is running @ some v 0.11 …
Now I wanted to install the newest Version of your manager, but had to do it with the “docker run” command found at the docker hub page: https://hub.docker.com/r/theappgineer/roon-extension-manager/
Used this command:

docker run -d --network host --restart unless-stopped --name roon-extension-manager --hostname Docker -v roon-extensions:/root/.RoonExtensions/lib -v /var/run/docker.sock:/var/run/docker.sock -e "TZ=<timezone>" theappgineer/roon-extension-manager[:<tag>]

and added the tag: v1.x-standalone

As Timezone I defined “Europe/Berlin” as I am from Germany.

Everything set up just fine. I can see the container on my Docker Page in the unraid web gui and its running. Back to the roon app to start loading some Entrypoints.
Now I See Roon found the Manager, even the correct Version is shown but there is some additional Info:

Extension Manager requires Docker

If i press the settings puttin within the roon app, I get a Infobox but onyl two options. Save or cancel. If i hit cancel nothing happens and I get back to the extension page. If i hit Save roon web ui freezes.

Is it because RoonServer and Extension Manager are running as Docker on the same machine in Host Mode ? Maybe because of same IP and/or Port ?