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

htmlpdflatexmanmd




pulse-client.conf

pulse-client.conf

Fichier de configuration client PulseAudio

   La librairie cliente PulseAudio lit ses directives de configuration depuis un fichier au démarrage. Si le fichier par-utilisateur ~/.config/pulse/client.conf existe, il est utilisé, sinon, /etc/pulse/client.conf est utilisé. De plus, des directives peuvent également être placés dans ~/.config/pulse/client.conf.d/ et /etc/pulse/client.conf.d/. Ces fichiers doivent se terminer par .conf, et sont traités alphabétiquement.

Directives

default-sink= sink par défaut auquel se connecter. La variable $PULSE_SINK a précédence
default-source= Source par défaut à laquelle se connecter. $PULSE_SOURCE a précédence
default-server= Serveur par défaut auquel se connecter $PULSE_SERVER a précédence
autospawn= Démarre automatiquement un service pulseaudio quand nécessaire. Défaut: yes
daemon-binary= Chemin du service pulseaudio à lancer si autospawn est à yes.
extra-arguments= Arguments à passer au service pulseaudio. Défaut: --log-target=syslog
cookie-file= Spécifie le chemin du cookie d'authentificatino pulseaudio. Défaut: ~/.config/pulse/cookie
enable-shm= Active le transfert de donnée via POSIX ou via mémoire partagée memfd. Défaut: yes
enable-memfd= Active le tranfert de données via memfd. Défaut: yes
shm-size-bytes= Définis la taille de segment mémoire partagé pour les clients, en octets. Le défaut dépend du système, généralement 64 Mio.
auto-connect-localhost= Tente automatiquement de se connecter à localhost via IP. Risque de sécurité. Défaut: no
auto-connect-display= Tente automatiquement de se connecter à $DISPLAY de X11 si définis. Risque de sécurité. Défaut: no.
^
02 janvier 2017

htmlpdflatexmanmd




default.pa

default.pa, system.pa

Script de démarrage du serveur de son PulseAudio

   Le serveur PulseAudio interprète un script de configuration au démarrage, qui est principalement utilisé pour définir le jeu de modules à charger. Quand PulseAudio se lance dans le mode par utilisateur et que ~/.config/pulse/default.pa existe, ce fichier est utilisé, sinon utilise /etc/pulse/default.pa est utilisé s'il existe. Quand PulseAudio est lancé en système, /etc/pulse/system.pa est utilisé.

   Le script devrait contenir des directives dans le langage CLI PulseAudio, tel que documenté par pulse-cli-syntax.

^
02 janvier 2017

htmlpdflatexmanmd




pulse-daemon.conf

pulse-daemon.conf

fichier de configuration du service pulseaudio

   pulseaudio lit ses directives de configuration dans ~/.config/pulse/daemon.conf s'il existe, sinon /etc/pulse/daemon.conf. De plus, les fichiers dans ~/.config/pulse/daemon.conf.d/ et /etc/pulse/daemon.conf.d/. Noter que le serveur lit également un script de configuration au démarrage (default.pa)

Directives générales

daemonize= (bool) Lance en tâche de fond après le démarrage
fail= (bool) Échoue le démarrage si une des directives dans default.pa échoue
allow-module-loading= (bool) autorise ou non le chargement de modules après le démarrage. Désactivé par défaut pour des raisons de sécurité
allow-exit= (bool) Autorise ou non l'arrêt à la demande des utilisateurs. Défaut: yes
resample-method= Algorithme de resampling à utilise. (src-sinc-best-quality, src-sinc-medium-quality, src-sinc-fastest, src-zero-order-hold, src-linear, trivial, speex-float-N, speex-fixed-N, ffmpeg, soxr-mq, soxr-hq, soxr-vhq).
enable-remixing= (bool) Désactivé, les cannaux upmix ou downmix ne sont jamais dans des canaux différents, mais fait un simple match basé sur le nom. Défaut: yes
enable-lfe-remixing= (bool) Si désactivé, upmixing ou downmixing ignorent les canaux LFE. Défaut: no
lfe-crossover-freq= Fréquence crossover en Hz pour le filtre LFE. 0 désactive le filtre LFE. Défaut: 0
use-pid-file= (bool) Crée un fichier PID dans le répertoire courant ($XDG_RUNTIME_DIR/pulse/pid). Si activé, permet d'utiliser des commandes comme --kill ou --check. Si vous prévoyez de lancer plus d'une instance par utilisateur, il est mieux de désactiver cette option.
cpu-limit= Si désactivé, n'install pas le limiteur de charge CPU.
system-instance= (bool) Lance le service en mode système
local-server-type= Utile si l'on souhaite que les clients D-Bus utilisent un serveur distant. Ne plus utiliser cette option
enable-shm= (bool) Active le transfert de données via POSIX ou memfd. Défaut: yes
enable-membf= (bool) Active la mémoire partagée memfd. Défaut: no
shm-size-bytes= Définis la taille de segment mémoire partagé pour le service, en octets. Non spécifié ou à 0, une valeur par défaut, généralement 64MiO est utilisé.
lock-memory= Bloque le processus PulseAudio entier en mémoire. Défaut: no.
flat-volumes= Active les volumes flat, par ex, où il est possible de laisser le volume sink égal au maximum des volumes des entrées qui y sont connectés. Défaut: yes

Scheduling

high-priority= Renice le service après le redémarrage pour devenir un processus haute-priorité. Défaut: yes
realtime-scheduling= Tente d'acquérir le scheduling SCHED_FIFO pour les threads IO.
realtime-priority= priorité temps-réel à acquérir. Note: JACK utilise 10 par défaut, 9 pour les clients. Il est donc recommandé d'utiliser une valeur plus basse. Défaut: 5
nice-level= Niveau nice à acquérir pour le service. Défaut: -11

Temps d'inactivité

exit-idle-time= Termine le service après que le dernier client quitte et que ce délai spécifié en seconde est passé. Défaut: 20
scache-idle-time= vide les entrées du cache de sample autochargés après ce délai en seconde sans activité. Défaut: 20

Paths

dl-search-path= Chemin où rechercher les objets partagés.
default-script-file= fichier script de configuration à charger. Défaut: ~/.config/pulse/default.pa, ou /etc/pulse/default.pa
load-default-script-file= Charge le script de configuration par défaut spécifié dan default-script-file. Défaut: yes

Logging

log-target= cible des logs: stderr, syslog, journal, auto, file:PATH ou newfile:PATH
log-level= debug, info, notice, warning ou error
log-meta= ajoute l'emplacement du code dans les messages loggés. Défaut: no
log-time= Ajoute un horodatage aux messages loggés. Défaut: no
log-backtrace= Supérieur à 0, avec chaque message loggé, ajoute un stack trace jusqu'au nombre de stack frames spécifié. Défaut: 0

Limites de ressource

   Voir getrlimit(2) pour plus d'informations. Définir à -1 si PulseAudio ne devrait pas toucher aux limites de ressource:

rlimit-as Défaut: -1
rlimit-rss Défaut: -1
rlimit-core Défaut: -1
rlimit-data Défaut: -1
rlimit-fsize Défaut: -1
rlimit-nofile Défaut: -1
rlimit-stack Défaut: -1
rlimit-nproc Défaut: -1
rlimit-locks Défaut: -1
rlimit-sigpending Défaut: -1
rlimit-msgqueue Défaut: -1
rlimit-memlock Défaut: 16 Kio. Noter que les librairies clients JACK peuvent nécessiter plus de mémoire bloqué.
rlimit-nice Défaut: 31
rlimit-rtprio Défaut: 9
rlimit-rttime Défaut: 1000000

   De nombreux pilotes tentent d'ouvrir le périphérique audio avec ces paramètres et retournent des plus faibles paramètres. Les paramètres par défaut sont équivalent à un CD: 16bits, 2 canaux, 44100Hz.

default-sample-format= Format de sampling par défaut: u8, s16le, s16be, s24le, s24be, s24-32le, s24-32be, s32le, s32be, float32le, float32be, ulaw, alaw
default-sample-rate= Fréquence d'échantillonnage
default-sample-channels= Nombre de canaux par défaut
default-channel-map channel map par défaut
alternate-sample-rate Fréquence d'échantillonnage alternatif

Paramètres de fragment par défaut

   Certains pilotes nécessitent que le tampon de lecture hardware soit subdivisé en plusieurs fragments. Il est possible de changer ces métriques pour les machines avec des latences de scheduler hautes.

default-fragments= Nombre de fragments par défaut. Défaut: 4
default-fragment-size-msec= Durée d'un seul fragment. Défaut: 25ms, donc un total de 100ms

Paramètres de volume déferrés

   Avec la fonctionnalité de volume plat, le volume HW sink est mis au même niveau que le flux d'entrée ayant le plus fort volume. tout autre flux est ajusté dans SW. Certains mixers hardware ne peuvent pas être ajustés précisemment et le changement de volume peut créer des problèmes en sortie. Pour s'assurer que les volumes SW et HW sont appliqués correctement, leur application doit être synchronisé. Les paramètres suivants peuvent être définis pour affiner le processus:

enable-deferred-volume= Active le volume déférré pour les sinks qui le supporte. Activé par défaut
deferred-volume-safety-margin-usec= Délai en usec par lequel l'augmentation de volume HW est retardé et la diminution de volume HW est avancée. Défaut: 8000usec
deferred-volume-extra-delay-usec= Délai en usec par lequel le changement de volume HW est retardé. des valeurs négatives sont acceptées. Défaut: 0
^
02 janvier 2017

htmlpdflatexmanmd




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