Roon-Web-Controller and Chromium on DietPi


(Marco) #1

Hello @Jan_Koudijs @Mike_Plugge @Dan_Knight

sorry for the generic spam but I am not sure which part of the procedure I am messing up in my attempt to install the Roan-Web-controller running with chromium on a raspberry Pi 3B+

As I have an extra RPi with touchscreen I would like to set it up just as Roon control point (noRoon Bridge) using Roon-web-controller and Chromium

This is the procedure I have followed.

I downloaded the latest image of dietPi

I flashed the SD card

I went to dietPi-software installation and selected only the Roon Extension Manager v0.8.0

The installation process started and I noticed that Node.js and Git client both were installed.

at this point I customised the settings, switching to Wi-Fi and so on.

Once done I was able to see the extension manager in Roon

From within Roon I run the installation of the Roon-Web-Controller

The installation ran without issue and I was able to access the web-controller using the ip and the port.
Up to here everything seemed to work fine.

At this point I tried to install chromium and set up a Roon Web Controller client following these instructions from where is written Roon Web Controller Client

So I created the X Session file as per instructions

as root I run

apt install xserver-xorg-video-fbdev xserver-xorg-input-libinput nodm fonts-noto openbox chromium-browser

After the installation was done I modified the nodm file.

At this point I started noticing that my RPi’ s screen was going black at intervals and then switching back on

Anyway I changed the Display configuration as per instructions and rebooted.

I was greeted with a log in prompt.

So I went in dietpi-config autoStart Options and switched to the option for Chromium as Dedicated use without desktop

Reboot again.

So now I don’t get the login prompt again but I am in as root. So I figured it out I could figure out how to change the log in later on if at least chromium was working as expected so I changed to my diet user and tried to run chromium-browser and I got this list of errors. This was done directly in the RPi not in ssh

/usr/bin/chromium-browser: line 133: lsb_release: command not found

/usr/bin/chromium-browser: line 134: lsb_release: command not found

[2118:2118:1007/215757.984680:ERROR:browser_main_loop.cc(670)] Failed to put Xlib into threaded mode.

(chromium-browser:2118): Gtk- WARNING **: cannot open display:

tried different autologin options with no luck
Where I did wrong?
thanks a lot

M


(Mike Plugge) #2

How long was the timeout? If it was 60 seconds, then this is expected behavior. It is set by this line in the .xsession file
xset dpms 60 60 60 &

Roon Web Controller has an option to disable to screensaver during playback.

Can you show me the nodm configuration, please? Just want to make sure there are not any typos.
nano /etc/default/nodm

lsb_release is used for bug reports. You can safely ignore this warning. It simply lists which Linux Standard Base OS Release the system is running.

This happens when you try to run chromium from a command prompt and X is not running. This is expected since X needs to be running before running Chromium.

Does this meet your needs? A lot of systems run the browser as root, and it is functional. I personally don’t run anything as root unless it absolutely needs to. But in the end, if this works, stick with it.


(Marco) #3

Hi @Mike_Plugge

I will try to answer in order.
The time out could be 60 seconds but to be honest I haven’t timed. But given the fact it started after the .xsession change I believe it could be related to that. Can you clarify where I can find the option to disable it during playback (if I manage to start chromium I mean)?

Following you can find the nodm file. As chromium has been installed from dietpi user this file sits in user dietpi /etc/default/nodm and I changed nodm user accordingly,

Set NODM_ENABLED to something different than ‘false’ to enable nodm

NODM_ENABLED=true

User to autologin for

NODM_USER=dietpi

First vt to try when looking for free VTs

NODM_FIRST_VT=7

X session

NODM_XSESSION=/etc/X11/Xsession

Options for nodm itself

NODM_OPTIONS=

Options for the X server.

Format: [/usr/bin/<Xserver>] [:<disp>] <Xserver-options>

The Xserver executable and the display name can be omitted, but should

be placed in front, if nodm’s defaults shall be overridden.

NODM_X_OPTIONS=’-nolisten tcp -nocursor’

If an X session will run for less than this time in seconds, nodm will wait an

increasing bit of time before restarting the session.

NODM_MIN_SESSION_TIME=60

Timeout (in seconds) to wait for X to be ready to accept connections. If X is

not ready before this timeout, it is killed and restarted.

NODM_X_TIMEOUT=300

Following is is my .xsession file in user/dietpi home

#######################################

Start up script for running the

Chromium web browser full screen

#######################################

Set the X display

export DISPLAY=":0"

tune the screen blanking time - time in seconds (standby, suspend, off)

All numbers are time in seconds

default value

xset dpms 600 600 600 &

1 minute blank time

xset dpms 60 60 60 &

start the window manager - needed for the kiosk to fill the entire screen

/usr/bin/openbox &

start full screen web app

change the URL if Roon Web Controller is running on a different system

/usr/bin/chromium-browser --kiosk http://localhost:8080

Regarding the latest question. I would prefer to be able to login automatically as dietpi user and not as root, as chromium won’t be able to run as root. As I won’t have a keyboard attached to the RPi my ideal solution would be to boot the system and automatically have chromium running under the dietpi user.
Right now if I try to run chromium as root the OS tells me that cannot be run, so I have to manually switch to dietpi user and then I get the warning for the display.
hope this makes sense
thanks for the help
Marco


(Mike Plugge) #4

It may be simpler to redo the install from scratch following my installation instructions for installing Roon Extension Manager here: https://github.com/pluggemi/roon-web-controller/wiki/Diet-Pi-Installation-Extension-Manager

This is a tested procedure and I worked with @Jan_Koudijs to work out the kinks.

Once Chromium is running, a song is playing, and you are at a Now Playing screen, hit the gear icon and this dialog will come up. The bottom option is off by default. Simply tap it to turn it on.

Screenshot_20181008_173030

You can also disable the screensaver completely by changing a line in the .xsession file. But I don’t really recommend this because the touchscreen is pretty bright in a dark room.
Comment out : xset dpms 60 60 60 &
Add:

# turn off display power management
xset -dpms &

# turn off screensaver
xset s off &

The nodm configuration looks correct.

If you do not want to launch Chromium as root, then you will have to switch the DietPi config back to Console Manual Login (Default)
See: https://github.com/pluggemi/roon-web-controller/wiki/Diet-Pi-Installation#general-prep

But as I said above, it may be easier to restart from scratch by following the guide for installing the Extension Manager.


(Marco) #5

Thank you @Mike_Plugge I will give a try the procedure you suggested and report back.

cheers
Marco


(Marco) #6

Hello @Mike_Plugge

I followed the step by step installation that you sent me and once everything was done and installed (I also installed the roon bridge to make sure) after the reboot I ended up here

I tried to login as diet user and run chromium-browser but I got the same
[2118:2118:1007/215757.984680:ERROR:browser_main_loop.cc(670)] Failed to put Xlib into threaded mode.

(chromium-browser:2118): Gtk- WARNING **: cannot open display:

All the services are working (before installing I deleted the old extension from the roon server) and I checked the screen goes black and back again every 60 seconds.

thanks
Marco


#7

What happens if you try run chromium with this

DISPLAY=:0 chromium-browser


(Marco) #8

Hi @mpd

I get this
/usr/bin/chromium-browser: line 133: lsb_release: command not found
/usr/bin/chromium-browser: line 134: lsb_release: command not found
[1658:1658:1009/193018.119130:ERROR:browser_main_loop.cc(670)] Failed to put Xlib into threaded mode.
(chromium-browser:1658): Gtk- WARNING **: cannot open display: :0

Is any way to check if the window manager is running?
I tried to run manually the line from the .xsession
/usr/bin/openbox &
and I got

[1] 1917
Openbox-Message: Failed to open the display from the DISPLAY environment variable.

thanks
Marco


(Mike Plugge) #9

Let me try to duplicate the issue. Unfortunately, today was a very bad day at work, so I will probably not get to it tonight…


(Marco) #10

don’t worry whenever you have time

thanks
m


#11

The .xsession file determines what gets run when an X session is created. So it should get executed if you ran startx from the terminal (rather than running open box directly ). I’m guessing you get the same error if you run startx? And the same if you change the openbox line to /usr/bin/openbox-session &


(Marco) #12

Hi @mpd

I tried to substitute
/usr/bin/openbox &
with
/usr/bin/openbox-session &
in the .xsession file but the result is the same

the interesting part is that I tried to run startx and I got
-bash: startx: command not found
I tdid this both as user and root and I got the same thing.
I double checked and in both /usr/bin/ there is no startx command.


(Mike Plugge) #13

I can duplicate the problem where things are not starting normally. Looks like Xorg does not want to start as the dietpi user. This happens both with the touchscreen and an HDMI monitor. This used to work when the guide was written. So I am not sure what changed.

I am looking for a fix and will update this page and the documentation when I find it.

This is normal since the xinit package is not installed. But even when it does get installed, X does not start… So definitely something interesting going on here…


(Mike Plugge) #14

Alright, @Marcor, I got it working. Thanks for reporting this one - it was a weird one…

Unfortunately, Chromium will need to run as root because, well, let us just say that DietPi is doing some “interesting” things in the background. I never could get Chromium running in X as a regular user without having a graphical login manager such as LightDM.

I have updated these instructions to show the changes. Because of the number of changes, it is strongly recommended to do a clean install.

Link: https://github.com/pluggemi/roon-web-controller/wiki/Diet-Pi-Installation-Extension-Manager

I also used this as a chance to use the Roon Extension Manager installer within the Diet Pi software selection.


(Marco) #15

Thanks a lot @Mike_Plugge !

I followed the installation guide and everything works perfectly now. I haven’t installed roon bridge so I cannot vouch for the last part but it wasn’t a problem before so I don’t think is going to be an issue now.

cheers
Marco

Edit: Just a stupid question. How do I get back into the raspberryPi if I need to change settings or similar? I tried to ssh both as root or user but nothing happen and I get timed out.


(Mike Plugge) #16

I didn’t modify that at all, so it should work the same…

SSH as user should work - that was how I spent the day with a variety of builds…

It should just be ssh dietpi@(IP ADDRESS)

But failing that, hook up a USB keyboard and press ctrl-alt-F1 to get a console.


(Marco) #17

thanks. the USB keyboard for some reason didn’t work, but I realised that for some weird reason my router re-assigned the RPi to a different IP and I was trying to ssh in the wrong one…


(Mike Plugge) #18

That would do it!


(simon arnold) #19

@Mike_Plugge I just installed this on a fresh install of dietpi but I cant get now playing to work at all on the pis touchscreen. The remote side works fine and the interface works but nothing displays in now playing. It works fine in Chrome on my PC though. Any ideas?


(Marco) #20

Hi @Mike_Plugge

today I did whole new install of my RPi. I flashed my card with DietPi, updated the system, reinstalled the Extension Manager and from there the Web controller. The Web controller works fine from a computer but when I set it up for auto loading on the pi I get a crash.! Attached the image of the crash
Any idea how I can fix this?


thanks
M