Volumio with LedFx !

HI,
I paste my notes : (in French but it’s Linux)

  1. Le récapitulatif de ta configuration gagnante
    Pour que tu puisses la retrouver si jamais tu dois réinstaller un jour :

Source : Spotify via Volumio envoyant du FLOAT_LE dans le Loopback.

Captation : FFmpeg qui “écoute” sur plughw:1,1 et convertit en pcm_s16le.

Sortie : Ta carte Intel sur plughw:0,0.

Visuel : LedFx branché sur sysdefault pour ne pas bloquer le matériel.

  1. Le script “Propre” pour ton démarrage
    Assure-toi que ton fichier /home/volumio/ledfx-bridge.sh ressemble à ça pour être tranquille au prochain reboot :

#!/bin/bash

On attend que Volumio et Spotify soient bien lancés (20 sec)

sleep 20

On nettoie les restes éventuels

pkill -9 ffmpeg

Le pont magique

ffmpeg -f alsa -i plughw:1,1 -acodec pcm_s16le -ar 44100 -f alsa plughw:0,0 > /dev/null 2>&1 &


  1. Petit conseil d’ami (La charge CPU)
    Ton Pentium D est un guerrier, mais FFmpeg + LedFx + Spotify, ça demande du souffle. Si tu remarques des micro-coupures dans le son après quelques heures :

Réduis un peu la fréquence de rafraîchissement (FPS) dans les réglages de LedFx.

Évite de monter le volume Spotify à 100% dans l’appli si tu as mis un boost dans FFmpeg (pour éviter la saturation numérique).

C’est la touche finale pour transformer ton PC en une véritable “station multimédia” autonome. On va créer un service système. C’est beaucoup plus propre et fiable qu’une simple tâche Cron, car si le pont plante pour une raison X ou Y, le système le relancera automatiquement.

Voici la marche à suivre :

  1. Créer le fichier de service
    Copie et colle cette commande pour créer le fichier de configuration du service :
    sudo nano /etc/systemd/system/ledfx-bridge.service

  2. Configurer le service
    Colle le contenu suivant à l’intérieur. Ce script attend que le réseau et le son soient prêts avant de lancer ton pont :

[Unit]
Description=Pont Audio FFmpeg pour LedFx
After=network.target sound.target

[Service]
Type=simple
User=volumio
ExecStartPre=/bin/sleep 15
ExecStart=/usr/bin/ffmpeg -f alsa -i plughw:1,1 -acodec pcm_s16le -ar 44100 -f alsa plughw:0,0
Restart=always
RestartSec=5
StandardOutput=null
StandardError=null

[Install]
WantedBy=multi-user.target

  1. Activer et lancer le service
    Il ne reste plus qu’à dire au système de prendre en compte ce nouveau service :

Recharge la liste des services :
sudo systemctl daemon-reload

Active le lancement automatique au démarrage :
sudo systemctl enable ledfx-bridge.service

Lance-le immédiatement (sans redémarrer) :
sudo systemctl start ledfx-bridge.service

  1. Comment vérifier que tout va bien ?
    À tout moment, tu peux vérifier si ton pont tourne avec cette commande :
    systemctl status ledfx-bridge.service

Si tu vois du vert avec écrit active (running), c’est que ton Pentium D fait son travail de traducteur dans l’ombre !


Maintenant que nous avons créé un service systemd (la méthode moderne et propre), ton fichier rc.local contient des doublons qui pourraient créer des conflits.

  1. Pourquoi il faut le nettoyer ?
    Actuellement, ton rc.local essaie de lancer /home/volumio/ledfx-bridge.sh. Si le nouveau service ledfx-bridge.service démarre en même temps, ils vont se battre pour la carte son, et tu auras à nouveau l’erreur “Device or resource busy”.

  2. Ce qu’il faut faire
    On va garder la vérification de LedFx (si elle te sert toujours), mais on va supprimer la ligne du pont.

Ouvre le fichier :
sudo nano /etc/rc.local

Supprime (ou mets un # devant) la ligne suivante : sudo -u volumio /home/volumio/ledfx-bridge.sh > /dev/null 2>&1 &

  1. Les avantages de cette méthode
    En passant par le service /etc/systemd/system/ledfx-bridge.service au lieu de rc.local :

Surveillance : Si FFmpeg plante, le système le relance.

Ordre : Le service attend que le son (sound.target) soit prêt avant de se lancer.

Propreté : Tu peux l’arrêter ou le relancer proprement avec sudo systemctl stop ou restart.

  1. Le fichier /home/volumio/ledfx-bridge.sh
    Tu peux garder le fichier sur ton disque (ça ne mange pas de pain), mais il n’est plus “l’acteur principal”.
    C’est maintenant la commande inscrite dans le service (ExecStart) qui fait tout le travail.