J'utilise Pulseaudio pour partager de l'audio entre un ordinateur de bureau et un Raspberry Pi.
Cependant, Pulseaudio a besoin de dbus, et dbus a besoin d'une session X. Sans session graphique, Pulseaudio ne peut fonctionner qu'en mode système, ce qui n'est officiellement pas recommandé.
En plus sur un Raspberry Pi, le coût d'une session X est considérablement élevé, donc je voudrais m'en débarrasser de la manière la plus efficace (la moins coûteuse).
Comment puis-je démarrer la plus petite session X pour que Pulseaudio démarre?
x11
pulseaudio
kursus
la source
la source
Réponses:
Vous pouvez utiliser Xvfb , qui est un serveur X avec un tampon d' images virtuel, c'est-à-dire un serveur X qui s'affiche uniquement en mémoire et ne se connecte à aucun matériel. Vous n'avez pas besoin d'exécuter un client dont vous ne voulez pas sur ce serveur, et en particulier aucun environnement de bureau ou gestionnaire de fenêtres.
Après ça:
Vous devez attendre un peu après le démarrage
Xvfb
pour que l'affichage soit disponible. Vous pouvez utiliserxinit
pour démarrer un serveur X, puis démarrer les clients lorsqu'il est prêt. Mettez les commandes que vous souhaitez exécuter dans un script (notez que lorsque le script se ferme, le serveur X se ferme):Démarrez le serveur X virtuel avec
Si vous souhaitez l'exécuter au démarrage, vous pouvez le démarrer à partir de cron. Exécutez
crontab -e
(en tant qu'utilisateur, pas en tant que root) et ajoutez la ligneSi vous voulez tuer cette session, arrêtez le
xinit
processus.la source
@reboot
. Alanc a également raison, il doit y avoir un délai après le démarrage de Xvfb, et xinit résout ce problème. Voir mon montage.J'ai eu le même problème hier, en utilisant Pulse audio pour raspberrypi 0 W avec DBus dans un environnement sans tête créé avec yocto sans x11 et sans systemd, vous devez exécuter et exporter dbus avant d'exécuter pulseaudio.
Dans etc / pulse / client.conf, veuillez activer allow-autospawn-for-root = yes
Exécutez
pulseaudio -v
pour vérifier s'il y a un autre problème dans votre configuration. N'utilisez pas--system
switch car il ne sera pas correct.la source
Il existe un moyen plus élégant d'empêcher le script d'atteindre EOF que de l'utiliser
sleep 99999999
!Utilisez
sleep infinity
plutôt. Il fait ce qu'il dit...la source