GMediaRender sur Raspberry Pi pour lire de la musique d’un serveur DLNA, UPnP, Open Home

GMediaRender sur Raspberry Pi pour lire de la musique d’un serveur DLNA, UPnP, Open Home

Dans cet article de la série, , j’explique simplement comment installer une version compatible DLNA, UPnP et « Open Home » de GMediaRender, fondée sur gmrender-resurrect. Pour en savoir plus sur le fonctionnement d’un serveur DLNA, d’un serveur UPnP et du protocole « Open Home », il vous faudra lire les autres articles de cette série 😯 !

Installer gstreamer 1.0 et gmrender-resurrect UPnP renderer

Selon « Playing music on a Raspberry Pi using UPnP and DLNA (v3) » avec des modifications pour tenir compte que j’ai une installation plus récente, avec en particulier Raspbian Stretch et pas Wheezy.

Pour installer gstreamer 1.0, on copie tout ce qui suit (les deux lignes) et on le colle dans le terminal de notre Pi :

wget -O - http://www.chiark.greenend.org.uk/~christi/debian/christi@coraline.org.gpg.key \

| sudo apt-key add -

On doit avoir un message « OK ».

Ensuite on crée un nouveau fichier /etc/apt/sources.list.d/upnprender.list  pour y ajouter l’adresse du dépôt de Christi Scarborough pour gstreamer 1.0 :

cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/upnprender.list

Pour comprendre (un peu) ce qu’est une sources list, voir cet article, en français.

Dans le nouveau fichier on supprime le contenu de raspi.list et on ajoute la ligne suivante. Les instructions originelles disent de terminer par wheezy main. Ce serait juste si on utilisait encore la distribution Wheezy de Raspbian. Mais depuis 2013 elle a été remplacée par Jessie puis Stretch. Comme j’utilise Stretch, je termine par stretch main

deb http://www.chiark.greenend.org.uk/~christi/debian/ stretch main

Puis on met à jour la liste des paquets avant d’installer gmrender-resurrect

apt-get update

Il y a une erreur liée au fait qu’il n’y a pas de version stretch dans le dépôt ‘http://www.chiark.greenend.org.uk/~christi/debian. Mais l’erreur ne paraît pas majeure…

Je poursuis l’installation de gmrender-resurrect en copiant collant l’ensemble des 4 lignes sur une seule ligne du terminal du Pi :

apt-get install libupnp-dev libgstreamer1.0-dev \

gstreamer1.0-plugins-base gstreamer1.0-plugins-good \

gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \

gstreamer1.0-alsa

Installation de gmediarender

Installer git avec

apt-get install git

On exécute ensuite les commandes suivantes, les unes après les autres :

cd

git clone https://github.com/hzeller/gmrender-resurrect.git

cd gmrender-resurrect

apt-get install autoconf

./autogen.sh

./configure

make install

Ca place gmediarender dans /usr/local/bin  et des icones dans /usr/local/share/gmediarender

Et maintenant on peut ponctuellement lancer le renderer, en lui donnant le nom qu’on veut (l’option –f dit quel nom on veut donner)

./src/gmediarender -f "Pi Bureau"

Ca fonctionne correctement. On fait CTRL C pour en sortir.

Faire fonctionner gmediarender comme un service

Pour que gmediarender démarre comme un service, il faut copier le contenu de  scripts /root/gmrender-resurrect/init.d/gmediarenderer dans /etc/init.d (ou home/votre-nom-d’utilisateur/gmrender-resurrect/init.d/gmediarenderer si vous n’êtes pas connecté en root au Pi)

cp scripts/init.d/gmediarenderer /etc/init.d

On édite /etc/init.d/gmediarender  pour définir le nom du « renderer » et corriger si nécessaire l’utilisateur :

DAEMON_USER="al:audio"

UPNP_DEVICE_NAME="Pi Bureau"

Puis on utilise update-rc.d pour que ces informations soient placées correctement dans le Pi.

update-rc.d gmediarenderer defaults

On redémarre le Pi (reboot  ou shutdown -r now ). gmediarender démarre. On peut le vérifier avec

ps aux|grep gmedia

Cette commande renvoit

552 11.9  6.9 317764 66444 ?        Ssl  10:01   0:02 /usr/local/bin/gmediarender -f Pi Bureau -d -u 7aff11df49801835fb41c5ea6c54bfa0 --gstout-audiosink=alsasink --gstout-audiodevice=sysdefault --gstout-initial-volume-db=-10

root       657  0.0  0.0   4372   560 pts/0    S+   10:02   0:00 grep --color=auto gmedia

Ca fonctionne et le “renderer” s’appelle Pi Bureau.

Sur mon ordinateur Windows, je peux maintenant destiner de la musique à « Pi Bureau » en cliquant à droite sur une liste de lecture ou un morceau dans Windows Media Player.

gMediaRender sur Raspberry Pi

Et maintenant ?

Dans les prochains articles de cette série , j’expliquerai quels « clients » j’ai choisi pour faire fonctionner mon serveur DLNA et jouer de la musique du serveur. J’ajouterai également un serveur BubbleUPnP au Pi afin de disposer d’un partage des listes de lecture et d’un fonctionnement aux normes « Open Home ».

Raspberry Pi : créer un serveur de musique miniDLNA

Raspberry Pi : créer un serveur de musique miniDLNA

Dans le premier article de cette série, , j’ai expliqué comment créer un serveur utilisant MPD. Mais je n’étais pas vraiment satisfaite. Depuis j’ai acheté un Raspberry Pi 3 et je me suis dit qu’il était temps de passer à un niveau supérieur.

Dans cet article, j’explique comment créer un serveur de musique miniDLNA qui va gérer toute ma musique numérique et la rendre accessible via des appareils Android (ou Apple). Dans un prochain article de cette même série, , j’expliquerai comment y ajouter un serveur UPnP.

De quoi j’ai besoin ?

  • Un raspberry Pi 3  ;
  • Un cable ethernet (on peut opter pour le wifi mais ce n’est pas ce que j’ai choisi) ;
  • un disque dur USB ;
  • Une alimentation USB pour le Raspberry Pi et le disque dur.

Préparer le Raspberry Pi (Raspbian Stretch, IP fixe)

J’ai installé Raspbian Stretch Lite (sans la partie graphique) en suivant les instructions de mon article Mise en service d’un Raspberry Pi.

Le « hostname » de mon Pi est : AlMusicServer. C’est le nom que j’utilise pour me connecter.

J’ai réglé ce Pi sur l’adresse IP fixe (connexion ethernet) 198.168.1.102 selon les instructions de mon article Raspberry Pi : connexion internet en wifi et/ou IP fixe.

Régler la sortie audio

Pour le réglage et les tests, je me suis inspirée des articles suivants :

ALSA est le système Linux de gestion du son. Le paquet alsa-utils est pré-installé dans les distributions Raspbian et contient des commandes utiles pour tester et régler le son de notre Raspberry Pi.

J’ai connecté mon Pi via le connecteur Jack 3.5mm. Ce n’est pas la meilleure solution pour une bonne qualité audio. On a intérêt à utiliser au moins une carte son USB, voire un DAC Hifi. Je verrai ça ultérieurement.

Dans le terminal, s’assurer que le mode audio renvoie bien au connecteur jack (et pas HDMI) avec

amixer cset numid=3 1

Pour tester le son

!!! Attention à bien enfoncer le connecteur Jack, sinon il y a du bruit dans les HP et rien ne fonctionne !!!

speaker-test

Ca fait un bruit (léger) dans les haut parleurs. Il faut régler le volume fort pour l’entendre.

aplay /usr/share/sounds/alsa/Noise.wav

Fait aussi du bruit, qu’on entend que si le volume est très fort

Pour voir les périphériques audios et leurs pilotes

aplay –l  liste tous les périphériques audio présents

lsmod  permet de voir quel pilote est associé au(x) périphérique(s) audio.

Pour régler le son

amixer controls  renvoie

numid=3,iface=MIXER,name='PCM Playback Route'

numid=2,iface=MIXER,name='PCM Playback Switch'

numid=1,iface=MIXER,name='PCM Playback Volume'

numid=5,iface=PCM,name='IEC958 Playback Con Mask'

numid=4,iface=PCM,name='IEC958 Playback Default'

Playback switch règle le son sur “ON” ou « OFF ».  Réglé sur On, le son sort des haut parleur au volume défini pat numid=1 (playback volume). Réglé sur Off, les haut pareleurs sont muets quel que soit le réglage de volume.

amixer cget numid=1  doit donc nous indiquer quel est le réglage du volume. Ca me dit :

; type=INTEGER,access=rw---R--,values=1,min=-10239,max=400,step=0

  : values=-2000

  | dBscale-min=-102.39dB,step=0.01dB,mute=1

Pour régler le son au maximum, je tape (noter qu’au lieu de cget j’utilise cset) :

amixer cset numid=1 100%

Maintenant aplay /usr/share/sounds/alsa/Noise.wav  émet maintenant un son que j’entends mieux.

Et pour régler le volume sur 100% et la sortie sur ON et qu’elle soit utilisée à chaque redémarrage du Pi

amixer cset numid=1 100%

amixer cset numid=2 on

alsactl store

Mon son fonctionne.

Si j’utilisais une carte son USB (on en trouve à des prix dérisoires), il faudrait que j’identifie son microprocesseur selon https://learn.adafruit.com/usb-audio-cards-with-a-raspberry-pi/figure-out-your-chipset. Ensuite selon le microprocesseur utilisé, je suivrais les instructions d’Adafruit dans le tutoriel USB Audio Cards with a Raspberry Pi.

Ajouter un disque dur USB

Connecter un disque dur USB puis suivre les instructions de mon article Monter un disque dur externe partagé sur un Raspberry Pi.

Ma musique est dans /media/iomega/MULTIMEDIA/musique.

Installer un serveur miniDLNA

DLNA ?

Cet article, en français, explique plutôt bien ce qu’est le DLNA. Pour résumer, je dirai juste Le DLNA (Digital Living Network Alliance) a été créé par Sony et d’autres entreprises pour définir des pratiques permettant le partage de médias digitaux entre appareils électroniques. En 2015, selon Wikipedia, plus de 200 entreprises participaient à cette alliance.

Installation de mini DLNA sur notre Raspberry Pi 3

J’ai suivi les instructions de Raspberry Pi Media Server – MiniDLNA., avec une correction pour que la base de données se mette à jour correctement lorsque je modifie les fichiers de musique (source : ce sujet sur le forum Raspberrypi.org)

apt-get install minidlna

Copier le fichier de configuration pour le conserver avant modification

cp /etc/minidlna.conf /etc/minidlna.OLD

puis modifier /etc/minidlna.conf

Ma musique est dans /media/iomega/MULTIMEDIA/musique suite à l’installation du disque dur. Il ne faut pas mettre directement ce répertoire dans la configuration de miniDLNA car dans ce cas inotify ne fonctionne pas correctement.

On doit laisser un répertoire local (sur la carte SD) et on crée un lien vers la véritable localisation des fichiers de musique ensuite… Comme ça inotify fonctionne, c’est à dire qu’il surveille en permanence si des fichiers sont modifiés et met alors la base de données à jour (si les modifications sont réalisées pendant que miniDLNA fonctionne).

Je modifie donc les lignes suivantes (pour la ligne inotify=yes, j’ai simplement décommenté la ligne) :

media_dir=A,/var/lib/minidlna/music

db_dir=/media/iomega/MULTIMEDIA/

friendly_name= AL Music

inotify=yes

Dans le terminal du Pi, je définis un lien entre /var/lib/minidlna/music et /media/iomega/MULTIMEDIA/musique :

ln -s /media/iomega/MULTIMEDIA/musique /var/lib/minidlna/music

On peut verifier que ça fonctionne en cliquant sur /var/lib/minidlna/music dans filezilla. On est enmené automatiquement sur /media/iomega/MULTIMEDIA/musique

Je démarre le service avec la commande

service minidlna start

Le disque tourne pendant un bout de temps.

Le log est dans /var/log/minidlna.log . Pour savoir en temps réel ce qui se passe, je peux utiliser

service minidlna status

Dans l’explorateur Windows, un clic sur “Réseau » affiche AL Music. Si je clique dessus, j’accède au lien http://192.168.1.102:8200/.

Si j’ai modifié les fichiers pendant l’arrêt de miniDLNA, je redémarre en forcant la reconstruction de la base de données :

service minidlna force-reload

Gestion des utilisateurs

C’est assez bizarre que je ne doive pas définir d’utilisateur et de groupe pour miniDLNA. Mais comme tout semble fonctionner… Si jamais on a un problème, il faudra peut-être s’inspirer de cet article de la documentation Ubuntu.

Lire des radios internet avec MiniDLNA

Dans ce forum, la solution de phile est de créer une playlist contenant les url des radios souhaitées et le sauvegarder en mode .txt avant de le renommer avec une extension .m3u. L’auteur met même une playlist exemple en téléchargement sur dropbox ici.

Ensuite on place le fichier dans le répertoire musique du Pi, /media/iomega/MULTIMEDIA/musique/.

Avec Windows Media Player, si je clique sur « Playlists » dans la bibliothèque DLNA « AL Music », je vois toutes mes listes, y compris la liste que je viens de placer. Mais je ne peux pas la lire. PAr contre, si je lis une radio internet (CTRL U dans Windows Media Player puis lien vers un flux internet, par exemple http://chai5she.cdn.dvmr.fr/bfmbusiness pour BFM), je peux la mettre dans la play list créée et elle apparaît bien dans le contenu de mon Pi (/media/iomega/MULTIMEDIA/musiqueRadio – 2015 12 04 – HCFR.m3u.

C’est sans doute lié au problème d’utilisateur indiqué plus haut… A suivre !

Et maintenant ?

Dans un prochain article de cette même série, , j’expliquerai quelles applications on peut utiliser pour accéder au serveur à partir d’un PC ou d’un appareil mobile présent sur le réseau local. Un autre article expliquera comment ajouter un serveur UPnP à notre Raspberry Pi pour rendre l’utilisation vraiment confortable, voire même accéder à notre musique via internet.

Des colonnes de hauteur égale avec le thème Divi et Flexbox

Des colonnes de hauteur égale avec le thème Divi et Flexbox

Lorsqu’on dispose des contenus en colonnes, on utilise flexbox pour avoir des colonnes de hauteur égale. Sous Divi, on fait la même chose.

Pour l’instant je n’ai pas eu l’occasion d’essayer. Je préfère conserver cet article en mémoire pour une prochaine fois : How to Set Equal Column Heights using Flexbox (article de Divi Space, en anglais).

Et je n’oublie pas l’excellent tutoriel, en anglais également, de CSS-tricks : « A Complete Guide to Flexbox« .

Je mettrai mon article à jour lorsque je réaliserai cette opération avec un thème Divi.

Raspberry Pi : Utilisation de VNC Viewer pour accès graphique d’un PC

Raspberry Pi : Utilisation de VNC Viewer pour accès graphique d’un PC

Cet article date de début 2018. En avril 2020 j’ai écrit un autre article avec une autre solution qui semble mieux adaptée. je vous invite donc à consulter également mon article « Raspberry Pi : accès graphique à distance (VNC)« .

Je connecte mes Raspberry Pi en mode « headless », c’est à dire sans écran, clavier et souris dédiés. Je m’y connecte en SSH à partir de mon PC (Windows). VNC (Virtual Network Computing) permet d’accéder facilement à l’interface graphique du Pi, même à distance. Il permet également d’accéder au Pi en mode cloud, à distance et de manière sécurisée.

Pour ce qui suit, je suis partie de l’article, en anglais, « VNC (Virtual Network Computing) » de www.raspberrypi.org.

Avec Raspbian en mode graphique (pas ‘lite’)

Activer VNC sur le Raspberry Pi (Raspbian Stretch)

En SSH (j’utilise Cygwin, comme je l’explique dans l’article « Mise en service d’un Raspberry Pi »), activer VNC par la commande  raspi-config  puis dans l’option « 5 Interfacing Options », choisir « VNC » puis « Yes ». VNC est maintenant activé.

Sur l’ordinateur distant (windows 10)

Télécharger RealVNC Viewer, (pour moi version Windows, je choisis MSI Installers).

Extraire le fichier zip puis choisir l’exécutable correspondant à ma version (64 bits pour mon PC)

Attention il faut choisir « entire feature will be installed on local hard drive” :

Installation de VNC Viewer sous Windows

Ensuite, on clique sur « Next » puis « Install ».

On lance ensuite VNC Viewer sur le PC. On entre l’adresse IP du Pi, le nom d’utilisateur et le mot de passe correspondant. Et voilà, je dispose de l’interface graphique du Pi sur mon PC, comme si mes écran, clavier et souris étaient connectés au Pi directement !

Accès distant à l'interface graphique d'un Raspberry Pi "headless" sous NC Viewer

Ca fonctionne parfaitement !

Avec Raspbian en mode ‘lite’

Le mode ‘lite’ de Raspbian ne contient pas l’interface graphique. C’est la distribution que j’installe le plus souvent car elle est moins gourmande en espace disque et me convient parfaitement puisque je n’ai jamais accédé au Pi par l’interface graphique. Ca changera peut-être maintenant que j’ai découvert VNC Viewer.

J’active VNC de la même manière que précédemment sur le Raspberry Pi.

Là si je démarre VNC Viewer, j’ai un écran mais noir et je n’ai pas accès au terminal. C’est donc sans intérêt apparemment (voir si dessous quand même !).

Que puis-je faire d’autre avec VNC Viewer et un Raspberry Pi ?

Dans la documentation de VNC Viewer sur l’utilisation avec un Raspberry Pi, je lis que l’on peut :

  • avoir un accès graphique à distance, même sur un Pi avec Raspbian ‘lite’ en utilisant le « virtual desktop ».
  • Se connecter à distance par une connexion « cloud ». C’est une manière sécurisée et gratuite d’avoir un accès à distance à notre Pi.

Pour l’instant je n’ai pas besoin d’un accès à distance et Cygwin me convient parfaitement pour l’accès SSH au terminal d’un Pi sans interface graphique.

Je verrai ces nouvelles fonctionnalités plus tard.

Raspberry Pi, quelle version de Raspbian ?

Raspberry Pi, quelle version de Raspbian ?

Il est souvent utile de savoir quelle version de Raspbian on a sur un Pi. Et évidemment, il est prudent de mettre régulièrement le Raspberry Pi à jour pour disposer des dernières mises à jour de sécurité et des dernières fonctionnalités.

Quelle est la version de Raspbian de mon Pi ?

Sur un Raspberry Pi 3 équipé de la dernière version de Stretch (au 7/1/2018), et après un update et upgrade.

La commande uname -a   renvoie :

Linux AlMusicServer 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l GNU/Linux

AlMusicServer est le « hostname » du Pi.

La commande cat /etc/os-release renvoie un texte beaucoup plus lisible :

PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

J’utilise Raspbian Stretch.

Mettre mon Pi à jour

apt-get update

Cette commande mettra à jour la liste des paquets de Raspbian. Il faut ensuite les installer, ce qui se fait avec la commande :

apt-get dist-upgrade

Cette commande mettra à jour Raspbian ainsi que le « firmware » du Pi. Par contre, elle n’installera pas de nouveaux paquets créés après la première installation de Raspbian.

apt-get clean

supprime les paquets téléchargés afin de nettoyer l’espace disque. Ils ne sont plus utiles puisqu’ils ont été installés.