Volumio 4 for Volumio products (Motivo, Integro, Primo 2, Primo Plus, Rivo, Rivo Plus)

We’re almost there. One last step before releasing the Volumio v4 update.

Once again, we’re asking for your valuable contribution during the final beta testing.

We know this release took longer than expected, and we truly apologize for the delay. Delivering the quality and premium standards you’ve come to expect from Volumio, demanded a level of hardware integration and complexity far beyond what the open-source side requires. Giving you the best audio experience we can deliver will always be our top priority.

Today we’re releasing the Motivo v4 image, and once we gather enough validation from the community, we’ll move forward to the next device.

So it’s essential for us to gather as much feedback as possible: not just issues, but also what you find working better than before!
You know, we appreciate good feedback as much as we appreciate a good challenge. But we never settle.

Here’s the rollout order:

  • Motivo
  • Integro
  • Primo 2
  • Primo Plus
  • Rivo
  • Rivo Plus

What You’ll Get

  • Base system upgraded to Debian Bookworm → more secure, more stable, better drivers
  • Better handling of large music libraries → no issues even with 10,000+ tracks
  • Option to change CD reading speed → no more annoying noise, now you choose the speed you prefer
  • Improved system responsiveness and UI browsing speed → less lag, more time to enjoy your music
  • Complete rewrite of Bluetooth stack → lower latency, instant playback (even on TVs and other devices)
  • Optimized for new Volumio app with improved network resilience → connecting to your devices is easier and more stable
  • Native NVME device support with optimized read performance → did we mention everything is faster? Well, this too
  • Enhanced display management for HDMI touchscreen panels → smoother and more responsive touchscreen experience
  • Enhanced plugin API with new capabilities for developers → more powerful tools to build even better plugins
  • Expanded USB quirks database for improved DAC compatibility → more DACs supported out of the box
  • Direct DSD support for additional USB DACs → native DSD playback on even more devices
  • Support for Bluetooth remote controls → control your music from the couch, wirelessly

Known Issues

  • DSD128 files may have some noise. While we are working on this issue, the workaround is to go to Playback Options → enable Audio Resampling → set Target Bit Depth to 32 and save

Notes

  • Multiroom will only work between devices running v4 after the update

How to Update

Be careful!
This update will reset your system’s custom settings to the default ones (including playlists, favourites and web radios, except saved WiFi networks). This was unavoidable given how different the two versions are.
If you have a MyVolumio account (even a free one) your playlists, favourites and web radios are saved in the cloud and will not be lost.

  1. Remove any USB drive and other peripherals connected to the device (this is just to play it safe)
  2. Go to http://your-device-name.local/dev in your browser (replace your-device-name with the actual name given to your device during configuration) → section Update Channel Selection → set it to Test
  3. Open the Volumio app → home page → select the device → press on the hamburger menu icon ≡ on the top left of the screen → select System → scroll until you see System Updates → press on Check Updates
  4. A pop-up will appear at the top of the screen → press on Update Now
  5. Do not turn off the device or disconnect the power even if the update process seems stuck. This may take several minutes depending on your internet connection and the update itself, but don’t worry: sip some tea or coffee while it does its thing
  6. Enjoy!

Issue Report

The more we know, the better we get.

So if you encounter any issue, please open this section to learn how to report them.

Issue

What is the issue?
A concise and clear description.

Steps to reproduce

What are the steps needed to reproduce the issue?
Example:

  1. First I do this
  2. Then I do this

Environment

Which devices were used and with which system version?
You can find Volumio’s system version by opening the Volumio app → home page → select the device → press on the hamburger menu icon ≡ on the top left of the screen → select System → scroll until you see System Version.
Example: Volumio Motivo (4.000), other devices (system version)

Which apps were used and with which software version?
You can find Volumio’s software version by opening the Volumio app → home page → press on the user menu icon on the top right of the screen → scroll until you see the About section.
Example: Volumio (5.000000.0), other apps (software version)

Which clients were used and with which system version?
Any phone, tablet, laptop or other client used when the issue occurred.
Example: iPhone 16 (26.4), other clients (system version)

Attachments

Logs, screenshots and/or videos.
You can obtain Volumio’s log by going to http://your-device-name.local/dev in your browser (replace your-device-name with the actual name given to your device during configuration) → section Send Log or bug report → press on Send → wait a few seconds → press on Copy to clipboard → paste it here.
Example: http://logs.volumio.org/motivo/abc0123.html
For screenshots and videos, you can attach any media directly to your message by using the Upload button found in the toolbar.

Template

Here’s a template for quick copy-paste:

### Issue
A concise and clear description

### Steps to reproduce
1. First I do this
2. Then I do this
3. ...

### Environment
Device: Volumio Motivo (4.000), other devices (system version)
App: Volumio (5.000000.0), other apps (software version)
Client: iPhone 16 (26.4), other clients (system version)

### Attachments

We will update this thread when we’ll release the images for the other products.

Happy listening!

Issue

When you enter an artist, Volumio forgets it’s position in the Artist list. With 1000+ artists its very annoying to get thrown back to the top of the list.

Steps to reproduce

  1. Perform upgrade
  2. Map NAS (NFS)
  3. Complete full scan
  4. Go to Source => Artist
  5. Scroll a bit
  6. select an artist
  7. If you go back to the list here (<- arrow), you get back to the correct position.
  8. If you open an album and go back, you’ll be thrown to the top of the list and you can start from scratch.

Environment

Device: Volumio Motivo (V4.149)
App: No App using the Motivo screen

Attachments

(will not report those that are already on the backlog, as they are not releated to V4)

Issue

During startup, there is a white screen that’s stays active for 15-20 seconds?

Steps to reproduce

  1. Just boot the device

Environment

Device: Volumio Motivo (V4.149)
App: No App, just using the Motivo

Attachments

For the rest the Motivo works as expected.
Well done team!!!
It appears to run even smoother on Bookworm then it did on Buster.

  • Mounting NAS
  • Network
  • Audio
  • premium features
  • scrolling

And FusionDSP was built for the Motivo? :slight_smile:

Where is the box when editing a eq?

4 posts were merged into an existing topic: FusionDsp : the complete Dsp center for Volumio3 and Volumio4!

Thank you @Wheaten!

I was able to reproduce the behaviors and I’ve added your reports to our tracker :wink:

Catch-up notes from my alpha testing on Motivo-class kiosk devices. Four files were modified during the cycle to attack the visible Plymouth-to-kiosk gap. These edits were validated on-device but did not make it into the released build. Posting here for anyone who wants to apply them manually or revisit them in a later cycle.

The four files in the released build are still at upstream defaults (no marker gating, no curl wait before startx, no xsetroot, no Vivaldi default background colour). The contents below are what was on my test device.

[file 1] /lib/systemd/system/plymouth-quit.service - tested, not shipped

[Unit]
Description=Terminate Plymouth Boot Screen
After=rc-local.service plymouth-start.service systemd-user-sessions.service volumio.service volumio-kiosk.service

[Service]
ExecStartPre=/bin/bash -c 'until [ -e /run/volumio-kiosk-ready ]; do sleep 0.5; done'
ExecStart=-/usr/bin/plymouth quit
Type=oneshot
RemainAfterExit=yes
TimeoutStartSec=300

Delta vs the released file: added the ExecStartPre marker wait; replaced TimeoutSec=20 with TimeoutStartSec=300.

[file 2] /lib/systemd/system/plymouth-quit-wait.service - tested, not shipped

[Unit]
Description=Hold until boot process finishes up
After=rc-local.service plymouth-start.service systemd-user-sessions.service volumio-kiosk.service

[Service]
ExecStartPre=/bin/bash -c 'until [ -e /run/volumio-kiosk-ready ]; do sleep 0.5; done'
ExecStart=-/usr/bin/plymouth --wait
Type=oneshot
RemainAfterExit=yes
TimeoutSec=0

Delta vs the released file: added the same ExecStartPre marker wait. TimeoutSec=0 unchanged.

[file 3] /opt/startkiosk.sh - tested, not shipped

#!/bin/bash
echo "Starting Volumio Kiosk with arguments for cursor display"
KIOSK_ARGUMENTS_FILE=/data/kioskargs
[[ -f $KIOSK_ARGUMENTS_FILE ]] && ARGS=$(<$KIOSK_ARGUMENTS_FILE) || ARGS=""
# Wait for Volumio backend (curl 200) BEFORE starting X.
# X.Org claims DRM master the instant it starts, kicking Plymouth off the screen.
# Holding plymouthd alive past X startup does not keep Plymouth visible. The only
# reliable way to keep Plymouth on screen until the kiosk can paint is to delay X
# until the backend is ready to serve.
echo "Waiting for Volumio backend before starting X"
while [[ $(curl -Is http://localhost:3000 | head -n 1 | cut -d " " -f 2) != 200 ]]; do sleep 2; done
# Releases plymouth-quit (gated on this marker), killing KMS plymouthd just before
# startx grabs DRM. Plymouth dies and X starts back-to-back.
touch /run/volumio-kiosk-ready
# -background none tells X.Org NOT to paint the default grey root window at startup.
/usr/bin/startx /etc/X11/Xsession /opt/volumiokiosk.sh -- -keeptty -background none $ARGS

Delta vs the released file: added curl-200 backend wait before startx; added touch of /run/volumio-kiosk-ready (releases the gated plymouth services); appended -background none to the X server arguments.

[file 4] /opt/volumiokiosk.sh - tested, not shipped

#!/bin/bash 

mkdir -p /data/volumiokiosk 
export DISPLAY=:0 

xset s off -dpms 
# Match Plymouth theme background (volumio-adaptive: black). With X root painted black,
# any time X has the screen but no client has painted yet, the user sees black instead
# of the X.Org default grey root window.
xsetroot -solid black

if [ -L /data/volumiokiosk/SingletonCookie ]; then
  rm -rf /data/volumiokiosk/Singleton* 
fi

[[ -e /data/volumiokiosk/Default/Preferences ]] && {
  sed -i s/exited_cleanly:false/exited_cleanly:true/ /data/volumiokiosk/Default/Preferences
  sed -i s/exit_type:Crashed/exit_type:None/ /data/volumiokiosk/Default/Preferences
  sed -i s/credentials_enable_service:true/credentials_enable_service:false/ /data/volumiokiosk/Default/Preferences
}

if [ ! -f /data/volumiokiosk/firststartdone ]; then
  echo "Volumio Kiosk Starting for the first time, giving time for Volumio To start"
  sleep 15
  touch /data/volumiokiosk/firststartdone
fi

# BROWSERARGS
# This are the default values of broser, which are eventually overridden in /data/browserargs

SCALE_FACTOR=1.2

source /data/browserargs

# Backend wait was performed in /opt/startkiosk.sh BEFORE startx so Plymouth retained
# the DRM screen during backend init. Original lines preserved as comments.
# while [[ $(curl -Is http://localhost:3000 | head -n 1 | cut -d " " -f 2) != 200 ]]; do sleep 2; done &
# while [[ $(curl -Is http://localhost:3000 | head -n 1 | cut -d " " -f 2) != 200 ]]; do sleep 2; done
# systemd-notify --ready
# touch /run/volumio-kiosk-ready

/usr/bin/xrandr --output DSI-1 --auto --rotate left --verbose &
openbox-session & 
sleep 2

# --default-background-color=000000 keeps Vivaldi's pre-page paint black instead of
# white, blending into the Plymouth black theme background while Vivaldi loads.
/usr/bin/vivaldi --kiosk --no-sandbox --disable-background-networking --disable-remote-extensions --disable-pinch --ignore-gpu-blocklist --use-gl=angle --use-angle=gl --enable-gpu-rasterization --enable-zero-copy --disable-smooth-scrolling --enable-scroll-prediction --max-tiles-for-interest-area=256 --num-raster-threads=4 --user-agent="volumiokiosk-touch" --touch-events --user-data-dir=/data/volumiokiosk --force-device-scale-factor=$SCALE_FACTOR --load-extension=/data/volumiokioskextensions/VirtualKeyboard/ --no-first-run --default-background-color=000000 --app=http://localhost:3000

Delta vs the released file:

  • Added xsetroot -solid black after xset s off -dpms.
  • Removed the in-script curl-200 wait (preserved as comments).
  • Reduced sleep 4 to sleep 2.
  • Inserted --default-background-color=000000 into the Vivaldi launch line between --no-first-run and --app=http://localhost:3000.

The xrandr DSI-1 rotate-left line is device-specific to Motivo and was already in earlier builds; not part of the alpha edits.

[measured effect on the test device]

  • Plymouth visibility: extended from approximately 14s to approximately 30s (covers backend cold start).
  • Post-Plymouth gap: reduced from approximately 25s of grey/blank/grey/white/grey alternation to approximately 13s held mostly black via the xsetroot + Vivaldi default-background-color combination.
  • Total time to kiosk: roughly 43s with the alpha edits applied.

[why it did not ship]

The remaining ~13s post-Plymouth gap is X.Org KMS mode-set + Vivaldi process startup + first paint. It cannot be reduced further on the X.Org + Vivaldi stack. Rather than ship a partial fix that still leaves a visible X-startup gap, the work is being redirected toward a Wayland-based kiosk (labwc + WebKit), which targets a fully seamless transition.

[apply manually if you want to test]

sudo nano /lib/systemd/system/plymouth-quit.service
sudo nano /lib/systemd/system/plymouth-quit-wait.service
sudo nano /opt/startkiosk.sh
sudo nano /opt/volumiokiosk.sh
sudo systemctl daemon-reload
sudo reboot

The marker file /run/volumio-kiosk-ready is created at boot and disappears at every reboot (/run is tmpfs); nothing to clean up.

If anyone reapplies these and observes a regression in the Plymouth shutdown splash on sudo reboot or sudo poweroff, please post:

journalctl -b -1 -u plymouth-poweroff.service -u plymouth-reboot.service -u plymouth-halt.service --no-pager

Kind Regards,

@nerd thanks!

Would you mind opening a PR with those changes so we can review them and merge them?

Let’s not modify files live on the device, as it will brick OTA updates and make our testing very hard :wink:

For that matter I shall not modify the files manually, but will wait for the official release.
It’s not a showstopper, just a bit annoying during evening boots
(it lights up the whole neighbourhood)
:slight_smile:

Hey @volumio,

As requested:

Kind Regards,

1 Like

Thanks!

To be clear you have to have Motivo to do the test correct? I couldn’t put this on the Rivo?

Yes, Motivo only for now.

Rivo Is planned for later.

Hi,

From the initial list of devices can I imply that Volumio Primo (the 1st one) won’t support Volumio 4, or just later?

BR