Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
02 janvier 2017

Audio sound system pulseaudio           Gestionnaire de son


pulseaudio

pulseaudio

Système de son pulseaudio

   PulseAudio est un serveur de son faible latence pour Linux.

OPTIONS

--version Affiche la version
--dump-conf Charge le fichier de configuration daemon.conf, puis les options sur la ligne de commande, et dump la configuration résultante.
--dump-modules Liste les modules disponible. -v affiche des informations supplémentaires
--dump-resample-methods Liste les resamplers audio disponible
--cleanup-shm Identifie les segments mémoire partagés POSIX de PulseAudio blockés dans /dev/shm et les supprime si possible. C'est fait implicitement quand un nouveau service démarre ou qu'un client tente de se connecter à un service.
--start Démarre PulseAudio s'il ne tourne pas déjà. C'est différent de démarrer PulseAudio sans --start qui échoue si PA fonctionne déjà.
-k,--kill Termine un service en cour de fonctionnement. Équivalent à envoyer SIGTERM
--ckeck Retourne 0 si pulseaudio est déjà en cour de fonctionnement.
--system[=BOOL] Lance une instance système. Noter que cela désactive certaines fonctionnalités de pulseaudio et n'est généralement pas recommandé. Cette fonctionnalité nécessite une configuration spéciale et un utilisateur UNIX dédié.
-D,--daemonize[=BOOL] Met en tâche de fond. no pour systemd
--fail[=BOOL] Échoue le démarrage quand une des commandes spécifiés dans le script de démarrage default.pa échoue.
--high-priority[=BOOL] Tente d'aquérir un haut niveau de priorité. Ne réussit que si l'utilisateur appelant a une limite de ressource RLIMIT_NICE différent de 0, ou appelé avec SUID root.
--realtime[=BOOL] Tente d'acquérir un temps réel pour les threads d'E/S PulseAudio. Ne réussit que si l'utilisateur appelant a une limite de ressource RLIMIT_RTPRIO mis, ou appelé avec SUID root.
--disallow-module-loading[=BOOL] Désactive le chargement de module au démarrage. C'est une fonctionnalité de sécurité recommandé quand --system est utilisé. Cependant, cela casse certaines fonctionnalités.
--disallow-exit[=BOOL] Interdit un utilisateur de demander l'arrêt du processus.
--exit-idle-time=SECS Termine le service au bout de SECS seconde en pause
--scache-idle-time=SECS Décharge les samples autochargés du cache s'il ne sont pas utilisé durant le temps spécifié
--log-level[=LEVEL] Niveau de log, de 0 à 4 (error, warn, notice, info, debug). Défaut: notice
-v, --verbose mode verbeux
--log-target={auto,syslog,journal,stderr,file:PATH,newfile:PATH} Spécifie la cible des log.
--log-meta[=BOOL] Affiche le code source dans les logs
--log-time[=BOOL] Affiche l'horodatage dans les logs
--log-backtrace=FRAMES Quand FRAMES est supérieur à 0, log pour chaque message un trace de la pile jusqu'au nombre de stack frames spécifié.
-p, --dl-search-path=PATH Définis le chemin de recherche pour les objets partagés
--resample-method=METHOD Utilise le resampler spécifié par défaut (voir --dump-resample-methods pour les valeurs possibles)
--use-pid-file[=BOOL] Créé un fichier PID. Si désactivé, permet de lancer plusieurs serveurs de son par utilisateur.
--no-cpu-limit[=BOOL] N'install pas de limiteur de charge CPU. Par défaut, pulseaudio se termine lui-même s'il consomme trop de cpu.
--disable-shm[=BOOL] les clients et les serveurs peuvent échanger des données audio via POSIX ou des segments de mémoire partagés memfd. Si désactivé, pulseaudio communique exclusivement via des sockets. Noter que memfd est toujours désactivé avec --system.
--enable-memfd[=BOOL] Les clients et les serveurs peuvent échanger des données audio via memfd ( le mécanisme de mémoire partagé anonyme Linux ). Si désactivé, pulseaudio communique via mémoire partagé POSIX.
-L,--load="MODULE ARGUMENTS" Charge le module spécifié
-F, --file=FILENAME Lance le script spécifié au démarrage. Peut être spécifié plusieurs fois. Combiner avec -n pour désactiver le chargement du script par défaut (default.pa)
-C Ouvre un interpréteur de commande après de démarrage. Équivalent à --load=module-cli.
Ne charge pas le script par défaut default.pa. Utile avec -C ou --file

Fichiers

~/.config/pulse/daemon.conf
/etc/pulse/daemon.conf Paramètres de configuration pour le service PulseAudio.
~/.config/pulse/default.pa
/etc/pulse/default.pa Script de configuration par défau.
~/.config/pulse/client.conf
/etc/pulse/client.conf Paramètres de configuration pour les applications clients PulseAudio.

Signaux

SIGINT, SIGTERM Stop le service
SIGHUP dump un rapport long sur stdout ou syslog
SIGUSR1 Charge module-cli
SIGUSR2 Charge module-cli-protocol-unix

Users et groupes UNIX

Le groupe pulse-rt: Si le binaire PulseAudio est marqué SUID root, alors l'appartenance de l'utilisateur appelant dans ce groupe décide si le scheduling temps réel et/ou haute priorité est activé.
Le groupe pulse-access: Si PulseAudio est lancé en service système, l'accès est donné à tous les membres de ce groupe quand ils sont connectés via des sockets AF UNIX.
User/Groupe pulse: Si PulseAudio est lancé en service système et lancé en root, bascule dans ce user/group.

Scheduling temps-réel et haute-priorité

   Pour minimiser les risques de suppression durant la lecture il est recommandé de lancer pulseaudio avec un scheduling temps-réel. Cela découple la latence du service de la charge système et donc est la meilleur manière de s'assurer que PulseAudio obtient toujours le temps CPU quand il en a besoin. Cependant c'est un risque de sécurité, vu que pulseaudio tourne sous un processus, avec les privilèges de scheduling temps-réel, l'utilisateur peut mal l'utiliser et bloquer le système.

   Pour minimiser le risque, pulseaudio n'active pas le temps réel par défaut. Il est cependant recommandé de l'activer dans des systèmes sûre. Vu que le scheduling realtime est une opération privilégiée, certains changements sont nécessaire pour le permettre. 2 options sont disponibles:

   La limite RLIMIT_RTPRIO peut être utilisé pour permettre aux utilisateurs d'aquérir le scheduling temps-réel. Une limite de ressource de 9 est recommandé.

   Alternativement, le bit SUID root peut être définis pour le binaire pulseaudio. Donc le service obtiens les privilèges root. Cependant, conserver CAP_NICE, mais seulement si l'utilisateur appelant est un membre du groupe pulseaudio. Pour tous les autres utilisateurs toutes les capabilities sont supprimés. L'avantage est que les privilèges temps-réel sont seulement autorisés au service pulseaudio, pas à tous les processus de l'utilisateur.

   Alternativement, si le risque de bloquage de la machine est considéré trop grande, un scheduling de haute priorité peut être activé au lieu d'un scheduling temps-réel en utilisant --high-priority. Une limite de ressource RLIMIT_NICE à 31 ( un niveau nice -11) est recommandé.

Variables d'environnement

PULSE_SERVER Spécifie le serveur auquel se connecter quand un client demande une connexion à un serveur de son. Cette chaîne est une liste d'adresses séparés par un espace blanc. (unix:, tcp:, tcp4:, tcp6:)
PULSE_SINK nom symbolique du sink auquel se connecter quand un client créé un flux playback et ne demande pas explicitement un sink spécifique.
PULSE_SOURCE nom symbolique de la source à laquelle se connecter quand un client créé un flux d'enregistrement et ne demande pas de source spécifique.
PULSE_BINARY Chemin du binaire PulseAudio
PULSE_CLIENTCONFIG Chemin du fichier que devrait être lu au-lieu de client.conf
PULSE_COOKIE Chemin du fichier qui contient le cookie d'authentification PulseAudio. Défaut: ~/.config/pulse/cookie