mpd broken in Volumio 2.5.26

At least on the Raspberry Pi, mpd fails to launch with the latest Volumio. A little digging reveals

[code]$ sudo systemctl status mpd.service -l
● mpd.service - Music Player Daemon
Loaded: loaded (/lib/systemd/system/mpd.service; enabled)
Active: failed (Result: exit-code) since Sun 2019-01-13 04:51:30 UTC; 42s ago
Docs: man:mpd(1)
man:mpd.conf(5)
Process: 1501 ExecStart=/usr/bin/mpd --no-daemon (code=exited, status=127)
Main PID: 1501 (code=exited, status=127)

Jan 13 04:51:30 living-room mpd[1501]: /usr/bin/mpd: error while loading shared libraries: libbcm_host.so: cannot open shared object file: No such file or directory
Jan 13 04:51:30 living-room systemd[1]: mpd.service: main process exited, code=exited, status=127/n/a
Jan 13 04:51:30 living-room systemd[1]: Failed to start Music Player Daemon.
Jan 13 04:51:30 living-room systemd[1]: Unit mpd.service entered failed state.
[/code]

The solution turns out to be

$ sudo ln -s /opt/vc/lib/libbcm_host.so /usr/lib/ $ sudo reboot

I guess it’s time for another update?

Hi prof,
could you please share some more info on your system:

  • PI model
  • Plugin installed
  • Did you update or flash from new?
  • Did you install\upgrade stuff manually from SSH?

From our tests it works just fine, so must be something else that we need to find out

addendum: we had a similar issue, but just because he manually upgraded mpd:
tidal-with-myvolumio-playing-wrong-track-t11453.html#p59433

thanks

Pi3 B

None.

This was an update from the previous release (2.5.22 ?).

Yes, but not mpd and certainly nothing that would have touched /usr/lib/libbcm_host.so .

Can you confirm that that shared library is actually present in a vanilla installation of 2.5.26?

Hmmm. Actually, now I’m a little puzzled. On two different Pi3 B’s, both running Volumio 2.5.26, I get two different responses to

$ apt list |grep mpd\/now

What response should I get?

0.20.18

Well, that’s not literally the response. When I do it, I get

apt update says

... 112 packages can be upgraded. Run 'apt list --upgradable' to see them.

But mpd is not one of them:

$ apt list --upgradable |grep mpd

yields nothing (indicating that apt thinks that 0.20.6-1 is the latest available). Indeed, that’s confirmed by looking at /var/lib/apt/lists/archive.volumio.org_raspbian_dists_jessie_main_binary-armhf_Packages which says

Package: mpd Version: 0.19.1-1.1 Architecture: armhf Maintainer: mpd maintainers <pkg-mpd-maintainers@lists.alioth.debian.org> Installed-Size: 838 Depends: ...

Note the keyword “local” in the response to apt list. If I understand correctly, that means that mpd was not downloaded from your apt repositories, but was a “locally-installed” package.

Note that mine is an upgrade, not a new install. Is it possible that mpd is not getting upgraded by the upgrader? That seems to be the case: the older my Volumio installation, the older the version of mpd that is installed, even though both have been “upgraded” to Volumio 2.5.26.

dist-upgrade is known to break volumio.

And yes, if you accidentaly overwrote mpd, this manually updated version will stick even with updates :wink:

How to fix it: system -> delete user data

Hi,

I had the same MPD issue with the latest Volumio (2.526) on Raspberry Pi. It turned out to be due to me having previously upgraded the entire set of packages using “sudo apt-get upgrade”. This somehow broke compatibility with the newer version of MPD included in the new Volumio release. I resolved the issue by recreating my Volumio install with the official image from the Volumio website. Everything is working well now, including Tidal playback, which I was previously having issues with.

Thanks,
Randy

The output of

$ apt list --installed |grep "mpd\/now"

turns out to be a complete red-herring. It does reflect the orginal version of mpd installed with the initial installation of Volumio 2.x (and differs between my RPi’s which were commissioned at different times).

But it has nothing to do with the actual version of mpd currently on the machine:

$ mpd --version Music Player Daemon 0.20.18 (128d910-dirty) ...

My original bug report stands, though (before I got confused about what version of mpd I had). mpd 0.20.18 failed to start because of the aforementioned missing shared library. After adding an appropriate soft-link, it works fine.

Same happened to me, thanks for the solution. Updated all of my 3 devces, PI zero update to latest version went fine, but on Pi3 B+ same thing as you mentioned. No errors due updating were shown.

Regards,

Fossy

Interesting! So the issue really does depend on which RPi you have (Pi Zero = no problem; Pi3B+ = problem).

I’m having the same issues on a Mac mini, it’s not just on a Pi

Update to the version we released today and save again your output device, we fixed the issue (due to a stupid mistake on my side)

Nope, if you run apt update/upgrade you’ll end up in the same situation even with latest volumio.

If you do upgrade, there is nothing we can do to fix your MPD. It will be broken.
So don’t do apt-get upgrade, ever :wink:

1 Like

Cool answer. So, we are not supposed to run apt update and apt upgrade, from the archive.volumio.org repos. Why do you maintain the repos, then? For cosmetic reasons?
And don’t get me started about the security implications of your answer…

If you run service mpd status after the upgrade, most probably you’ll see that libbcm_host.so is missing. To solve this problem, you can do the following:

Compile libbcm_host.so from the open-sourced code for the ARM side libraries, found here.
First install the prerequisites for compiling the source code:

sudo apt-get install build-essential cmake

You then have to get the code from github - Interestingly, git is preinstalled (if not, just sudo apt install git)

git clone https://github.com/raspberrypi/userland.git

Build:

cd userland/
./buildme

Copy the compiled file to /usr/lib:

sudo cp ./build/lib/libbcm_host.so /usr/lib/libbcm_host.so

You can now restart mpd:

sudo service mpd restart

and see if all went well:

service mpd status

2 Likes

Nice try… We host mirrors for the repositories to be good FOSS citizens and don’t add additional load on PI foundations servers. On top of that, it makes sure we have 100% availability when we build (sometimes PI repos did not work, breaking builds)

By modifying manually Volumio as you do (you’re totally free to do it, but we warn you)you will have misbehaviours and inconsistencies, so it’s not suggested

you just saved my Volumio, work like a charm thanks :slight_smile:

Glad I could help!