Archives mensuelles : septembre 2011

Configuration mpd sur debian pour écoute sur iphone

Objectif : Pouvoir écouter sur mon iPhone 3G la musique stockée sur mon serveur linux, sans devoir passer par l’ignoble iTunes, et sans dupliquer les données.
La solution existe, il s’agit de mpd (music player daemon) pour la partie serveur, et MPoD pour la partie cliente.
L’installation sur une debian squeeze et le manque de doc m’ont incité à partager cette expérience.
Configuration validée:

  • iPhone 3G
  • iOS 4
  • MPoD 1.6
  • Debian Squeeze amd64
  • mpd 0.15.12
Avertissement

Ces manipulations ont été réalisées sur une squeeze installée originellement il y a plus de 7 ans, il manque donc peut-être certaines opérations. Afin de bien montrer que ce n’est pas parfait, toutes les opérations seront réalisées en tant que root 😉

Recompilation mpd

La version debian de mpod n’inclut pas le support lame, il faut donc recompiler le paquet.
Tout d’abord, activer le dépôt Debian Multimédia comme indiqué ici
Installer lame

# apt-get install libmp3lame
# apt-get install build-essentials
# cd /usr/local/src/

Télécharger les sources du paquet, et installer les dépendances nécessaires

# apt-get source mpd
# apt-get build-dep mpd

Se rendre dans le répertoire, et activer le support lame

# cd mpd-0.15.12/
# vi debian/rules

Sur la ligne DEB_CONFIGURE_USER_FLAGS, remplacer –disable-lame par –enable-lame
Puis lancer la compilation

# dpkg-buildpackage

Une fois terminé, remonter au répertoire parent puis installer le fichier deb ainsi créé

# dpkg -i mpd_0.15.12-1.1_amd64.deb
Configuration de mpd

Editer le fichier /etc/mpd.conf et définir les paramètres suivants:

music_directory         "/mnt/data/musique/"
bind_to_address         "0.0.0.0"
audio_output {
        type            "httpd"
        name            "My HTTP Stream"
        encoder         "lame"          # optional, vorbis or lame
        port            "8000" 
#       quality         "5.0"                   # do not define if bitrate is defined
        bitrate         "128"                   # do not define if quality is defined
        format          "44100:16:1"
}

Enregistrer et démarrer le service mpd

La partie iPhone

Installer MPoD
Aller dans les réglages de l’application et ajouter manuellement un serveur:

  • Connection mode: On the go
  • Serveur: IP/nom du serveur
  • Port: 6600
  • Stream: http://(serveur):8000

Une fois connecté (Status: Connected), retourner dans le menu préférences.
Sélectionner « Update database » pour demander à mpd de lister les fichiers disponibles
Vérifier dans la partie « Outputs » que « My HTTP Stream » soit bien sélectionné

Et si ça ne fonctionne pas

Quelques pistes…

  • Vérifier que mpd fonctionne, en utilisant un autre client que l’iPhone
  • Essayer d’écouter le flux http://(serveur):8000 avec vlc ou un navigateur web
  • Vérifier les connexions réseaux, en lançant la commande
# watch -n 1 "netstat -apn | grep /mpd"
tcp        0      0 0.0.0.0:6600            0.0.0.0:*               LISTEN      14046/mpd
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      14046/mpd
tcp        0  15334 192.168.3.9:8000        192.168.3.64:49954      ESTABLISHED 14046/mpd

On voit ici:

  • Que mdp fonctionne bien et écoute bien sur le port 6600 (le service est lancé)
  • Que mdp écoute sur le port 8000 (uniquement lorsqu’une lecture est en cours)
  • Que l’iphone est connecté sur le port 8000 et « reçoit » le flux audio
Bonus

Profitez maintenand de MPoD, qui a en plus la bonne idée d’aller chercher tout seul les pochettes chez Amazon

ben quoi ?