Outils pour utilisateurs

Outils du site


Panneau latéral

serveur-son

Installer un serveur de son sur RaspberryPi2

Ce tuto a pour but de garder en mémoire l'installation d'un serveur de son sur RaspberryPi2 doté d'un DAC branché sur le GPIO, modèle ISabre Dac ES9023. On activera les drivers nécessaires au fonctionnement du DAC, le serveur de musique MPD, le serveur de son PulseAudio et on essayera de faire marcher avec ça le déport des sorties son d'autres ordis du réseau local vers le Raspi2 (ceci permet en effet de profiter du son sur l'ampli depuis n'importe quel autre ordinateur, le Raspi2 reccupérant le flux depuis le réseau).

Installation de Debian Jessie sur le Rasp

J'ai choisi d'installer une debian minimale sur le Rasp. Ceci se fait avec ce petit script bien pratique : raspbian-ua-netinstall.

Il faut d'abord télécharger la dernière version en .img.xz sur cette page. Ensuite on va suivre ces instructions :

xzcat /path/to/raspbian-ua-netinst-<latest-version-number>.img.xz > /dev/sdX
sync

Ensuite on peut ajouter les paquets que l'on veut installer au départ en éditant le fichier installer-config.txt.

preset=server
packages=vim,alsa-base,bash-completion,htop,keyboard-configuration,raspi-config,nfs-common,pulseaudio,pulseaudio-esound-compat,pulseaudio-module-lirc,pulseaudio-module-zeroconf,lame,faad,gstreamer1.0-alsa,gstreamer1.0-pulseaudio,gstreamer1.0-plugins-base,gstreamer1.0-plugins-bad,gstreamer1.0-plugins-good,gstreamer1.0-plugins-ugly,rng-tools,mpd,mpc,psmisc,bzip2,unzip,gzip
mirror=http://mirrordirector.raspbian.org/raspbian/
release=jessie
hostname=cynips
domainname=
rootpw=xxxxxxxxxx
cdebootstrap_cmdline=
bootsize=+128M # /boot partition size in megabytes, provide it in the form '+<number>M' (without quotes)
rootsize=     # / partition size in megabytes, provide it in the form '+<number>M' (without quotes), leave empty to use all free space
timeserver=time.nist.gov
cmdline="dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 elevator=deadline"
rootfstype=ext4
rootfs_mkfs_options=
rootfs_install_mount_options='noatime,data=writeback,nobarrier,noinit_itable'
rootfs_mount_options='errors=remount-ro,noatime'

On insère la carte flashée dans le Rasp et tout est automatique par la suite.

Après l'install et le reboot on se connecte en ssh en utilisant le compte root et le mot de passe raspbian. On change ce mot de passe après la première connection avec la commande passwd puis on configure la langue et le clavier avec dpkg-reconfigure locales, dpkg-reconfigure tzdata, dpkg-reconfigure keyboard-configuration. On peut ensuite lancer ces commandes pour configurer les utilisateurs, le son et le client web pour mpd :

echo -e "arm_freq=1000\ncore_freq=500\nsdram_freq=500\nover_voltage=2\ngpu_mem=16\ndtoverlay=hifiberry-dac\ndtoverlay=lirc-rpi\ndtparam=i2c_arm=on\ndtparam=i2s=on\ndtparam=spi=on" >> /boot/config.txt
sed -i 's/snd-bcm2835//g' /etc/modules
echo "bcm2708-rng" >> /etc/modules
adduser salon
addgroup -gid 1010 maison
adduser salon audio
adduser salon pulse
adduser salon pulse-access
adduser salon maison
mkdir -p /home/salon/.mpd/playlists
chown -R /home/salon/.mpd
chmod -R 755 /home/salon/.mpd
mkdir /home/salon/musique
mkdir /home/salon/data
echo "sirex:/media/musique /home/salon/musique  nfs defaults   0   0" >> /etc/fstab
echo "sirex:/media/data /home/salon/data  nfs defaults   0   0" >> /etc/fstab
wget www.ympd.org/downloads/ympd-1.2.3-armhf.tar.bz2 -O /home/salon/ympd.tar.bz2
tar -xvf /home/salon/ympd.tar.bz2
rm /home/salon/ympd.tar.bz2
reboot

Configuration de MPD

MPD utilise un fichier de conf qu'il faut modifier pour que MPD s'execute en temps que l'utilisateur que l'on désire et qu'il utilise les bonnes sources d'entrée et de sortie pour le son. Il faut aussi lui donner les bons chemins vers les répertoires de musique et des configurations.

Voici le fichier de conf utilisé (/etc/mpd.conf) :

mpd.conf
music_directory         "/home/salon/musique/"
playlist_directory              "/home/salon/.mpd/playlists"
db_file                 "/home/salon/.mpd/tag_cache"
log_file                        "/home/salon/.mpd/mpd.log"
pid_file                        "/home/salon/.mpd/pid"
state_file                      "/home/salon/.mpd/state"
sticker_file                   "/home/salon/.mpd/sticker.sql"
user                            "salon"
bind_to_address         "127.0.0.1"
bind_to_address         "192.168.2.3"
port                            "6600"
auto_update    "yes"
follow_outside_symlinks "yes"
follow_inside_symlinks          "yes"
zeroconf_enabled                "yes"
zeroconf_name                   "Musique Cynips"
 
#input {
#    plugin "cdio_paranoia"
##cdda://sr0
#}
 
#input {
#        plugin "curl"
##       proxy "http://192.168.178.3:8080"
##       proxy "proxy.isp.com:8080"
##       proxy_user "user"
##       proxy_password "password"
#}
 
audio_output {
       type            "alsa"
       name            "Dac project"
       device          "hw:0,0"        # optional
#      format          "44100:16:2"    # optional
#      mixer_device    "default"       # optional
#      mixer_control   "PCM"           # optional
#      mixer_index     "0"             # optional
#      dop     "no"
}
 
#audio_output {
#        type            "pulse"
#        name            "My Pulse Output"
##       server          "localhost"             # optional
#}
 
mixer_type                      "software"
volume_normalization            "yes"
audio_buffer_size              "8192"
filesystem_charset              "UTF-8"
id3v1_encoding                  "UTF-8"

Mise à jour de la base de donnée de MPD avec nautilus

Le navigateur de fichier Nautilus permet d'utiliser des scripts sur les fichiers et répertoires sélectionnés. Pour cela, il faut mettre les scripts dans /home/user/.local/share/nautilus/scripts. Lorsque l'on ajoute un nouveau répertoire avec de la musique ou qu'on modifie les fichiers à l'interieur d'un répertoire, la base de donnée de MPD n'est pas à jour et on ne peut pas écouter de suite ces fichiers. Il faut donc mettre à jour la base et pour éviter de tout mettre à jour via le client (car ça peut être long), on crée un script nautilus pour y mettre :

update-mpd.sh
#!/bin/bash
rootdirectories="/home/pec/Musique/ /media/data/"
OLDIFS=$IFS
IFS=$'\n'
 
for file in `echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"`; do
  IFS=$OLDIFS
  parent=`dirname "${file}"`
 
  for dir in $(echo $rootdirectories); do
    file=`echo "${file}" | sed "s|$dir||"`
    parent=`echo "${parent}" | sed "s|$dir||"`
  done
 
  if [[ -n $(ssh pec@cynips -C "mpc ls \"$file\"" 2>&1 | grep "error: Not found") ]]; then
    nom=$parent
  else
    nom=$file
  fi
 
  ssh pec@cynips -C "mpc update \"${nom}\""
  zenity --notification --text "Mise à jour de $nom sur MPD" &
done
serveur-son.txt · Dernière modification: 2015/12/28 11:25 (modification externe)