\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{lun. janv. 2 11:25:09 CET 2017}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={pulseaudio},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Système de son pulseaudio},
CreationDate={D:20170102112509},
ModDate={D:20170102112509},
Keywords={Audio;sound system;pulseaudio}
}}
\begin{document}
 
\begin{center}
{\Huge pulseaudio }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Système de son pulseaudio}
 
\vspace{10mm}
 
\hspace{1mm}  PulseAudio est un serveur de son faible latence pour Linux.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} --version]{Affiche la version}
\item[\hspace{1mm} --dump-conf]{Charge le fichier de configuration daemon.conf, puis les options sur la ligne de commande, et dump la configuration résultante.}
\item[\hspace{1mm} --dump-modules]{Liste les modules disponible. -v affiche des informations supplémentaires}
\item[\hspace{1mm} --dump-resample-methods]{Liste les resamplers audio disponible}
\item[\hspace{1mm} --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.}
\item[\hspace{1mm} --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à.}
\item[\hspace{1mm} -k,--kill]{Termine un service en cour de fonctionnement. Équivalent à envoyer SIGTERM}
\item[\hspace{1mm} --ckeck]{Retourne 0 si pulseaudio est déjà en cour de fonctionnement.}
\item[\hspace{1mm} --system\texttt{[}=BOOL\texttt{]}]{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é.}
\item[\hspace{1mm} -D,--daemonize\texttt{[}=BOOL\texttt{]}]{Met en tâche de fond. no pour systemd}
\item[\hspace{1mm} --fail\texttt{[}=BOOL\texttt{]}]{Échoue le démarrage quand une des commandes spécifiés dans le script de démarrage default.pa échoue.}
\item[\hspace{1mm} --high-priority\texttt{[}=BOOL\texttt{]}]{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.}
\item[\hspace{1mm} --realtime\texttt{[}=BOOL\texttt{]}]{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.}
\item[\hspace{1mm} --disallow-module-loading\texttt{[}=BOOL\texttt{]}]{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.}
\item[\hspace{1mm} --disallow-exit\texttt{[}=BOOL\texttt{]}]{Interdit un utilisateur de demander l'arrêt du processus.}
\item[\hspace{1mm} --exit-idle-time=SECS]{Termine le service au bout de SECS seconde en pause}
\item[\hspace{1mm} --scache-idle-time=SECS]{Décharge les samples autochargés du cache s'il ne sont pas utilisé durant le temps spécifié}
\item[\hspace{1mm} --log-level\texttt{[}=LEVEL\texttt{]}]{Niveau de log, de 0 à 4 (error, warn, notice, info, debug). Défaut: notice}
\item[\hspace{1mm} -v, --verbose]{mode verbeux}
\item[\hspace{1mm} --log-target=\{auto,syslog,journal,stderr,file:PATH,newfile:PATH\}]{Spécifie la cible des log.}
\item[\hspace{1mm} --log-meta\texttt{[}=BOOL\texttt{]}]{Affiche le code source dans les logs}
\item[\hspace{1mm} --log-time\texttt{[}=BOOL\texttt{]}]{Affiche l'horodatage dans les logs}
\item[\hspace{1mm} --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é.}
\item[\hspace{1mm} -p, --dl-search-path=PATH]{Définis le chemin de recherche pour les objets partagés}
\item[\hspace{1mm} --resample-method=METHOD]{Utilise le resampler spécifié par défaut (voir --dump-resample-methods pour les valeurs possibles)}
\item[\hspace{1mm} --use-pid-file\texttt{[}=BOOL\texttt{]}]{Créé un fichier PID. Si désactivé, permet de lancer plusieurs serveurs de son par utilisateur.}
\item[\hspace{1mm} --no-cpu-limit\texttt{[}=BOOL\texttt{]}]{N'install pas de limiteur de charge CPU. Par défaut, pulseaudio se termine lui-même s'il consomme trop de cpu.}
\item[\hspace{1mm} --disable-shm\texttt{[}=BOOL\texttt{]}]{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.}
\item[\hspace{1mm} --enable-memfd\texttt{[}=BOOL\texttt{]}]{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.}
\item[\hspace{1mm} -L,--load="MODULE ARGUMENTS"]{Charge le module spécifié}
\item[\hspace{1mm} -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)}
\item[\hspace{1mm} -C]{Ouvre un interpréteur de commande après de démarrage. Équivalent à --load=module-cli.}
\item[\hspace{1mm} ]{Ne charge pas le script par défaut default.pa. Utile avec -C ou --file}
\end{description}
 
\vspace{1cm}{\huge Fichiers }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} \textasciitilde/.config/pulse/daemon.conf]{}
\item[\hspace{1mm} /etc/pulse/daemon.conf]{Paramètres de configuration pour le service PulseAudio.}
\item[\hspace{1mm} \textasciitilde/.config/pulse/default.pa]{}
\item[\hspace{1mm} /etc/pulse/default.pa]{Script de configuration par défau.}
\item[\hspace{1mm} \textasciitilde/.config/pulse/client.conf]{}
\item[\hspace{1mm} /etc/pulse/client.conf]{Paramètres de configuration pour les applications clients PulseAudio.}
\end{description}
 
\vspace{1cm}{\huge Signaux }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} SIGINT, SIGTERM]{Stop le service}
\item[\hspace{1mm} SIGHUP]{dump un rapport long sur stdout ou syslog}
\item[\hspace{1mm} SIGUSR1]{Charge module-cli}
\item[\hspace{1mm} SIGUSR2]{Charge module-cli-protocol-unix}
\end{description}
 
\vspace{1cm}{\huge Users et groupes UNIX }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} 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é.}
\item[\hspace{1mm} 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.}
\item[\hspace{1mm} User/Groupe pulse:]{Si PulseAudio est lancé en service système et lancé en root, bascule dans ce user/group.}
\end{description}
 
\vspace{1cm}{\huge Scheduling temps-réel et haute-priorité }
 
\
 
\hspace{1mm}  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.
\vspace{5mm} \\
 
 
\hspace{1mm}  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:
\vspace{5mm} \\
 
 
\hspace{1mm}  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é.
\vspace{5mm} \\
 
 
\hspace{1mm}  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.
\vspace{5mm} \\
 
 
\hspace{1mm}  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é.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Variables d'environnement }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} 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:)}
\item[\hspace{1mm} 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.}
\item[\hspace{1mm} 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.}
\item[\hspace{1mm} PULSE\_BINARY]{Chemin du binaire PulseAudio}
\item[\hspace{1mm} PULSE\_CLIENTCONFIG]{Chemin du fichier que devrait être lu au-lieu de client.conf}
\item[\hspace{1mm} PULSE\_COOKIE]{Chemin du fichier qui contient le cookie d'authentification PulseAudio. Défaut: \textasciitilde/.config/pulse/cookie}
\end{description}
\end{flushleft}
\end{document}
