Dietpi: shairport-sync not working | Update binaries

Created on 25 Jan 2019  Β·  12Comments  Β·  Source: MichaIng/DietPi

Creating a bug report/issue:

on a fresh install on DietPi on Sparky/USBridge shairport-sync is running but the streams break down after some seconds or minutes.
My Apple devices find the shairport-sync-device. The devices are able to stream to shairport-sync. The stream is received and i can hear music via my Hifi. After some seconds or minutes the audio abort. On the iPhone it look like the music is still streaming, but i hear nothing.

I found no error in configuration.
I had no other idea then to do my own compilation of shairport-sync.
After loading shairport-sync from git (an all libraries it depending on), do the described steps from
https://github.com/mikebrady/shairport-sync
everything work flawlessly.

the only miracle i found in journalctl is:
Jan 22 03:14:14 DietPi shairport-sync[2181]: ALSA lib pcm_hw.c:1713:(_snd_pcm_hw_open) Invalid value for card

Because i found a workaround (compile shairport-sync by myself) you can close the issue. I want only publish it you.

thanks

Required Information:

  • DietPi version | cat /DietPi/dietpi/.version
    G_DIETPI_VERSION_CORE=6
    G_DIETPI_VERSION_SUB=19
    G_DIETPI_VERSION_RC=7
    G_GITBRANCH=master
    G_GITOWNER=Fourdee
  • Distro version | echo $G_DISTRO_NAME or cat /etc/debian_version
    9.6
  • Kernel version | uname -a
    Linux DietPi 3.10.38 #22 SMP PREEMPT Fri Dec 22 10:45:41 IST 2017 armv7l GNU/Linux
  • SBC device | echo $G_HW_MODEL_DESCRIPTION or (EG: RPi3)
    allo sparky with usbridge
  • Power supply used | (EG: 5V 1A RAVpower)
    5V 3A
  • SDcard used | (EG: SanDisk ultra)
    sandig ultra

Additional Information (if applicable):

  • Software title | shairport-sync
  • Was the software title installed freshly or updated/migrated?
  • freshly installed from dietPi minimal image
  • Can this issue be replicated on a fresh installation of DietPi?
    the installation was a fresh one
  • dietpi-bugreport ID
Enhancement

All 12 comments

@seniorgod

Many thanks for the report + solution. πŸ‘

Our current version binaries are shairport-sync_3.1.7. I'll rebuild latest and release for v6.20.

I test also spotifyd

It’s a spotify daemon based on rust language.

Advantage:

  • simpler user/password login - you do not need spotify_app_key
  • automation with scripts which run at start or stop music
  • auto discover without additional avahi daemon

Disadvantage:

  • password is readable in config on disk
  • can’t be controlled from outside

Matthias

Am 26.01.2019 um 10:44 schrieb Dan notifications@github.com:

@seniorgod https://github.com/seniorgod
Many thanks for the report + solution. πŸ‘

Our current version binaries are shairport-sync_3.1.7. I'll rebuild latest and release for v6.20.

β€”
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/Fourdee/DietPi/issues/2439#issuecomment-457817550, or mute the thread https://github.com/notifications/unsubscribe-auth/AQWpjl4ovxXTin4TuBQQRQlxyQddC6YGks5vHCOGgaJpZM4aTdIU.

Install tests:

  • 🈯️ armv6
  • 🈯️ armv7
  • 🈯️ armv7
  • 🈯️ x86_64

Completed, patched in v6.20

did you include libalac for shairport-sync ?

other question regarding mpd.
Do you update to 0.21.x ? in dietPi 6.20 ?

best regards

Am 26.01.2019 um 11:30 schrieb Dan notifications@github.com:

Install tests:

🈯️ armv6
🈯️ armv7
🈯️ armv7
🈯️ x86_64
Completed, patched in v6.20

β€”
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/Fourdee/DietPi/issues/2439#issuecomment-457820095, or mute the thread https://github.com/notifications/unsubscribe-auth/AQWpjtGjyWi87J2q1xz9EmnVYvl7lzNoks5vHC5UgaJpZM4aTdIU.

@seniorgod

Do you update to 0.21.x ? in dietPi 6.20 ?

MPD is updated to 0.20.23
0.21.3 failed to build: https://github.com/Fourdee/DietPi/issues/2377#issuecomment-450977281

short version: is compiled mpd 21.4 on DietPi and it works!

long version:

i asked you because following point from the 0.21.x mpd changelog sound very interesting:

  • output

    • alsa: non-blocking mode

      Today the problem with running shairport, spotifyd and mpd in parallel is, that mpd locks the alsa output. You have to stop streaming mpd before starting apple airplay or spotify

after your answer i start trying to compile mpd following the instructions on:
https://musicpd.org/doc/html/user.html

First i run into an error because the used build env named β€žmesonβ€œ (i never heard of this before; is it the typical me too project?, i’m simply too old)
So i have to download meson from stretch-backports and follow the instructions

apt-get -t stretch-backports install meson

apt install g++ \
libpcre3-dev \
libmad0-dev libmpg123-dev libid3tag0-dev \
libflac-dev libvorbis-dev libopus-dev \
libadplug-dev libaudiofile-dev libsndfile1-dev libfaad-dev \
libfluidsynth-dev libgme-dev libmikmod2-dev libmodplug-dev \
libmpcdec-dev libwavpack-dev libwildmidi-dev \
libsidplay2-dev libsidutils-dev libresid-builder-dev \
libavcodec-dev libavformat-dev \
libmp3lame-dev libtwolame-dev libshine-dev \
libsamplerate0-dev libsoxr-dev \
libbz2-dev libcdio-paranoia-dev libiso9660-dev libmms-dev \
libzzip-dev \
libcurl4-gnutls-dev libyajl-dev libexpat-dev \
libasound2-dev libao-dev libjack-jackd2-dev libopenal-dev \
libpulse-dev libshout3-dev \
libsndio-dev \
libmpdclient-dev \
libnfs-dev libsmbclient-dev \
libupnp-dev \
libavahi-client-dev \
libsqlite3-dev \
libsystemd-dev libwrap0-dev \
libgtest-dev \
libboost-dev \
libicu-dev

source code download

wget http://www.musicpd.org/download/mpd/0.21/mpd-0.21.4.tar.xz
tar -xf mpd-0.21.4.tar.xz
cd mpd-0.21.4
meson . output/release --buildtype=debugoptimized -Db_ndebug=true

meson configure output/release

ninja -C output/release

ninja -C output/release install

i get a big bunch of notes like this :

/usr/include/c++/6/bits/stl_vector.h:1178:71: note: parameter passing for argument of type β€˜__gnu_cxx::__normal_iterator >’ will change in GCC 7.1
return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg));
^
/usr/include/c++/6/bits/stl_vector.h:1178:71: note: parameter passing for argument of type β€˜__gnu_cxx::__normal_iterator >’ will change in GCC 7.1
/usr/include/c++/6/bits/stl_vector.h:1178:71: note: parameter passing for argument of type β€˜__gnu_cxx::__normal_iterator >’ will change in GCC 7.1
/usr/include/c++/6/bits/stl_vector.h:1178:71: note: parameter passing for argument of type β€˜__gnu_cxx::__normal_iterator >’ will change in GCC 7.1

but mpd is build in version 21.4.

And YEP. MPD now uses a non blocking also mode. I can start airplay while streaming from mpd and it simply change.
So it would be a positive effect to change to mpd 21.4 for DietPi

best regards

Am 26.01.2019 um 17:25 schrieb MichaIng notifications@github.com:

@seniorgod https://github.com/seniorgod
Do you update to 0.21.x ? in dietPi 6.20 ?

MPD is updated to 0.20.23
0.21.3 failed to build: #2377 (comment) https://github.com/Fourdee/DietPi/issues/2377#issuecomment-450977281
β€”
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/Fourdee/DietPi/issues/2439#issuecomment-457844304, or mute the thread https://github.com/notifications/unsubscribe-auth/AQWpjsgQ9-YrWHVZz3LTPRuEO0AHMV3Kks5vHIFigaJpZM4aTdIU.

one additional point:

i found that the build script "installed" /usr/local as location for mpd. therefore mpd expects its config file under /usr/local/etc .... So i linked it from /etc to /usr/local/etc

no idea to change it

Am 26.01.2019 um 18:43 schrieb Matthias Gottschlich matthias.gottschlich@gmx.de:

short version: is compiled mpd 21.4 on DietPi and it works!

long version:

i asked you because following point from the 0.21.x mpd changelog sound very interesting:

  • output

    • alsa: non-blocking mode

      Today the problem with running shairport, spotifyd and mpd in parallel is, that mpd locks the alsa output. You have to stop streaming mpd before starting apple airplay or spotify

after your answer i start trying to compile mpd following the instructions on:
https://musicpd.org/doc/html/user.html https://musicpd.org/doc/html/user.html

First i run into an error because the used build env named β€žmesonβ€œ (i never heard of this before; is it the typical me too project?, i’m simply too old)
So i have to download meson from stretch-backports and follow the instructions

apt-get -t stretch-backports install meson

apt install g++ \
libpcre3-dev \
libmad0-dev libmpg123-dev libid3tag0-dev \
libflac-dev libvorbis-dev libopus-dev \
libadplug-dev libaudiofile-dev libsndfile1-dev libfaad-dev \
libfluidsynth-dev libgme-dev libmikmod2-dev libmodplug-dev \
libmpcdec-dev libwavpack-dev libwildmidi-dev \
libsidplay2-dev libsidutils-dev libresid-builder-dev \
libavcodec-dev libavformat-dev \
libmp3lame-dev libtwolame-dev libshine-dev \
libsamplerate0-dev libsoxr-dev \
libbz2-dev libcdio-paranoia-dev libiso9660-dev libmms-dev \
libzzip-dev \
libcurl4-gnutls-dev libyajl-dev libexpat-dev \
libasound2-dev libao-dev libjack-jackd2-dev libopenal-dev \
libpulse-dev libshout3-dev \
libsndio-dev \
libmpdclient-dev \
libnfs-dev libsmbclient-dev \
libupnp-dev \
libavahi-client-dev \
libsqlite3-dev \
libsystemd-dev libwrap0-dev \
libgtest-dev \
libboost-dev \
libicu-dev

source code download

wget http://www.musicpd.org/download/mpd/0.21/mpd-0.21.4.tar.xz http://www.musicpd.org/download/mpd/0.21/mpd-0.21.4.tar.xz
tar -xf mpd-0.21.4.tar.xz
cd mpd-0.21.4
meson . output/release --buildtype=debugoptimized -Db_ndebug=true

meson configure output/release

ninja -C output/release

ninja -C output/release install

i get a big bunch of notes like this :

/usr/include/c++/6/bits/stl_vector.h:1178:71: note: parameter passing for argument of type β€˜__gnu_cxx::__normal_iterator >’ will change in GCC 7.1
return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg));
^
/usr/include/c++/6/bits/stl_vector.h:1178:71: note: parameter passing for argument of type β€˜__gnu_cxx::__normal_iterator >’ will change in GCC 7.1
/usr/include/c++/6/bits/stl_vector.h:1178:71: note: parameter passing for argument of type β€˜__gnu_cxx::__normal_iterator >’ will change in GCC 7.1
/usr/include/c++/6/bits/stl_vector.h:1178:71: note: parameter passing for argument of type β€˜__gnu_cxx::__normal_iterator >’ will change in GCC 7.1

but mpd is build in version 21.4.

And YEP. MPD now uses a non blocking also mode. I can start airplay while streaming from mpd and it simply change.
So it would be a positive effect to change to mpd 21.4 for DietPi

best regards

Am 26.01.2019 um 17:25 schrieb MichaIng <[email protected] notifications@github.com>:

@seniorgod https://github.com/seniorgod
Do you update to 0.21.x ? in dietPi 6.20 ?

MPD is updated to 0.20.23
0.21.3 failed to build: #2377 (comment) https://github.com/Fourdee/DietPi/issues/2377#issuecomment-450977281
β€”
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/Fourdee/DietPi/issues/2439#issuecomment-457844304, or mute the thread https://github.com/notifications/unsubscribe-auth/AQWpjsgQ9-YrWHVZz3LTPRuEO0AHMV3Kks5vHIFigaJpZM4aTdIU.

@seniorgod

i found that the build script "installed" /usr/local as location for mpd. therefore mpd expects its config file under /usr/local/etc .... So i linked it from /etc to /usr/local/etc

Yep, I had the same problem, I believe prefix=/usr may resolve this in configure or make section (cant remember).

Heres the build script I have:

# #compile
wget https://www.musicpd.org/download/mpd/0.20/mpd-0.20.23.tar.xz -O package.tar
#wget https://www.musicpd.org/download/mpd/0.21/mpd-0.21.3.tar.xz -O package.tar #https://www.musicpd.org/download/mpd/0.19/mpd-0.19.16.tar.xz
tar -xf package.tar
rm package.tar

G_AGI build-essential automake \
libmad0-dev libmpg123-dev libid3tag0-dev \
libflac-dev libvorbis-dev libfaad-dev \
libnfs-dev libsmbclient-dev \
libwavpack-dev \
libavcodec-dev libavformat-dev \
libmp3lame-dev \
libsoxr-dev \
libcdio-paranoia-dev libiso9660-dev \
libcurl4-gnutls-dev \
libasound2-dev \
libshout3-dev libyajl-dev \
libmpdclient-dev \
libavahi-client-dev \
libsystemd-dev \
libwrap0-dev \
libboost-dev \
libicu-dev \
libglib2.0-dev \
libopus-dev \
libupnp-dev libexpat-dev \
libsqlite3-dev

cd mpd-*
./autogen.sh
./configure --enable-upnp --enable-expat --enable-database --enable-libmpdclient --enable-alsa \
--enable-curl --enable-dsd --enable-ffmpeg --enable-flac \
--enable-id3 --enable-soundcloud --enable-lame-encoder --enable-mad \
--enable-mpg123 --enable-pipe-output --enable-recorder-output --enable-shout \
--enable-vorbis --enable-wave-encoder --enable-wavpack --enable-httpd-output \
--enable-soxr --with-zeroconf=avahi \
--enable-nfs --enable-smbclient \
--enable-opus \
--enable-upnp \
--enable-sqlite \
--disable-bzip2 --disable-zzip --disable-fluidsynth --disable-gme \
--disable-wildmidi --disable-jack --disable-ao --disable-oss \
--disable-ipv6 --disable-pulse \
--disable-lsr \
--disable-sndfile --disable-audiofile --disable-sidplay

G_RUN_CMD make -j $(nproc --all) #prefix=/usr

@seniorgod

that mpd locks the alsa output.

Yep. I actually prefer this as the audio hardware is dedicated to the active stream. Also ensures programs like Roon (which attaches directly to the hardware) play nice.

@seniorgod

i found that the build script "installed" /usr/local as location for mpd. therefore mpd expects its config file under /usr/local/etc .... So i linked it from /etc to /usr/local/etc

Jep, we also found this and did the same for v6.20: https://github.com/Fourdee/DietPi/issues/2378#issuecomment-451315809

Dear all,

i open a issue at mpd in Github reading this point.
I give you notice if i get an answer

Am 28.01.2019 um 20:43 schrieb MichaIng notifications@github.com:

@seniorgod https://github.com/seniorgod
i found that the build script "installed" /usr/local as location for mpd. therefore mpd expects its config file under /usr/local/etc .... So i linked it from /etc to /usr/local/etc

Jep, we also found this and did the same for v6.20: #2378 (comment) https://github.com/Fourdee/DietPi/issues/2378#issuecomment-451315809
β€”
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/Fourdee/DietPi/issues/2439#issuecomment-458273408, or mute the thread https://github.com/notifications/unsubscribe-auth/AQWpjmxwAxsl0P9vbkg0qBAuUJwWgc89ks5vH1LcgaJpZM4aTdIU.

I get an answer from the mpd maintainer:

β€ž...
If you want MPD to look for mpd.conf in /etc/ instead of /usr/local/etc/ (=Meson's default) configure with -Dsysconfdir=/etc.
…"

best regards

Am 30.01.2019 um 23:07 schrieb Matthias Gottschlich matthias.gottschlich@gmx.de:

Dear all,

i open a issue at mpd in Github reading this point.
I give you notice if i get an answer

Am 28.01.2019 um 20:43 schrieb MichaIng <[email protected] notifications@github.com>:

@seniorgod https://github.com/seniorgod
i found that the build script "installed" /usr/local as location for mpd. therefore mpd expects its config file under /usr/local/etc .... So i linked it from /etc to /usr/local/etc

Jep, we also found this and did the same for v6.20: #2378 (comment) https://github.com/Fourdee/DietPi/issues/2378#issuecomment-451315809
β€”
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/Fourdee/DietPi/issues/2439#issuecomment-458273408, or mute the thread https://github.com/notifications/unsubscribe-auth/AQWpjmxwAxsl0P9vbkg0qBAuUJwWgc89ks5vH1LcgaJpZM4aTdIU.

Was this page helpful?
0 / 5 - 0 ratings