archlinux:mpd_goflex_home
Table des matières
Serveurs/Players de musique sur GoFlex Home/Net
- Update : GoFlexNet n'est plus utilisé. Le GoFlexHome ne joue plus le rôle de player de musique, il fournit actuellement trois serveurs :
- MinimServer : pour les fichiers locaux.
- LMS : pour streaming internet (spotify, radios)
- MiniDLNA : pour des photos et vidéos
- Résumé :
- Upmpdcli : UPnP Media Renderer front-end for MPD. Cette solution combine MPD et UPnP.
- LMS (Logitech Media Server) : Il est plus complet que MPD (fichiers audio, une base préconfigurée de webradios, podcasts, Spotify, Qobuz). Ses interfaces utilisateurs sont plus ergonomiques que celles des clients mpd. Par contre, il consomme plus de RAM.
- MPD : installation facile et très bien pour lire les fichiers audio.
- Mopidy : testé, non utilisé.
- MiniDLNA : Audio et vidéos/TV.
- Note : Le serveur LMS cohabite très bien avec MPD, ils peuvent utiliser les mêmes fichiers musicaux. Ils peuvent aussi partager les mêmes pochettes locales nommées “cover.jpg” et placées dans le dossier d'un album.
MinimServer et Upmpdcli+MPD
- Il s'agit d'utiliser la combinaison de
- UPnP media server : MinimServer
- Utiliser tag update. Voici le fichier tagupdate.txt
- Installer MinimWatch sur le portable HP pour contrôler MinimServer. Il faut configurer son firewall pour accepter la machine du MinimServer :
# Upplay et MinimWatch. Cette adresse MAC est celle du GoFlex Home ACCEPT net:~00:10:75:29:87:57 $FW udp,tcp # Upplay et MinimWatch. Cette adresse MAC est celle du GoFlex Net ACCEPT net:~00:10:75:26:6f:76 $FW udp,tcp
dans
/etc/shorewall/rules
.
-
- Pour compiler, installer et configurer upmpdcli, j'ai adapté les PKGBUILD pour
libupnp patché
, PKGBUILD pourlibupnpp
et PKGBUILD pourupmpdcli
pour créer les packages.- Le script pour systemd est ici. J'utilise
/etc/systemd/system/upmpdcli.service
[Unit] Description=UPnP Renderer front-end to MPD After=syslog.target mpd.service [Service] Type=simple # Note: if start fails check with "systemctl status upmpdcli" ExecStart=/usr/bin/upmpdcli -c /etc/upmpdcli.conf [Install] WantedBy=multi-user.target
- upmpdcli tourne en tant que user upmpdcli, il faut le créer. La commande
useradd -r -d /usr/share/upmpdcli upmpdcli
crée un utilisateur système avec /usr/share/upmpdcli comme home.
- UPnP control point (supportant OpenHome) : LUMÏN ou mconnect player (free) sur iphone/ipad, BubbleUPnP ou LUMÏN sur smartphone/tablette android, Upplay sur un ordinateur de bureau.
- Voir cet article.
Logitech Media Server
Installer LMS (Logitech Media Server)
- Update (LMS 7.9) : Utiliser AUR logitechmediaserver.
- Compiler
$ wget https://aur.archlinux.org/cgit/aur.git/snapshot/logitechmediaserver.tar.gz $ tar zxvf logitechmediaserver.tar.gz $ cd logitechmediaserver $ sudo echo 60 > /proc/sys/vm/swappiness $ makepkg -s
- Installer et vérifier le serveur
$ sudo pacman -U logitechmediaserver-7.9.0.arch5-1-arm.pkg.tar.xz $ sudo systemctl enable logitechmediaserver $ sudo systemctl start logitechmediaserver $ sudo systemctl status logitechmediaserver
- Historique (LMS 7.8) :
- Depuis le mars 2012, nouveaux dépôts git https://github.com/Logitech et LMS Changelogs. Voici ce que j'ai cru comprendre l'organisation de ces dépôts :
- Le dépôt slimserver correspond au LMS compilé “prêt à être utilisé” sur certaines configurations systèmes (https://github.com/Logitech/slimserver/tree/public/7.8/CPAN/arch). On constate qu'il manque les modules Perl binaires requis par LMS pour ARMv5 avec perl >= 5.16.
- Le dépôt slimserver-vendor contient
- les sources des modules Perl binaires requis par LMS. Ces modules binaires sont architecture dépendantes. Il me faut les compiler et récupérer la partie arch dépendante pour la mettre dans
slimserver/CPAN/arch
. - les sources des décodeurs
slimserver/Bin/*
. Ces binaires dansslimserver/Bin
me semble inutiles (au moins dans mon cas) si on a les packages flac, libmad, libvorbis et faad2 installés. Ils ont subi des patches spécifiques LMS que l'on peut examiner dans slimserver-vendor. On peut toujours revenir sur ces patches si on rencontre des problèmes avec les décodeurs.
- Version de perl : la version utilisée actuellement est 5.20. L'installation de LMS dépend de la version de perl utilisée.
- LMS 7.8 : Pour la stabilité, je reste avec la version 7.8. Je crée deux packages pour permettre des mises à jour séparées (pour économiser le temps de compilation parce que les modules Perl binaires requis par LMS ne changent pas souvent).
- Récupérer d'abord les deux dépôts git :
git clone git://github.com/Logitech/slimserver-vendor.git git clone git://github.com/Logitech/slimserver.git (**vérifier la branche 7.8 avec git branch, sinon changer avec la commande git checkout**)
- En adaptant https://aur.archlinux.org/packages/logitechmediaserver/, voici deux PKGBUILDs pour créer les deux packages :
- Compiler
slimserver-vendor/CPAN/*
pour perl 5.20 (les modules Perl binaires requis par LMS) : Créer un dossierlogitechmediaserver-vendor
et y mettre ce PKGBUILD (modifier les lignes pkgrel et gitsrc si nécessaire). Compiler et installer le package (La compilation dure ~2h30 (mais mise à jour rarement), et elle a besoin de swap.). Ce package contient uniquement la partie arch dépendante des modules :sudo echo 60 > /proc/sys/vm/swappiness [swap normalement] cd logitechmediaserver-vendor makepkg -s sudo pacman -U logitechmediaserver-vendor-7.8.1-20140625-arm.pkg.tar.xz sudo echo 0 > /proc/sys/vm/swappiness [swap réduit au minimum]
- Pas de compilation, juste rassembler des fichiers du slimserver dans un package : Créer un dossier
logitechmediaserver
et y placer les fichiers PKGBUILD (modifier les lignes pkgrel et gitsrc si nécessaire), service et install. Créer et installer le package (en quelques minutes) :sudo echo 60 > /proc/sys/vm/swappiness [swap normalement] cd logitechmediaserver makepkg -s sudo pacman -U logitechmediaserver-7.8.1-20140625-arm.pkg.tar.xz sudo systemctl start logitechmediaserver.service sudo echo 0 > /proc/sys/vm/swappiness [swap réduit au minimum]
- Pour le lancement automatique au boot :
systemctl enable logitechmediaserver.service
- Connecter au serveur par http://lms_ip:9000, désactiver toutes les options inutiles et choisir des options pour haute performance.
- Voir cette discussion pour comprendre
File Format Conversion Setup
. - Activer le swap normalement avant de (re-)créer la base de données.
- Le RAM 128Mo est un peu faible pour LMS, relancer LMS une fois par jour
# EDITOR=vim crontab -e ======== ajouter cette ligne (relancer logitechmediaserver tous les jours à 3h) : 0 3 * * * systemctl restart logitechmediaserver ========
- Les log de LMS sont dans
/opt/logitechmediaserver/Logs/
. Créer un fichier/etc/logrotate.d/logitechmediaserver
de contenu/opt/logitechmediaserver/Logs/*.log { missingok }
Installer un lecteur de musique
- Utiliser Squeezelite.
Squeezelite
- La config d'alsa :
/etc/asound.conf
pcm.!default { type hw card 0 } ctl.!default { type hw card 0 }
- Il est très facile de compiler squeezelite à partir de source
pacman -S git flac libmad mpg123 libvorbis faad2 git clone https://code.google.com/p/squeezelite/ cd squeezelite make clean make
- Info sur la carte son (hiFace2) donné par squeezelite
# squeezelite -l Output devices: null - Discard all samples (playback) or generate zero samples (capture) sysdefault:CARD=M20 - M2Tech USB Audio 2.0, USB Audio - Default Audio Device front:CARD=M20,DEV=0 - M2Tech USB Audio 2.0, USB Audio - Front speakers surround40:CARD=M20,DEV=0 - M2Tech USB Audio 2.0, USB Audio - 4.0 Surround output to Front and Rear speakers surround41:CARD=M20,DEV=0 - M2Tech USB Audio 2.0, USB Audio - 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=M20,DEV=0 - M2Tech USB Audio 2.0, USB Audio - 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=M20,DEV=0 - M2Tech USB Audio 2.0, USB Audio - 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=M20,DEV=0 - M2Tech USB Audio 2.0, USB Audio - 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers iec958:CARD=M20,DEV=0 - M2Tech USB Audio 2.0, USB Audio - IEC958 (S/PDIF) Digital Audio Output
- Suite à une mise à jour du firmware, le nom de la carte son a été changé, c'est
UAC2
au lieu deM20
.# squeezelite -l Output devices: null - Discard all samples (playback) or generate zero samples (capture) sysdefault:CARD=UAC2 - hiFaceTWO UAC2, USB Audio - Default Audio Device front:CARD=UAC2,DEV=0 - hiFaceTWO UAC2, USB Audio - Front speakers surround21:CARD=UAC2,DEV=0 - hiFaceTWO UAC2, USB Audio - 2.1 Surround output to Front and Subwoofer speakers surround40:CARD=UAC2,DEV=0 - hiFaceTWO UAC2, USB Audio - 4.0 Surround output to Front and Rear speakers surround41:CARD=UAC2,DEV=0 - hiFaceTWO UAC2, USB Audio - 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=UAC2,DEV=0 - hiFaceTWO UAC2, USB Audio - 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=UAC2,DEV=0 - hiFaceTWO UAC2, USB Audio - 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=UAC2,DEV=0 - hiFaceTWO UAC2, USB Audio - 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers iec958:CARD=UAC2,DEV=0 - hiFaceTWO UAC2, USB Audio - IEC958 (S/PDIF) Digital Audio Output
- Deux façons pour utiliser Squeezelite :
- Option 1 : Lancer squeezelite par la commande
squeezelite -z -n SqueezeliteGoFlexHome -o hw:0,0 -a 200::: -s ip_LMS
ou
squeezelite -z -n SqueezeliteGoFlexHome -o hw:CARD=UAC2 -a 200::: -s ip_LMS
ou
squeezelite -z -n SqueezeliteGoFlexHome -o hw:CARD=UAC2,DEV=0 -a 200::: -s ip_LMS
- Les valeurs par défaut de l'option -a est
20:4::
. Le paramètre pour buffer_time (en milliseconde) “200” (0.2 secondes) est important pour supprimer des parasites dans le son. En fait sa valeur par défaut “20” (0.02 secondes) est trop courte dans mon cas. Sachant que mpd utilise par défaut 0.5 secondes de buffer_time (option définie utilisant microseconde) d'après la man page de mpd.conf :OPTIONAL ALSA OUTPUT PARAMETERS buffer_time <time in microseconds> This sets the length of the hardware sample buffer in microsec‐ onds. Increasing it may help to reduce or eliminate skipping on certain setups. Most users do not need to change this. The default is 500000 microseconds (0.5 seconds).
- Option 2 : Préférer cette méthode quand le lecteur et le serveur sont sur la même machine, c'est mon cas. Il suffit d'installer le plugin Local Player. On le configure dans les settings de LMS.
- LMS tourne sous user logitechms (voir le fichier
/usr/lib/systemd/system/logitechmediaserver.service
), il faut ajouter logitechms dans le groupe audio# gpasswd -a logitechms audio
(ou bien le faire manuellement dans les deux fichiers
/etc/group
et/etc/gshadow
) - Pour utiliser l'option -p (Set real time priority of output thread (1-99), valeur par défaut est 45 pour un des quatre threads) de squeezelite (voir CPU Scheduling), il faut le lancer par root (la méthode décrite dans http://jackaudio.org/linux_rt_config ne marche pas). Or le plugin est lancé par user logitechms, on peut le contourner par suid
# chown root /opt/logitechmediaserver/cache/InstalledPlugins/Plugins/LocalPlayer/Bin/squeezelite-armv5te # chmod u+s /opt/logitechmediaserver/cache/InstalledPlugins/Plugins/LocalPlayer/Bin/squeezelite-armv5te
(mais il faut le refaire après chaque mise à jour du plugin) (intégrer aussi ces deux commandes dans le script post-install de LMS)
- Voici le contenu du
/opt/logitechmediaserver/Logs/localplayer.log
au démarrage de LMS (il faut activer temporairement les log dans la page de config du plugin, mais le désactiver pour un usage normal) :Starting Squeezelite: /opt/logitechmediaserver/cache/InstalledPlugins/Plugins/LocalPlayer/Bin/squeezelite-armv5te -d all=debug -f /opt/logitechmediaserver/Logs/localplayer.log -n SqueezeliteGoFlexHome -o hw:CARD=UAC2,DEV=0 -a 200::: -s 192.168.0.18 [18:08:55.188931] stream_init:264 init stream [18:08:55.189638] stream_init:265 streambuf size: 2097152 [18:08:55.214847] output_init_alsa:636 init output [18:08:55.215058] output_init_alsa:658 requested alsa_buffer: 200 alsa_period: 4 format: any mmap: 1 [18:08:55.215150] output_init_common:334 outputbuf size: 3528000 [18:08:55.249346] output_init_common:394 supported rates: 192000 176400 96000 88200 48000 44100 [18:08:55.349182] output_init_alsa:670 memory locked [18:08:55.349857] output_thread:465 open output device: hw:CARD=M20,DEV=0 [18:08:55.350903] alsa_open:234 opened device hw:CARD=M20,DEV=0 using format: S32_LE sample rate: 44100 mmap: 1 [18:08:55.351209] alsa_open:313 buffer: 200 period: 4 -> buffer size: 8820 period size: 2205 [18:08:55.351478] output_init_alsa:693 set output sched fifo rt: 45 [18:08:55.351559] decode_init:129 init decode [18:08:55.378604] load_faad:610 loaded libfaad.so.2 [18:08:55.399786] load_vorbis:295 loaded libvorbisfile.so.3 [18:08:55.448299] load_flac:258 loaded libFLAC.so.8 [18:08:55.448440] register_pcm:382 using pcm [18:08:55.470567] load_mad:351 loaded libmad.so.0 [18:08:55.804396] slimproto:787 connecting to 192.168.0.18:3483 [18:08:55.804943] slimproto:817 connected [18:08:55.805058] slimproto:833 local player [18:08:55.805127] sendHELO:117 mac: 00:10:75:29:87:57 [18:08:55.805226] sendHELO:119 cap: Model=squeezelite,ModelName=SqueezeLite,AccuratePlayPoints=1,HasDigitalOut=1,MaxSampleRate=192000,aac,ogg,flc,aif,pcm,mp3,loc [18:08:57.438489] process:469 strm [18:08:57.438641] process_strm:232 strm command q [18:08:57.438750] decode_flush:188 decode flush [18:08:57.438816] output_flush:407 flush output buffer [18:08:57.438881] sendSTAT:164 STAT: STMf [18:08:57.441233] process:469 strm [18:08:57.441349] process_strm:232 strm command q [18:08:57.441414] decode_flush:188 decode flush [18:08:57.441474] output_flush:407 flush output buffer [18:08:57.441537] sendSTAT:164 STAT: STMf [18:08:57.443019] process:469 setd [18:08:57.443124] sendSETDName:223 set playername: SqueezeliteGoFlexHome [18:08:57.443742] process:469 setd [18:08:57.444566] process:469 aude [18:08:57.444659] process_aude:368 enable spdif: 1 dac: 1 [18:08:57.446374] process:469 audg [18:08:57.446480] process_audg:385 audg gainL: 65536 gainR: 65536 adjust: 0 [18:08:57.508952] process:469 strm [18:08:57.509086] process_strm:232 strm command t [18:08:57.509156] sendSTAT:164 STAT: STMt
SqueezeSlave (obsolète pour mon usage)
- Compiler et installer SqueezeSlave (without interactive (aka DISPLAY) support).
svn checkout http://squeezeslave.googlecode.com/svn/squeezeslave/trunk/squeezeslave cd squeezeslave/ vim makefile.linux26-armel-alsa-display (désactiver "interactive (aka DISPLAY) support") make -f makefile.linux26-armel-alsa-display realclean make -f makefile.linux26-armel-alsa-display cp bin/squeezeslave /usr/local/bin/
- Avec le DAC usb V-DAC I, il y a un bruit parasite (c'est comme une mauvaise réception de radio). La config
/etc/asound.conf
proposée par archlinux wiki (changer rate en 44100) ou l'exemple dans les codes sourcessqueezeslave/config/squeezeplug-asound.conf
résout ce problème. Voici la config/etc/asound.conf
(Même s'il n'y a pas de input, le “pcm.dsnooper” semble nécessaire. Aucune idée pourquoi ça marche !)pcm.!default { type plug slave.pcm "softvol" } pcm.softvol { type softvol slave { pcm "dmixer" } control { name "Master" card 0 } } pcm.dmixer { type dmix ipc_key 1024 slave { pcm "hw:0" period_time 0 period_size 4096 buffer_size 131072 rate 44100 } bindings { 0 0 1 1 } } pcm.dsnooper { type dsnoop ipc_key 1024 slave { pcm "hw:0" channels 2 period_time 0 period_size 4096 buffer_size 131072 rate 44100 } bindings { 0 0 1 1 } } ctl.!default { type hw card 0 } ctl.softvol { type hw card 0 } ctl.dmixer { type hw card 0 }
Lancer squeezeslave au boot en ajoutant dans/etc/rc.local
<file># attendre le serveur logitechmediaserver : sleep 60s squeezeslave -m xx:xx:xx:xx:xx:xx </file>L'adresse mac sert à identifier de manière unique le player squeezeslave pour éviter le message erreur “cette platine est déjà enregistrée pour un autre utilisateur” lorsqu'on veut utiliser “Mes applications” dans l'interface de contrôle.
SqueezePlay (obsolète pour mon usage)
- Compiler et installer la version 7.7.2 (svn r9563). Aller sur http://aur.archlinux.org/packages.php?ID=56769 et prend le tarball contenant le PKGBUILD. Pas besoin de modifier ce PKGBUILD, compile et installe squeezeplay.
- Installer les deux packages xorg-server-xvfb et xorg-xauth.
- Ouvrir le fichier
/usr/bin/squeezeplay.sh
et remplacer la dernière ligne./jive
par
xvfb-run ./jive
- Supprimer d'abord tous les fichiers de config (s'il y en a) dans
~/.squeezeplay/userpath/settings
. Il nous faut créer le bon fichier~/.squeezeplay/userpath/settings/Playback.lua
avant de lancer/usr/bin/squeezeplay.sh
. Voici comment je l'ai obtenu : (le serveur Logitech Media Server étant déjà lancé sur mon Goflex Home) Sur mon vieux portable sous windows xp, installer et lancer SqueezePlay pour connecter au Logitech Media Server sur GoFlexHome. En suite je récupère le fichier généréC:\Documents and Settings\user_login_name\Application Data\SqueezePlay\userpath\settings\Playback.lua
. Voici la forme du contenu de ce fichiersettings = {enableAudio=1,squeezeNetwork=false,serverUuid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",powerState="on",volume=100,serverInit={ip="xxx.xxx.xxx.xxx",},serverName="alarm",playerInit={name="SqueezePlay",model="squeezeplay",},captureVolume=40,}
- Je dois aussi utiliser la config
/etc/asound.conf
ci-dessus pour éviter le même problème de son.
- Note : Voir ici pour installer SqueezePlay sur le portable hp8460p.
GUI
- Il faut une interface graphique pour piloter “LMS + Squeezelite”.
- un navigateur web : http://ip_goflexhome:9000/
Spotify
- Il faut avoir un abonnement Spotify Premium.
- Le plugin officiel Spotify ne marche pas.
- Activer le “3rd Party Spotify Plugin” de Triode.
- [Bug corrigé (https://aur.archlinux.org/packages.php?ID=53691)]
J'ai rencontré un problème <code>Plugins::Spotify::Spotifyd::ANON (91) unable to write log file: /opt/logitechmediaserver/Logs/spotifyd.log</code> * Solution 1 : Il est possible qu'il faut relancer LMS dans un terminal. Et pour qu'il marche correctement, il faut utiliserldconfig
ou créer tout simplement un lien symbolique dans/usr/lib/
vers/opt/logitechmediaserver/cache/InstalledPlugins/Plugins/Spotify/Bin/arm-linux/libspotify.so.10
. * Note : Pas besoin de faire ça sur RaspberryPi/Raspbian. * Solution 2 : En fait, c'est un “bug” dans/usr/lib/systemd/system/logitechmediaserver.service
. Il faut ajouterUser=logitechms
etGroup=logitechms
. On peut enlever l'option–user logitechms
dans la ligneExecStart=…
<code>— service 2012-07-27 01:40:22.000000000 +0200 +++ /usr/lib/systemd/system/logitechmediaserver.service 2013-04-04 10:53:51.000000000 +0200 @@ -3,13 +3,14 @@ After=network.target [Service] +User=logitechms +Group=logitechms PIDFile=/var/run/lms.pid WorkingDirectory=/opt/logitechmediaserver ExecStart=/opt/logitechmediaserver/slimserver.pl \ –prefsdir /opt/logitechmediaserver/prefs \ –cachedir /opt/logitechmediaserver/cache \ - –logfile /opt/logitechmediaserver/Logs/slimserver.log \ - –user logitechms + –logfile /opt/logitechmediaserver/Logs/slimserver.log [Install] WantedBy=multi-user.target </code>
Qobuz
-
- Le plugin est entré dans le repo officiel maintenant.
- Il faut un abonnement Qobuz.
- Les codes sources : https://github.com/pierrepoulpe/SqueezeboxQobuz
MPD
- C'est un “serveur + lecteur”. Voici un aperçu en image.
- Compiler et installer MPD minimaliste : Prendre les sources (ils sont dans ABS) de mpd et utiliser le PKGBUILD modifié. Ajouter
mpd
sur la ligneIgnorePkg
de/etc/pacman.conf
pour qu'une mise à jour du système ne touche pas mpd, mais seulement afficher une notification. Voici le diff avec PKGBUILD original :$ diff -Nu /var/abs/extra/mpd/PKGBUILD mpd/PKGBUILD --- /var/abs/extra/mpd/PKGBUILD 2015-02-26 00:06:34.645590086 +0100 +++ mpd/PKGBUILD 2015-02-26 09:54:47.854711000 +0100 @@ -1,26 +1,24 @@ -# $Id: PKGBUILD 231234 2015-02-10 19:30:11Z bisson $ # Maintainer: Gaetan Bisson <bisson@archlinux.org> # Contributor: Angel Velasquez <angvp@archlinux.org> # Contributor: Andrea Scarpino <andrea@archlinux.org> # Contributor: Damir Perisa <damir.perisa@bluewin.ch> # Contributor: Ben <ben@benmazer.net> +# Note : désactiver des options et des dépendances pour une version minimaliste + pkgname=mpd pkgver=0.19.9 pkgrel=2 pkgdesc='Flexible, powerful, server-side application for playing music' url='http://www.musicpd.org/' license=('GPL') -arch=('i686' 'x86_64') -depends=('libao' 'ffmpeg' 'libmodplug' 'audiofile' 'libshout' 'libmad' 'curl' 'faad2' - 'sqlite' 'jack' 'libmms' 'wavpack' 'avahi' 'libid3tag' 'yajl' 'libmpdclient' - 'icu' 'libupnp' 'libnfs') +arch=('arm') +depends=('audiofile' 'libmad' 'curl' 'faad2' 'sqlite' 'libmms' 'libid3tag' 'libmpdclient' 'icu') makedepends=('boost' 'doxygen') -validpgpkeys=('0392335A78083894A4301C43236E8A58C6DB4512') -source=("http://www.musicpd.org/download/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz"{,.sig} +source=("http://www.musicpd.org/download/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz" 'tmpfiles.d' 'conf') -sha1sums=('6683bee5f132eda318c5a61ec14b2df8d9164d60' 'SKIP' +sha1sums=('6683bee5f132eda318c5a61ec14b2df8d9164d60' 'f4d5922abb69abb739542d8e93f4dfd748acdad7' '291fd5cda9f0845834a553017327c4586bd853f6') @@ -33,12 +31,28 @@ --prefix=/usr \ --sysconfdir=/etc \ --enable-libmpdclient \ - --enable-jack \ - --enable-soundcloud \ - --enable-pipe-output \ - --enable-pulse \ - --disable-sidplay \ - --with-systemdsystemunitdir=/usr/lib/systemd/system + --disable-ao \ + --disable-ffmpeg \ + --disable-jack \ + --disable-modplug \ + --disable-pulse \ + --disable-shout \ + --disable-sidplay \ + --disable-soundcloud \ + --disable-wavpack \ + --disable-wildmidi \ + --disable-upnp \ + --disable-smbclient \ + --disable-nfs \ + --disable-gme \ + --disable-dsd \ + --disable-oss \ + --disable-recorder-output \ + --disable-ipv6 \ + --disable-fluidsynth \ + --disable-bzip2 \ + --with-zeroconf=no \ + --with-systemdsystemunitdir=/usr/lib/systemd/system + make }
MPD Config
- Le fichier
/etc/mpd.conf
(la sortie de la commande “egrep -v '^(#|$)' /etc/mpd.conf”) :music_directory "/archives/music" playlist_directory "/archives/mpd/playlists" db_file "/archives/mpd/database" log_file "/archives/mpd/mpd.log" pid_file "/archives/mpd/pid" state_file "/archives/mpd/state" sticker_file "/archives/mpd/sticker.sql" input { plugin "curl" } audio_output { type "alsa" name "M2TECH hiFace Two" auto_resample "no" device "hw:0,0" mixer_type "hardware" mixer_device "hw:0" mixer_control "M2Tech Clock Selector" mixer_index "1" } id3v1_encoding "UTF-8"
- MPD est lancé au démarrage par systemd. Le script
/usr/lib/systemd/system/mpd.service
utiliseUser=mpd
. Avec ma config, il faut que tout le dossier/archives/mpd/
appartienne à user et groupmpd
. - Pour ajouter le “streaming” (MPDroid supporte le streaming), activer en plus par exemple
audio_output { type "httpd" name "GoFlexHome HTTP Stream" encoder "vorbis" port "8000" bind_to_address "127.0.0.1" quality "5.0" format "44100:16:1" }
- Les log de mpd sont dans
/archives/mpd/mpd.log
. Créer un fichier/etc/logrotate.d/mpd
de contenu/archives/mpd/mpd.log { missingok }
- Si MPD est uniquement utilisé pour Upmpdcli, il suffit un
/etc/mpd.conf
très simpleaudio_output { type "alsa" name "M2TECH hiFace Two" auto_resample "no" device "hw:0,0" mixer_type "none" #mixer_type "hardware" #mixer_device "hw:0" #mixer_control "M2Tech Clock Selector" #mixer_index "1" }
Clients pour MPD
- Ce sont des contrôleurs de MPD, comme les télécommandes, ils ne sont pas des lecteurs audio.
- Sur un PC, utiliser gmpc.
- Sur un smartphone ou une tablette sous android, utiliser MPDroid.
- Pochettes CD locales pour le client MPDroid : Le client MPDroid peut utiliser les pochettes locales via un serveur http.
- Installer lighttpd : Installer un serveur http léger, par exemple lighttpd.
- Configurer lighttpd : Noter d'abord l'option
music_directory
de/etc/mpd.conf
. Dans mon cas, c'est/archives/music
. Configurer alors lighttpd avec l'optionserver.document-root=“/archives/music”
. Un exemple de/etc/lighttpd/lighttpd.conf
:# This is a minimal example config # See /usr/share/doc/lighttpd # and http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions server.port = 80 server.username = "http" server.groupname = "http" server.document-root = "/archives/music" server.errorlog = "/var/log/lighttpd/error.log" dir-listing.activate = "enable" index-file.names = ( "index.html" ) mimetype.assign = ( ".html" => "text/html", ".txt" => "text/plain", ".jpg" => "image/jpeg", ".png" => "image/png", "" => "application/octet-stream" ) # activer temporairement accesslog pour debug : #server.modules = ("mod_access", "mod_accesslog") #accesslog.filename = "/var/log/lighttpd/access.log"
- Configurer MPDroid : Sur le téléphone android, aller dans le menu “Paramètres” de MPDroid :
- Cocher “Télécharger les pochettes locales”. (“Télécharger les pochettes” est alors automatiquement décoché.)
- Laisser “Chemin vers la musique” vide. (En fait, il suffit [
music_directory
de/etc/mpd.conf
] = [server.document-root
de/etc/lighttpd/lighttpd.conf
] + [ce “Chemin vers la musique”].) - Définir “Nom du fichier pochette” (j'utilise
cover.jpg
) - Relancer MPDroid.
Apple AirPlay
- Installer
shairport-sync
: voir https://wiki.archlinux.org/index.php/Shairport
Mopidy (testé)
Installer Mopidy
- Installer libspotify : http://aur.archlinux.org/packages.php?ID=33594 et libspotify-12.1.51-Linux-armv5-release.tar.gz.
# diff -Nu libspotify/PKGBUILD libspotify.new/PKGBUILD --- libspotify/PKGBUILD 2012-07-18 15:55:00.000000000 +0200 +++ libspotify.new/PKGBUILD 2012-08-02 14:41:16.438661001 +0200 @@ -7,17 +7,17 @@ url="https://developer.spotify.com/technologies/libspotify/" license=('custom') depends=('glibc') -source=(http://developer.spotify.com/download/libspotify/libspotify-${pkgver}-Linux-${CARCH}-release.tar.gz) +source=(libspotify-12.1.51-Linux-armv5-release.tar.gz) -md5sums=('04735b890da0b1fc7f1f14e68a5293de') -sha256sums=('941ab4ba10bcd6ec4e96127afd095a39e11bc955de0882734c97e4f588b155ae') +#md5sums=('04735b890da0b1fc7f1f14e68a5293de') +sha256sums=('4d96efcb1423864683917f40fb4df481491250a76cb29be3a235b3732a64fefc') if [ "$CARCH" == "x86_64" ]; then md5sums=('83efddcc195d6ff12b24c97c767a5e45') sha256sums=('43a14e0732ba6ae30078fac105d0e2998d04d5f5c396a4968386bc4e22491058') fi build() { - cd "$srcdir/$pkgname-$pkgver-Linux-$CARCH-release" + cd "$srcdir/$pkgname-$pkgver-Linux-armv5-release" # Don't do stupid things from a Makefile msg2 "Patching Makefile..." @@ -25,7 +25,7 @@ } package() { - cd "$srcdir/$pkgname-$pkgver-Linux-$CARCH-release" + cd "$srcdir/$pkgname-$pkgver-Linux-armv5-release" make prefix="$pkgdir/usr" install
- Installer pyspotify-git : http://aur.archlinux.org/packages.php?ID=44025.
# diff -Nu pyspotify-git/PKGBUILD pyspotify-git.new/PKGBUILD --- pyspotify-git/PKGBUILD 2012-06-13 10:52:41.000000000 +0200 +++ pyspotify-git.new/PKGBUILD 2012-08-02 14:22:39.348661000 +0200 @@ -1,7 +1,7 @@ # Maintainer: Rickard Nilsson <rickard.nilsson@telia.com> pkgname=pyspotify-git -pkgver=20120613 +pkgver=20120802 pkgrel=1 pkgdesc="A Python Spotify library" arch=(any)
- Installer python2-pykka : http://aur.archlinux.org/packages.php?ID=47936.
- Installer mopidy-git : http://aur.archlinux.org/packages.php?ID=44026.
# diff -Nu mopidy-git/PKGBUILD mopidy-git.new/PKGBUILD --- mopidy-git/PKGBUILD 2012-02-19 19:16:57.000000000 +0100 +++ mopidy-git.new/PKGBUILD 2012-08-02 14:18:18.308661002 +0200 @@ -1,7 +1,7 @@ # Maintainer: Rickard Nilsson <rickard.nilsson@telia.com> pkgname=mopidy-git -pkgver=20120219 +pkgver=20120802 pkgrel=1 pkgdesc="A music server which can play music from Spotify" arch=(any)
- La config (320 kbps)
MPD_SERVER_HOSTNAME = u'::' SPOTIFY_USERNAME = u'login' SPOTIFY_PASSWORD = u'mot_de_passe' SPOTIFY_BITRATE = 320
- On peut lancer mopidy au démarrage : éditer le fichier
/etc/conf.d/mopidy
# The user that mopidy should run as. MOPIDY_USER="root"
et ajouter
modpidy
dans la ligneDAEMONS=(…)
du fichier/etc/rc.conf
.- Si le swapfile n'est pas activé (pour que le disque spindown fonctionne bien), il n'y a pas assez de RAM (total 128Mb) pour lancer LMS et Mopidy en même temps.
Clients pour Mopidy
- gmpc : il gère “Playlists” et “Recherche”. Ce sont les essentiels et ça marche bien.
- Sur un téléphone/tablette android. MPDroid version v0.7 est parfait : il gère “Artistes” et “Albums” des mes playlists. Il gère aussi “Playlists”. Il a la fonction “Recherche” par Artistes ou Albums
MiniDLNA
- En plus de servir les fichiers de musique, il peut fournir des photos et vidéos. Voir le wiki. Installer le package minidlna. Définir
media_dir
et éventuellement donner un nomfriendly_name
dans/etc/minidlna.conf
. Laisser les autres lignes par défaut.... media_dir=A,/archives/music media_dir=P,/archives/Photos media_dir=V,/archives/Videos ...
- Le package minidlna de ArchLinux utilise par défaut user
nobody
pour tourner minidlna. On peut le changer dans/etc/minidlna.conf
. Mais cette modification éventuelle n'a pas d'effet si on lance minidlna par systemd. En fait,/usr/lib/systemd/system/minidlna.service
contient une ligne qui définit ce user. Pour faire simple, garder ce usernobody
et# mkdir /var/{cache,log}/minidlna # chown nobody:nobody /var/{cache,log}/minidlna # systemctl enable minidlna.service # systemctl start minidlna Pour recréer manuellement la base de données : # systemctl stop minidlna # minidlnad -u nobody -R Attendre (utiliser top ou htop pour voir)... et ensuite : # killall minidlnad # systemctl start minidlna
archlinux/mpd_goflex_home.txt · Dernière modification : 2017/08/21 12:43 de 127.0.0.1