ReadyMedia (anciennement MiniDLNA)

ReadyMedia (anciennement MiniDLNA) est un serveur DLNA (UPnP) pour Linux, simple d'utilisation.

ReadyMedia permet de partager vos vidéos, votre musique, vos images… entre votre PC et votre console de jeux, votre téléphone portable ou votre télévision (la plupart sont compatibles).

Ce serveur DLNA a la réputation d'être très stable sous Debian et Ubuntu, contrairement à uShare qui peut dysfonctionner lors du passage d'une musique à l'autre, ou à mediatomb qui ne gère pas automatiquement les arborescences.

Sur Ubuntu (variante principale, GNOME), un serveur DLNA/UPnP est déjà installé par défaut : Rygel. On peut accéder à sa configuration depuis GNOME ParamètresPartagePartage de médias.

Installation

Le paquet étant disponible dans les dépôts, il suffit d'installer le paquet minidlna.

Le PC sur lequel vous installez ReadyMedia sera le serveur de fichiers : c'est lui qui les rendra disponibles sur votre réseau local, c'est à dire sur les PC et smartphones connectés à votre box internet. Si vous éteignez ce serveur, les fichiers ne seront plus accessibles.

Pour éviter une consommation d'énergie inutile, mieux vaut donc soit éteindre le serveur hors utilisation, soit avoir un PC à très faible consommation, par exemple un Raspberry Pi.

Utilisation

Principes simplifiés

  1. Installer ReadyMedia sur votre PC, qui doit être relié à votre réseau local (votre box internet).
  2. Configurer l'outil pour définir à quoi le serveur DLNA peut accéder (par exemple votre répertoire de films, ou de musiques).
  3. Le PC doit être allumé et ReadyMedia lancé. Le PC ne doit pas se mettre en veille pendant la diffusion.
  4. Allez sur le périphérique qui doit afficher le film ou la musique. Il doit être relié à votre réseau local (votre box internet).
  5. S'il est compatible DLNA et relié au réseau, il détecte automatiquement le serveur. Une télévision, par exemple, affichera la liste des films du répertoire PC que vous avez indiqué (côté télévision, c'est souvent via le menu "sources" qu'on peut accéder au serveur ReadyMedia / MiniDLNA).
  6. Il reste à lancer le flux multimédia (photos, films, musiques, …) choisi.
  7. Un téléviseur va être normalement le contrôleur de diffusion (il la lance ou l'arrête), mais il peut être nécessaire d'avoir un appareil additionnel (une télécommande) pour certains matériels.
  8. Si l'appareil client (télévision ou autre) n'implémente pas DLNA, il est parfois possible d'y installer une application proposant cette fonctionnalité.

Lancement de l'application

ReadyMedia est installé comme un service et sera lancé automatiquement quand votre ordinateur sera démarré. À priori, vous n'avez donc jamais à utiliser de commandes pour (re)lancer / stopper ce programme (surtout si vous avez laissé l'option de recherche automatique de nouveaux fichiers), cependant si besoin, voici les commandes à utiliser.

Pour redémarrer / arrêter / connâitre l'état de ReadyMedia :

sudo systemctl restart minidlna
sudo systemctl stop minidlna
sudo systemctl status minidlna

Pour reconstruire la base de données :

sudo systemctl restart minidlna

Configuration

Par défaut, ReadyMedia (lorsqu'il a été installé depuis les dépôts) est exécuté automatiquement au démarrage de l'ordinateur en tant que service. L'utilisateur et le groupe par défaut du logiciel sont : minidlna.

Les répertoires situés dans /home/VOUS ne sont pas accessibles par défaut car le paramètre ProtectHome du service a la valeur on. Par contre, ReadyMedia accède naturellement au répertoire /var/lib/minidlna.

Pour pouvoir faire fonctionner ReadyMedia, il faut donc lui donner accès aux ressources souhaitées. Il existe plusieurs méthodes, en voici certaines :

Ajouter ReadyMedia au groupe utilisateur

Cette méthode est déconseillée. Le serveur a ainsi accès à toutes les données de l'utilisateur, ce qui compromet sa sécurité.

Cette opération donne à ReadyMedia accès aux même fichiers que vous. Ceci présente un risque de sécurité : si un pirate prend le contrôle de l'utilisateur minidlna, il accède à toutes vos données.

sudo gpasswd -a minidlna $USER

Puis modifier le fichier de configuration :

sudo nano /etc/minidlna.conf

et insérez la / les ligne(s) du / des répertoire(s) que vous voulez rendre accessible(s). Par exemple :

  • media_dir=/home/VOUS/Musique
  • media_dir=/home/VOUS/Vidéos

VOUS est à remplacer par votre nom d'utilisateur.

Utiliser le répertoire /var/lib/minidlna pour monter le ou les répertoires médias

Cette méthode a l'avantage de ne donner aucun droit additionnel à ReadyMedia, ce qui est plus sûr. Elle utilise le répertoire /var/lib/minidlna (initialement vide), sur lequel ReadyMedia a tous les droits.

Créer un répertoire de montage par répertoire qu'on souhaite partager. Par exemple :

sudo mkdir /var/lib/minidlna/Vidéos

Rien à modifier dans /etc/minidlna.conf.

On monte le répertoire à partager dans le répertoire de montage qu'on vient de créer :

  • Montage ponctuel (sera perdu au redémarrage du PC) :
    sudo mount --bind /home/$USER/Vidéos/ /var/lib/minidlna/Vidéos/
  • Montage permanent en éditant le fichier /etc/fstab
    sudo nano /etc/fstab

    et en ajoutant à la fin une ligne par répertoire à partager – par exemple :

    fstab
    /home/VOUS/Vidéos       /var/lib/minidlna/Vidéos none     nofail,bind         0    0

    VOUS est à remplacer par votre nom d'utilisateur ($USER fonctionne dans un montage ponctuel, pas dans un montage fstab).

ReadyMedia a par défaut les droits sur /var/lib/minidlna. Il ne les a pas sur /media ou /mnt. Si vous faites un montage dans ces répertoires, il faudra donc donner à ReadyMedia des droits additionnels.

Renouvelez cette opération avec d'autres répertoires que vous souhaiteriez partager. Par exemple /home/VOUS/Musiques ou /home/VOUS/Images.

Finalisation

Une fois les chemins à partager définis, et les droits d'accès donnés, vous pouvez redémarrer le service minidlna :

sudo systemctl restart minidlna.service

et tester son bon fonctionnement :

sudo systemctl --no-pager status minidlna.service

→ il ne doit pas y avoir de message d'erreur.

Reste à vérifier côté client (télévision ou autre) que vous accédez bien aux partages (souvent via le menu sources).

Astuces

Dans le fichier /etc/minidlna.conf, la ligne media_dir=/home/VOUS/répertoire_partagé peut avoir une option. La lettre (P pour Photo, V pour Vidéo, ou A pour Audio) limite le type de fichier à afficher. Si le type de fichier n'est pas spécifié, tous les fichiers du répertoire sont listés. Un exemple avec les options :

minidlna.conf
# Path to the directory you want scanned for media files.
 media_dir=A,/home/toto/musique
 media_dir=V,/home/toto/videos

Ces options servent si des types de fichiers différents sont mélangés, sinon elles sont inutiles.

Toujours dans le fichier /etc/minidlna.conf on peut optionnellement personnaliser le nom (friendly_name) qui s'affichera côté client (sur la télévision, par ex.) :

minidlna.conf
friendly_name=Serveur DLNA de Toto

Fichier minidlna.conf

Le contenu original du fichier /etc/minidlna.conf est consultable dans les sources de l'application.

Voir le chapitre suivant pour changer l'utilisateur et le groupe avec lequel est exécuté ReadyMedia.

Selon la quantité de média que vous partagez, leur disponibilité pour vos appareils clients ne sera pas immédiate. On peut facilement croire à tort que seuls quelques premiers dossiers sont partagés, simplement parce que ReadyMedia n'a pas fini de tout analyser.

Autre options

Configuration de l'utilisateur et groupe

Par défaut, ReadyMedia (lorsqu'il a été installé depuis les dépôts) est exécuté automatiquement au démarrage de l'ordinateur comme un service. L'utilisateur et le groupe par défaut utilisés sont : minidlna.

Les répertoires situés dans le répertoire personnel /home/$USER ne sont pas accessibles par défaut car le paramètre ProtectHome du service a la valeur on.

Cela bloque l'accès à vos fichiers de média s'ils sont dans votre /home.
S'ils sont ailleurs, cela les bloquera aussi s'ils ne sont pas accessibles en lecture pour tout le monde.

Il faut donc non seulement définir un ou des répertoires à diffuser dans /etc/minidlna.conf (par exemple avec des lignes comme media_dir=/home/votre_user/videos), mais il faut aussi en autoriser au moins la lecture à l'utilisateur minidlna.

Modifier les droits des fichiers eux-mêmes

Vous pouvez donner l'accès en lecture à tout le monde pour vos fichiers, par exemple :

sudo chmod a+rX /chemin/dossier/vidéos/

A ne jamais faire sur le /home/ dans son ensemble, ce serait un vrai danger en termes de sécurité. Sur un répertoire unique sans données confidentielles, ce peut être plus acceptable. Voir plutôt la méthode suivante avec systemd :

Avec systemd

Pour ne pas modifier le fichier /usr/lib/systemd/system/minidlna.service, on crée un fichier complémentaire pour y changer l'utilisateur, le groupe et autoriser l'accès à /home/$USER.

D'abord créer le répertoire qui contiendra le fichier :

sudo mkdir /etc/systemd/system/minidlna.service.d

ensuite le fichier

sudo nano /etc/systemd/system/minidlna.service.d/run-as-user.conf

et y coller ce contenu:

run-as-user.conf
[Service]
User=mon_user
Group=mon_user
ProtectHome=off
DynamicUser=no

en remplaçant mon_user par son nom d'utilisateur. recharger la configuration de systemd :

 sudo systemctl daemon-reload

et relancer le service :

sudo systemctl restart minidlna.service

Pochettes de films

Pour TV Samsung

Pour afficher la pochette d'un film, créer un fichier JPEG correspondant.

Exemple : mon_film_en_HD.avi avec sa pochette nommée mon_film_en_HD.jpg.

Pour la PS3

Comme pour les TV Samsung, pour afficher la pochette d'un film, créer un fichier JPEG correspondant.

Exemple : mon_film_en_HD.avi avec sa pochette nommée mon_film_en_HD.jpg.

L'image doit être au format 320 x 240 pixels pour un rendu correct.

Il conviendra de convertir le fichier png au format jpg (avec GIMP par exemple) pour que le serveur ReadyMedia les accepte.

Vidéos avec pistes de sous-titre

Certains types de conteneurs vidéo embarquent une piste pour les sous-titres, qui ne s'affichent pas sur l'écran de télé (exemple : fichiers MKV).

Pour bénéficier des sous-titres, il suffit d'extraire cette piste (par exemple avec MKV Extractor GUI ) dans un fichier du même nom que le fichier vidéo (testé avec l'extension .srt), et de le placer dans le même dossier.

Les sous-titres fonctionnent comme testés sur une TV Panasonic TX-PF50G30 mais ne sont pas supportés par la Freebox Revolution (v6) sur le même serveur et le même film.

Problèmes connus

Le PC n'apparaît pas sur la télévision

Si le serveur n'apparaît pas sur le client, il est possible de baisser la valeur de la ligne notify interval, par exemple à 60, c'est a dire qu'il va attendre 60 secondes pour lancer une recherche de media ajouté. Ceci peut régler le problème. Si cela ne fonctionne toujours pas, essayez avec 5 secondes. Exemple de ligne :

notify_interval=60

Configuration du Pare-feu

Si vous utilisez un pare-feu, il faudra le configurer pour que tout fonctionne correctement.

Avec gufw il vous suffit d'ajouter une nouvelle règle pour autoriser le service uPnP (port 8200 dans l'exemple) quand la source est l'adresse IP de vos équipements.

Exemple de mise en application pour un réseau sous Livebox

sudo ufw allow from 192.168.1.0/24 to any port 8200

Matériel client testé

DLNA fonctionne avec du matériel relativement récent. Sa documentation indique généralement sa compatibilité.

La liste suivante n'est pas exhaustive, mais ces périphériques sont compatibles :

  • Décodeur TV UHD86 à travers LiveBox mini 2
  • Décodeur TV UHD87 avec livebox play 3
  • BBox Fibre TV
  • Cambridge Audio Streamer 6
  • Freebox HD
  • Freebox Revolution
  • IPHONE 3G
  • IPAD (divers logiciels dont Airplay)
  • LG DP1B (mise à jour nécessaire : juillet 2011)
  • Lecteur Blu Ray disc3D LG BX580 lecture de tous ce que j'ai pu tester (image video, music, MKV, MP4, MP3 DivX6 H.264/MPEG4 ,MPEG ,JPEG) aucune restriction pour le moment.
  • LiveBox (décodeur TV4)
  • Neuf Box SFR (NB4-MAIN-R3.1.10)
  • Netbox
  • Numericable LaBox (sauf .srt, ou alors via un patch)
  • Orange Liveradio Vintage (poste de radio FM/Wifi webradio + dlna)
  • Onkyo TX-8050 amplificateur / lecteur réseau
  • Onkyo CR-N765 amplificateur / lecteur CD et réseau
  • Oppo BDP-93EU
  • Philips NetTV 40FLH7605H (Play/Pause/FW/RW OK, musique et photos OK, Video sans sous-titres)
  • Samsung Galaxy'S GT-I9000 (Lecture Xvid,Divx,Mkv)
  • Samsung TV LCD LE32D550
  • Samsung TV LCD LE40B651
  • Samsung TV LCD LE40C630
  • Samsung TV LED UE40D5000 et UE46D5700
  • Samsung TV LED UE40JU6400
  • Samsung TV LED Série 6 (UE32C6000)
  • Samsung TV LED Série 6 (UE40H6400)
  • Samsung TV LED Série 6 (UE46ES6300)
  • Samsung TV LED Série 6 (UE50ES6900)
  • Samsung TV LED Série 7 (UE40B7000)
  • Samsung TV LED Série 7 (UE46F7000)
  • Samsung TV LED Série 7 (UE65MU7055)
  • Samsung TV LED 3D UE40C7700
  • Samsung TV LED 3D 40UE6030
  • Samsung Home cinéma HT C5500
  • Sony Bravia kdl (limitations aux formats reconnus par la TV)
  • Sony BDV E370 3D Ready (Home cinema Bluray, DVD, Xvid, Divx, etc)
  • Sony BDP-S370 (MKV, MPEG4, XViD, DiVX5 et VIDEO_TS/MPEG2 Firmware version M03.R.769)
  • Sony Playstation 3, Sony Playstation 4
  • Panasonic TX-P42ST50E
  • Panasonic 58-DX730
  • TELEFUNKEN 41,9" Wide Screen LED DIGI TV(téléviseur 3D LED entrée de gamme)
  • TABBEE
  • XBOX 360 (Différentiation des Vidéos, Musique et Image et lecture du MPEG4)
  • Application Android HouseMedia
  • Awox StriimLINK
  • chaine DENON CEOL
  • Ampli Denon AVR-3313
  • Yamaha R-N602
  • Yamaha WXC-50
  • Google Chromecast (v1)
  • Google Chromecast Audio

home cinema :

  • Samsung HT D5100
  • Samsung HT D7100
  • Samsung HT F5200
  • LG HB806SH

casque VR :

  • Oculus GO

Contributeurs : McPeter, ned.net, bruno, krodelabestiole.