Other Web Controller Options (Headless Pi 3.5 TFT Endpoints)

I’ve been running a mix of headless Ropieee and homegrown Roon Bridge Pi’s around the house for a while as Roon endpoints, life is good. In some locations, like the Pi feeding my Schiit headphone stack, I would really like a headless GUI option mostly for visuals from Roon but also for media control if/where avail. Ropieee only supports the 7" touch screen which is too big for my env so I picked up a few 3.5 TFT + case combos, really nice compact screen streamers.

Auto-loading Roon’s display via chromium-browser works great, easy build and nice to have Roon’s now playing on the tiny screen. The TFT is a touch screen, though, and I’d love to be able to control Roon for very basic commands like pause and last/next track from the Pi streamer (no need for full library browsing from the controller, just the basics). I went down the path of this Web Controller:

And v2 Alpha worked pretty well (1.x didn’t) and looked great, but it wasn’t really usable; it didn’t really fit the screen and I couldn’t figure out if/how to pass in defaults on launch/boot so it would choose the right Schiit zone and go straight to now playing (required a manual click-through to get there which really isn’t desirable). Since that project has died not really much option on that one being updated.

Are there any other web controller options floating around that I’m not finding? All of the older DietPi docs for Roon Extensions and web controllers reference selecting “Web / Controller” from the extensions (after installed and registered in Roon) drop-down and selecting Install but current extensions no longer include “Web / Controller” and I can’t find any reference to when/why it was removed and there are no controller options listed in the Git extensions catalog. I’m assuming it’s no longer available.

So right now I’m basically stuck with the web display headless streamer, which is cool, but could be cooler. :slight_smile:

Install Roon Extension Manager on your Pi, then install Extension snapshots, from where you can install the old web controller 1.2.13 version.
I had that running with full functionality on RPi3B+ with a Kuman 3,5" touch screen display recently for a while on Raspbian and the display scaled properly, as well as using functional Chromium extensions for on-screen keyboard and full screen toggling.
Maybe that could fit your bill…

1 Like

Thanks @Marin_Weigel, that did it! I hadn’t stumbled upon Snapshots but it + Web Controller did the trick on the 3.5 TFT; screen fits, actions work, auto-start on boot with saved settings works, exactly what I was looking for. Thanks!

1 Like

Been up and stable for a few days and all is good, but have run into two small issues I’m not finding resolutions for on the web, thought it was worth asking them here since the project and threads here are no longer maintained by the original creator.

  • “Disable screen saver while playing” is enabled in the web controller but not working. Xscreensaver still kicks in after my configured 30 mins while streaming Roon through the Pi.

  • The node app binds 8080 to all interfaces (*:8080) and I want it to only bind to localhost, but I can’t find any ref to the config file either on the Pi filesystem or in the extensions docker containers. Anyone know of a way to force binding to only localhost and/or where to drop the config?


What’s your RPi OS?

I currently use DietPi on two RPi’s with 7" touchscreen and the setting works as intended. Following software installed in addition to the base system:

Screen blanking is set to turn off the screen 10 minutes after music has been stopped, see /root/kiosk.sh

export display=":0"
xset dpms 600 600 600 &
/usr/bin/openbox &
/usr/bin/chromium http://localhost:8080

To reliably survive Roon core shutdown/startup cycles every day with endpoint grouping intact, I finally installed extensionmanager on both Pi’s and above cited kiosk.sh is called from /var/lib/dietpi/postboot.d

PORT=$(ss -l | grep ‘:8080’)
while [ -z “$PORT” ] ; do
echo “Roon Web Controller not running…”
sleep 1
PORT=$(ss -l | grep ‘:8080’)
xinit /root/kiosk.sh – -nocursor

The reason why I dropped the 3.5" Kuman touch display is that its back light can’t be turned off and screen blanking doesn’t completely block back light leakage.

…may my blurb help you along…

Thanks for the details. I’m running straight Rasbian with a basic desktop (their Buster release). xscreensaver is configured running xscreensaver-demo with an idle kick-in time of 30 mins and configured not to blank the screen or use dpms. I did manually install xscreensaver via apt after installing the OS so I’m wondering if there are now two configs floating around. I’m going to wipe the SD card and do a fresh install and see if the setting to disable the screen saver works. Otherwise everything is running great; I’m launching kiosk mode on boot as well via LXDE autostart.

I hear you on the backlight issue. I have an email into the manufacture to see if there’s any way at all to dim/off the backlight. Not sounding like it’s possible from other feedback and they’ve yet to respond after 3 days so I’m not hopeful. I don’t like that you have to shutdown and completely unplug to lose the light.

1 Like

A few updates:

  • The 3.5 TFT manufacturer confirmed there’s no way to blank the screen. Not a huge issue for me where the streamers are located.
  • A fresh rebuild and still having the same issue, xscreensaver kicks in at the configured time when streaming through the Pi and setting web console to disable screensaver when playing.
  • Still haven’t found a way to bind the console to localhost so it’s not exposed outside of the device. May have to solve this one with iptables…