Serveur de musique Mopidy - Installation sur Raspberry Pi

mopidy est un serveur audio léger et modulaire. Ce document décrit l'installation et l'utilisation du serveur mopidy sur un Raspberry Pi

Références

Sommaire


1 - Préalable

1.1 - Terminologie

1.2 - Système de base

On suppose que l'installation s'effectue sur une carte Raspberry Pi 4 équipée de la distribution raspbian Debian 11 à jour

$ sudo aptitude update && sudo aptitude upgrade -y

$ cat /etc/issue
Raspbian GNU/Linux 11 \n \l

$ cat /etc/debian_version
11.1

$ uname -a
Linux raspberrypi 5.10.63-v7l+ #1459 SMP Wed Oct 6 16:41:57 BST 2021 armv7l GNU/Linux
$ speaker-test -c2 -twav
$ ip route
default via 192.168.0.1 dev wlan0
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.20
(PC_client) $ ping 192.168.0.20

2 - Installation

2.1 - mopidy

Mopidy est disponible dans les dépôts Debian, toutefois, afin de profiter des dernières versions, l'installation est effectuée à partir du dépôt mopidy

$ wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
$ sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/buster.list
$ sudo aptitude update
$ sudo aptitude install mopidy
Mopidy-HTTP = un serveur http qui permet de contrôler mopidy
Mopidy-File = un lecteur audio à partir de fichiers disponibles localement
Mopidy-Stream = un lecteur de flux audio à partir d'URI définis dans une playlist
Mopidy-M3U = une extension pour lire et écrire des playlists au format M3U
Mopidy-SoftwareMixer =

2.2 - gstreamer

$ mopidy deps
Executable: /usr/bin/mopidy
Platform: Linux-5.4.72-v7l+-armv7l-with-debian-10.6
Python: CPython 3.7.3 from /usr/lib/python3.7
Mopidy: 3.0.2 from /usr/lib/python3/dist-packages
GStreamer: 1.14.4.0 from /usr/lib/python3/dist-packages/gi
Detailed information:
Python wrapper: python-gi 3.30.4
Relevant elements:
Found:
uridecodebin
souphttpsrc
appsrc
alsasink
.....
Not found:
flump3dec
mad

L'absence des codes flump3dec et mad ne semble pas poser de problèmes .....

$ gst-launch-1.0 audiotestsrc ! autoaudiosink
$ gst-launch-1.0 audiotestsrc ! audioresample ! autoaudiosink
$ gst-launch-1.0 audiotestsrc ! audioconvert ! audioresample ! autoaudiosiknk

Dans le cas présent, la source audio est alsa et autoaudiosink peut-être remplacé par alsasink

$ gst-launch-1.0 audiotestsrc ! alsasink

3 - Commandes

3.1 - Utilisation en mode application utilisateur

$ mopidy 

Si le message d'erreur

ERROR    2020-11-23 00:22:05,134 [2206:MainThread] mopidy.commands
Frontend (HttpFrontend) initialization error: HTTP server startup failed: [Errno 98] Address already in use

s'affiche, il est probable qu'une autre instance de mopidy ait déjà été lancé, ce que l'on peut vérifier avec

$ ps -C mopidy
PID TTY TIME CMD
2117 pts/1 00:00:01 mopidy

Dans ce cas, stopper l'instance en cours avec l'une des commandes suivantes

$ Ctrl C 
$ pkill mopidy
$ kill 2717
$ lsof -i:6680
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mopidy 3001 pi 7u IPv4 29741 0t0 TCP localhost:6680 (LISTEN)
....

3.2 - Utilisation en mode service

mopidy peut-être utilisé comme service au lieu de programme utilisateur. Les commandes deviennent

$ sudo systemctl start mopidy
$ sudo systemctl stop mopidy
$ sudo systemctl enable mopidy
$ sudo mopidyctl deps
$ sudo mopidyctl local scan
$ sudo lsof -i:6680
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mopidy 684 mopidy 7u IPv4 12268 0t0 TCP 192.168.0.20:6680 (LISTEN)
mopidy 684 mopidy 15u IPv4 11246 0t0 TCP 192.168.0.20:6680->192.168.0.18:57980 (ESTABLISHED)