Roon Extension: Roon Web Controller v1.2.0

(Horst) #202

Hi Mike,

thank you for your long answer. You said that the Browser is automatically use the last zone. i think my installation of chroium in kiosk mode maybe has problems to save cookies.

-Thats should be the same case as my question with the timeout while playing. the broswer forget everything i set when the system is booting.

  • i use now a flirc usb dongle to get the screen back on :slight_smile: thank you for your tip
    klind regards

(Mike Plugge) #203

Diet Pi does some “interesting” things with user profiles that I find incredibly frustrating when coming from another more standards compliant distro of Linux. It is entirely possible that you are not doing anything wrong and that the problem is Diet Pi resetting the profile…

This would explain why the last selected zone and the “disable screensaver while playing” option is not being preserved since both of those are settings that are saved in the cookie…

Unfortunately, I will not be able to test this out for at least a month or so. I am packing to get ready to move at the end of this month, and all of my Pis are already packed away…

(Jared Devers) #204

Sorry guys but how do I install this? My RoonCore is running on a Mac Mini and I want to use the Web client roon player on an older iPad1 (iOS9). The github wiki installation talks in riddles.

(Horst) #205

Hi Mike,
thank you for the analysis. i think i find my way with the user profile. i din`t know that dietpi behaves this way
kind regards


(Mike Plugge) #206

The wiki page is specific to Diet Pi, a distribution of Linux.

Since you are running Mac OS, you can install the Roon Extension Manager and use it to install the Web Controller on your core. After that, Web Controller is a web page that you open in a browser.

Note that this web app uses CSS and JavaScript that may not work on Safari older than IOS 9. And if memory serves, the original iPad is maxed at IOS 6, which will not work with this web app.

(Jared Devers) #207

Thanks Mike, I managed to get things going after about 60 minutes of fiddling with getting homebrew, nodejs and git installed. I now have web controller working as an extension on my RoonCore. I had a quick play around with the web client and when I went via library, found an album and hit play music did not play. I will try some more tonight and make sure its not related to the iPad (FYI my Ipad is definitely running iOS9 so it might be a more recent model)

(Mike Plugge) #208

The library and the now playing screen are actually different html pages. This is a huge point of frustration for me and will be corrected as part of a complete rewrite later this year.

The library will read the cookie to get the selected zone, but only on the initial page load.

In other words, even after you select a zone on the now playing screen, you may also need to select a zone on the library page. There are three icons at the top left. If the text beside those icons says “zoneList”, then the library does not have a selected zone. Tap the word “zoneList” to get the zone selection dialog.

After that, the album play should work.

And yes, that is annoying - it bugs me too. The next major release of this will most likely be based on Vue.js which has MUCH better cross page state tracking. I have a working prototype already, but it is no where near release ready. The main challenge is gutting out all of the jquery dependencies so that I can drop jquery completely.

(Jared Devers) #209

Thanks again Mike, by deleting my unnecessary extra zone I was able to get it working. The only other issue was that node crashed out today while I was at work. See output.

-> CONTINUE 1 Changed {“message”:“Started: roon-web-controller”,“is_error”:false}

-> CONTINUE 1 Changed {“message”:“Started: roon-web-controller”,“is_error”:false}

-> CONTINUE 1 Changed {“message”:“Started: roon-web-controller”,“is_error”:false}

It’s update time!

2019-03-13T15:00:02.949Z - Inf: Terminating: roon-extension-repository…

-> CONTINUE 1 Changed {“message”:“Terminating: roon-extension-repository…”,“is_error”:false}

2019-03-13T15:00:02.951Z - Inf: Updating: roon-extension-repository…

-> CONTINUE 1 Changed {“message”:“Updating: roon-extension-repository…”,“is_error”:false}


404: Not Found

2019-03-13T15:00:11.393Z - Inf: Updated: roon-extension-repository (0.2.2)

-> CONTINUE 1 Changed {“message”:“Updated: roon-extension-repository (0.2.2)”,“is_error”:false}

2019-03-13T15:00:11.398Z - Inf: Terminating: roon-web-controller…

-> CONTINUE 1 Changed {“message”:“Terminating: roon-web-controller…”,“is_error”:false}


2019-03-13T15:00:11.400Z - Inf: Extension Repository loaded

-> CONTINUE 1 Changed {“message”:“Extension Repository loaded”,“is_error”:false}

2019-03-13T15:00:11.416Z - Inf: Terminated: roon-web-controller (SIGTERM)

-> CONTINUE 1 Changed {“message”:“Terminated: roon-web-controller (SIGTERM)”,“is_error”:false}

2019-03-13T15:00:11.417Z - Inf: Updating: roon-web-controller…

-> CONTINUE 1 Changed {“message”:“Updating: roon-web-controller…”,“is_error”:false}

-> CONTINUE 1 Changed {“message”:“Updating: roon-web-controller…”,“is_error”:false}


2019-03-13T15:00:41.916Z - Inf: Updated: roon-web-controller (1.2.9)

-> CONTINUE 1 Changed {“message”:“Updated: roon-web-controller (1.2.9)”,“is_error”:false}

2019-03-13T15:00:41.919Z - Inf: Terminating: roon-extension-manager…

-> CONTINUE 1 Changed {“message”:“Terminating: roon-extension-manager…”,“is_error”:false}

<<<crashed out, restarted >>>>>

RoonCore:roon-extension-manager roon$ node .

{ ‘roon-extension-manager’: ‘0.9.5’,

‘roon-extension-repository’: ‘0.2.2’,

‘roon-web-controller’: ‘1.2.9’ }

Docker not found

2019-03-14T08:42:16.603Z - Inf: Roon Extension Manager started!

(Jared Devers) #210

And is there a way to get it to show album/artist art on the artist/album pages? Its a bit plain at the moment by default at least. Thanks.

(Mike Plugge) #211

Those look like messages from the extension manager… you may want to use extension manager to remove the Web Controller then reinstall it.

@Jan_Koudijs - ideas?

(Mike Plugge) #212

As for the pictures, an early prototype of the library had pictures. And the performance was terrible. On a desktop browser, it took 10-15 seconds for a page load. On the Raspberry Pi it took nearly a minute and scrolling made it unusable.

So I made the decision that bland + functional was better than pretty + useless.

I will revisit this during the rewrite. I have some personal use only web apps that are doing dynamic sizing with smart cropping of images which I may incorporate in this during the rewrite, but only if the library is usable…

(Chris) #213

Hello Mike_Plugge,

at the risk of mentioning an already discussed topic, I wanted to ask about the Roon Web Controller extension showing and controlling private zones. Or rather, I see that it does this, and would suggest that perhaps it should not show and control private zones.

A feature request? For an extension that is already great; I use it to allow my guests to have a go at looking at the library and picking some music out. Thank you!


(Mike Plugge) #214

I will have to double check to see if the Roon API has any indication that a zone is private. I don’t remember it being there, but it has been a while since I looked at the raw JSON from the api.

But if there is no marking in the api, there is not much I can do to figure out which zones are private.

(Chris) #215

It’s all good. =)

What happens is that the three Android endpoints (ie. cell phones) that their various owners use (and are private zones - which don’t show up anywhere else other than on the mobile device itself) show up in a (complete) list of zones on the Web Controller. It makes a for a long list of zones.

(Jan Koudijs) #216

This is not a crash, the Extension Manager terminates as part of an Auto Update run. There are two approaches to handle this.

First is to run this script in a loop, something like:

while true; do ./; done

I’m not into the Apple eco-system so I cannot provide detailed instructions.

The second is to disable Auto Update in the Global Settings by clearing the input field that holds the update time.


I am using a QNAP NAS as the Roon Core. I successfully (seem to be) installed Roon Extension Manager and Web controller on the QNAP using container/docker, but then I realize that the QNAP use port 8080 for web access, which is the same as web controller. Anyone know how to change the listening port for the Web controller installed on QNAP? I cannot figure out where the config files are installed on the QNAP.



On my installation the path for the directory that contains the configuration file(s) is:

You need to install Text Editor if you want to edit the file in QTS.