Le Forum Indépendant de la Hifi et des Audiophiles

Version complète : RoonLabs : Installation & Configuration sous Linux
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Bonjour,

Je propose l'ouverture de ce sujet afin d'échanger sur l'installation et la configuration de RoonLabs sur Linux.

Pour ma part j'ai déjà fait trois types d'installations :
  1. Sous Debian Jessie (la dernière version de Debian pose des soucis sur le wifi et reste plus lent au démarrage)
  2. Sous Fedora & Noyau CCRMA (scripts d'automatisation mis en place)
  3. Avec Docker (sous Fedora & Noyau CCRMA)
Le premier point sur la configuration c'est l'installation et l'activation des plugins / API, il existe actuellement :
  1. Roon Extensions Manager (permet d'installer via l'interface de Roon les plugins existants)
  2. Roon Web Controller (une interface web permettant d'utiliser RoonServer, c'est assez basic et beaucoup moins riche que le client lourd sur Mac / Windows / Tablette
  3. Logitech Harmony Source Control 
  4. Denon/Marantz AV receiver volume control
Le second point sur la configuration porte sur l'automatisation du démarrage de ses plugins en tant que service via "'systemctl".

Sur Docker, je compte prochainement faire plus de tests : 
  1. Avoir les deux packages sur le même serveur 
  2. Avoir un package par PC
Je trouve ce composant très intéressant car il permet de charger le package totalement en mémoire et d'être isolé des autres processus.

Si ce sujet intéresse du monde je partagerais un peut plus mes recherches, le cas contraire le sujet pourra être "fermé"


.:. TUTORIEL .:.
.:. v1.18 - 17-AOUT-18 .:.


I - Installation de Fedora 25 :
  1.1) Installation Fedora Server DVD :
- L'image ISO est disponible ici : Net Install ; cette source va vous permettre de faire une installation minimale du système avec plus de compatibilité avec les contrôleurs SATA des cartes mères

- Gravez votre image sur une clé USB (il est tout à fait possible de renommer le fichier en .img si besoin, cela fonctionne très bien, le contenu étant inchangé)

- Installation en mode graphique pas à pas :
- - - A Venir ... - - -

  1.2) Installation Feodra Server NetInstall :
- L'image ISO est disponible ici : Net Install ; cette source va vous permettre de faire une installation minimale du système

Note :cette installation peut être source de problème car elle n'intègre pas tous les pilotes pour les contrôleurs SATA de notre cartes mères. Il est préférable d'utiliser la source DVD qui fait environ 2Go. Merci Patatras

- Gravez votre image sur une clé USB (il est tout à fait possible de renommer le fichier en .img si besoin, cela fonctionne très bien, le contenu étant inchangé)

- Installation en mode graphique pas à pas :
- - - A Venir ... - - -

- Tâches post-installation en se connectant directement en tant que root sur la consolle du serveur (pas en SSH) :
Code :
dnf update
dnf upgrade
dnf install wget htop vim tar bzip2

- Si vous n'avez pas prévu de faire des transferts de fichiers via WinSCP par exemple, vous pouvez passer sur "Dropbear" au lieu de "OpenSSH Server", car plus léger ; pour cela :
Code :
systemctl stop sshd
dnf remove openssh-server
dnf install dropbear
systemctl enable dropbear


II - Configuration Post Configuration pour Fedora : 
  2.1) Gestion des droits "administrateur" pour l'utilisateur :
- Il faut vérifier si l'utilisateur "standard" est dans le groupe "wheel" ou pas en exécutant la commande suivante :
Code :
cat /etc/group | grep $(whoami) | grep wheel | awk -F':' '{ print $1; }'

- Si votre commande ne renvoie rien, alors on ajouter l'utilisateur dans le groupe "wheee" et mettre à jour le fichier "sudoers" (vous allez devoir saisir le mot de passe pour le compte "ROOT") :
Code :
su -c "usermod -aG wheel $(whoami) ; echo '%wheel ALL=(ALL) NOPASSWD: ALL'>>/etc/sudoers"

- Vérifier que tout s'est bien passé en exécutant cette commande qui doit retourner la valeur "wheel" :
Code :
cat /etc/group | grep $(whoami) | grep wheel | awk -F':' '{ print $1; }'

- Une fois ces actions réalisées il faut fermer votre session SSH ou console pour prendre en compte vos modifications

  2.2) Gestion des dépôts :
- Lance une mise à jour du système et on ajout les dépôts : 
Code :
sudo dnf update -y
sudo dnf upgrade -y
sudo dnf install -y yum-plugin-fastestmirror deltarpm yum-plugin-priorities vim

  2.3) Ajout des utilitaires réseaux :
- Installer les paquets :
Code :
sudo dnf install -y net-tools

   2.4) Désactive le Firewall :
- Arrête le service et on supprime le composant
Code :
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo dnf remove firewalld -y

   2.5) Utilisation de Dropbear au lieu de OpenSSH Server (facultatif et à exécuter uniquement sur la console du serveur) :
- Arrête le service OpenSSH et on supprime le composant :
Code :
sudo systemctl stop sshd
sudo systemctl disable sshd
sudo dnf remove openssh-server -y

- On install Dropbear :
Code :
sudo dnf install dropbear -y

- On active DropBear pour un démarrage automatique
Code :
sudo systemctl enable dropbear
sudo systemctl start dropbear

  2.6) Désactive le SE Linux :
- On désactive :
Code :
sudo sed --in-place=.bak 's/^SELINUX\=enforcing/SELINUX\=disabled/g' /etc/selinux/config

- On vérifie qu'il est bien désactivé (la commande doit renvoyée : "SELINUX=disabled") :
Code :
sudo cat /etc/selinux/config | egrep "SELINUX=" | tail -1

  2.7) Redémarrer le serveur :
- Après toutes actions vous devez redémarrer votre serveur :
Code :
sudo reboot


III - Noyau CCRMA :
  3.1) Installation du noyau :
- On récupère le paquet :
Code :
su -c 'rpm -Uvh http://ccrma.stanford.edu/planetccrma/mirror/fedora/linux/planetccrma/$(rpm -E %fedora)/x86_64/planetccrma-repo-1.1-3.fc$(rpm -E %fedora).ccrma.noarch.rpm'

- On affiche les informations du contenu du paquet :
Code :
sudo dnf info kernel-rt

- On installe le noyau :
Code :
sudo dnf install -y kernel-rt

  3.2) Activation du noyau :
- On affiche la version actuelle du noyau de base :
Code :
uname -a

- Mise à jour du Grub pour le démarrage :
Code :
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

- On vérifie que le noyau est bien détecté :
Code :
sudo grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2 | grep ccrma

- On active le noyau CCRMA, comme noyau par défaut :
Code :
sudo grub2-set-default "$(sudo grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2 | grep ccrma)"
sudo grub2-editenv list

- Il faut redémarrer le serveur, une fois redémarré exécutez la commande suivante :
Code :
uname -a

- Le résultat attendu doit être du type :
Citation :Linux [Nom De Votre Serveur] 4.9.11-200.rt9.1.fc25.ccrma.x86_64+rt #1 SMP PREEMPT RT Wed Mar 8 11:46:54 PST 2017 x86_64 x86_64 x86_64 GNU/Linux

  3.3) Suppression de(s) ancien(s) noyau(x) :
- Lister les noyaux installés
Code :
sudo dnf list installed | grep kernel

- Supprimer le ou les noyaux que vous ne souhaitez plus conserver, exemple :
Code :
sudo dnf remove kernel-core-4.8.6-300.fc25

- Mise à jour de Grub et contrôle :
Code :
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
grep "submenu\|^\menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2

- Redémarre :
Code :
sudo reboot

IV - RoonLabs & Docker  :
Note : le dépôt "mikedickey/roonserver" n'est plus accessible depuis le 07-AUG-17 ; ce chapitre n'est plus fonctionnel

  4.1) Installation de Docker :
- Installe les dépôts :
Code :
sudo dnf -y install dnf-plugins-core

- Ajout du dépôt :
Code :
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo

- Mise à jour de DNF et des paquets :
Code :
sudo dnf makecache fast

- Installe Docker :
Code :
sudo dnf install docker-ce

- Active Docker au démarrage et on démarre le service
Code :
sudo systemctl enable docker
sudo systemctl start docker

   4.2) RoonServer  & Docker :
- Crée un dossier spécifique à cette image Docker dans le "home directory" du compte utilisateur courant, exemple :
Code :
mkdir /home/roon/docker-roonserver

- Lancer le package :
Code :
sudo docker run --name RoonServer --net=host -d -v /home/roon/docker-roonserver:/var/roon -v /library/music:/music mikedickey/roonserver

- Explications sur les dossiers :
 * /library/music = Le dossier où vous héberger votre bibliothèque musicale
 * /home/roon/docker-roonserver = répertoire de travaille de RoonServer

- Maintenant que le packages est lancé et crée sur votre serveur vous pouvez exécuter les commandes suivantes :
 * sudo docker stats = donne les informations en temps réel sur l'utilisation des ressources du serveur
 * sudo docker stop RoonServer = arrête l'exécution du paquet docker
 * sudo docker start RoonServer = lance l'exécution du paquet docker

- Après avoir redémarrer votre serveur vous devez juste maintenant lancer l'exécution du package avec la commande "start" (cf. ci-dessus).

  4.4) RoonBridge &  Docker :
- - - A Venir ... - - -

  4.5) Création des services pour systemd :
- - - A Venir ... - - -


V - Installation RoonBridge & RoonServer :
C'est le tutoriel officiel que vous pouvez retrouver ici : Linux Install.
Dans le cas d'une installation sur un seul PC vous devez dérouler uniquement le premier chapitre de cette section, car RoonServer intégré ce qu'il faut pour être autonome

  5.1) RoonServer :
- Installation des dépendances :
Code :
sudo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install -y https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo dnf update
sudo dnf install -y ffmpeg alsa-utils cifs-utils glibc htop

- Installation des dépendances pour les extensions (Facultatif) :
Code :
sudo dnf install -y gcc-c++ make git curl

- On récupérer les sources :
Code :
curl -O http://download.roonlabs.com/builds/roonserver-installer-linuxx64.sh

- On rends exécutable le fichier
Code :
chmod +x roonserver-installer-linuxx64.sh

- On lance l'installation, et il faut répondre "y" pour confirmer que vous souhaitez installer RoonServer :
Code :
sudo ./roonserver-installer-linuxx64.sh

- Pour vérifier que tout est démarré :
Code :
htop
Liste tous les processus en cours d'exécution sur le serveur

Code :
sudo systemctl status roonserver
Renvoi une information comme quoi le service est démarré

 5.2) RoonBridge : (En d'installation sur un second PC)
- On récupérer les sources :
Code :
curl -O http://download.roonlabs.com/builds/roonbridge-installer-linuxx64.sh

- On rends exécutable le fichier
Code :
chmod +x roonbridge-installer-linuxx64.sh

- On lance l'installation, et il faut répondre "y" pour confirmer que vous souhaitez installer RoonServer :
Code :
sudo ./roonbridge-installer-linuxx64.sh

- Pour vérifier que tout est démarré :
Code :
htop
Liste tous les processus en cours d'exécution sur le serveur

Code :
sudo systemctl status roonbridge
Renvoi une information comme quoi le service est démarré

 5.3) Installations Extensions RoonServer : (Facultatif et à dérouler uniquement si RoonServer est déjà présent)
- Installation de NodeJS /!\ Mot de passe ROOT à saisir /!\ :
Code :
su -c "curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -"
sudo dnf install -y nodejs

- Création du dossier qui va héberger toutes nos extensions par la suite
Code :
mkdir ~/RoonExtensions

- Définit ce dossier comme dossier de référence pour les extensions :
Code :
npm config set prefix '~/RoonExtensions'

- On lance l'installation :
Code :
npm install -g https://github.com/TheAppgineer/roon-extension-manager.git

- On lance le service :
Code :
cd ~/RoonExtensions/lib/node_modules/roon-extension-manager
node start.js
Note : Actions a réaliser manuellement pour le moment, je mettrais en ligne le script pour le démarrer en tant que service par la suite


VI - Installation Automatisée :
Les commandes suivantes sont à réaliser avec votre compte utilisateur standard (donc pas besoin de se mettre en "root"). Pour exécuter toutes les étapes suivantes vous pouvez utiliser une session SSH. J'ai mis en place un mécanisme de reprise au cas où il faudrait dérouler une étape bien précise.

J'ai testé tout ce chapitre sous Fedora 27 en version "minimaliste" : RAS !

  6.1) Les pré-requis : (durée moyenne 10 min)
- Il faut télécharger le fichier et le rendre exécutable :
Code :
wget https://raw.githubusercontent.com/LittleScarabee/RoonLabs/master/auto-install/install-RoonLabs_RT_Audiophile_Orientation-Step-01.sh

Code :
chmod +x install-RoonLabs_RT_Audiophile_Orientation-Step-01.sh

- Lancer l'installation :
Code :
./install-RoonLabs_RT_Audiophile_Orientation-Step-01.sh

- Etape 1/6 : A la première question appuyer sur "entrée"
Citation :>>> Les privilièges vont être accordés au compte 'roon', êtes-vous d'accord ? (sinon saisir le compte utilisateur)

- Etape 1/6 :  à la seconde question il faut saisir le mot de passe du compte "root" :
Citation :Authentification requise en tant que 'ROOT', merci de saisir votre
Mot de passe :

- Etape 2/6 à 5/6 : 

- Etape 6/6 : il faut confirmer le redémarrage du serveur en appuyant sur la touche "y" (votre session SSH se fermera automatiquement)
Citation :# ------------------------------- #
# 6/6 |  Step 1 Completed         #
# ------------------------------- #
Le redemarrage du serveur est nécessaire, souhaitez-vous redémarrer maintenant (Y/N) ?


  6.2) Noyau CCRMA : (durée environ 10 min)
- Il faut télécharger le fichier et le rendre exécutable :
Code :
wget https://raw.githubusercontent.com/LittleScarabee/RoonLabs/master/auto-install/install-RoonLabs_RT_Audiophile_Orientation-Step-02.sh

Code :
chmod +x install-RoonLabs_RT_Audiophile_Orientation-Step-02.sh

- Lancer l'installation :
Code :
./install-RoonLabs_RT_Audiophile_Orientation-Step-02.sh

- Etape 1/3 : il faut saisir le mot de passe de votre compte "root"
Citation :# ------------------------------- #
# 1/3 | Install Kernel RT CCRMA   #
# ------------------------------- #
>>> Type de système detecté : x86_64

>>> Authentification requise en tant que 'ROOT', merci de saisir votre
Mot de passe :

- Etape 2/3 : il faut appuyer sur la touche "y" pour activer le noyau CCRMA
Citation :# ------------------------------- #
# 2/3 | Enable Kernel CCRMA       #
# ------------------------------- #

>>> Votre noyau actuel est le suivant :
Linux PEACH.KOULERPEI.RE 4.15.6-300.fc27.x86_64 #1 SMP Mon Feb 26 18:43:03 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.6-300.fc27.x86_64
Found initrd image: /boot/initramfs-4.15.6-300.fc27.x86_64.img
Found linux image: /boot/vmlinuz-4.14.12-300.rt10.1.fc27.ccrma.x86_64+rt
Found initrd image: /boot/initramfs-4.14.12-300.rt10.1.fc27.ccrma.x86_64+rt.img
Found linux image: /boot/vmlinuz-0-rescue-1ae561d9e8434aed95a9afd2e0c075f7
Found initrd image: /boot/initramfs-0-rescue-1ae561d9e8434aed95a9afd2e0c075f7.img
done

>>> Le noyau CCRMA est détecté dans la version suivante :
Fedora (4.14.12-300.rt10.1.fc27.ccrma.x86_64+rt) 27 (Twenty Seven)

>>> Souhaitez-vous qu'il soit le noyau par défaut maintenant (Y/N) ?
y

-Etape 3/3 : il faut confirmer le redémarrage du serveur en appuyant sur la touche "y" (votre session SSH se fermera automatiquement)
Citation :# ------------------------------- #
# 3/3 |  Step 2 Completed         #
# ------------------------------- #
>>> Le redemarrage du serveur est nécessaire, souhaitez-vous redémarrer maintenant (Y/N) ?

- Une fois le serveur redémarrer verifier que vous etes bien sur le noyau CCRMA via la commande suivante :
Code :
[roon@PEACH ~]$ uname -a
Linux PEACH.KOULERPEI.RE 4.14.12-300.rt10.1.fc27.ccrma.x86_64+rt #1 SMP PREEMPT RT Tue Jan 9 17:31:16 PST 2018 x86_64 x86_64 x86_64 GNU/Linux


  6.3) RoonServer / RoonBridge : (durée environ 10-15 min)
- Il faut télécharger le fichier et le rendre exécutable :
Code :
wget https://raw.githubusercontent.com/LittleScarabee/RoonLabs/master/auto-install/install-RoonLabs_RT_Audiophile_Orientation-Step-03.sh

Code :
chmod +x install-RoonLabs_RT_Audiophile_Orientation-Step-03.sh

- Lancer l'installation :
Code :
./install-RoonLabs_RT_Audiophile_Orientation-Step-03.sh

- Etape 1/3 : Confirmer ou non l'installation de RoonServer 
Citation :# ----------------------------------------------- #
# 1/3 | Install RoonServer                                                #
# ----------------------------------------------- #
>>> Do you want to install RoonServer (Y/N) ?

Il vous sera demandé durant cette étape de saisir le mot de passe "root". Ce script va automatiquement installer tout ce qui est "nodejs" pour ceux qui souhaiterais s'attaquer aux "extensions" par la suite.

- Etape 2/3 : Confirmer ou non l'installation de RooBridge
Citation :# ----------------------------------------------- #
# 2/3 | Install RoonBridge                                                #
# ----------------------------------------------- #
>>> Do you want to install RoonBridge (Y/N) ?

- Etape 3/3 : Il faut confirmer le redémarrage du serveur
Citation :# ----------------------------------------------- #
# 3/3 | Reboot                                                                    #
# ----------------------------------------------- #
>>> Reboot of the server is needed, do you want to do it now (Y/N) ?
y


  6.4) Gestion des services dans systemd : 
- - - A Venir ... - - -


VII - Optimisations :
  7.1) Utilisation d'un disque SSD :
Sous Windows et Mac nous avons des utilitaires à installer pour une meilleure gestion des disques SSD. Sous Fedora nous devons dérouler certains commandes (SSD sous Fedora (official))

   7.1.1) Vérifier que les partitions sont alignées :
- - - A Venir ... - - -

   7.1.2) Changer le scheduler du disque:
- Création du fichier :
Code :
sudo vim /etc/rc.d/rc.local

- On passe en mode édition et on ajoute la ligne suivante, puis on sauvegarde les modifications :
Code :
#!/bin/bash
echo 'noop' > /sys/block/sda/queue/scheduler
Note : Ajouter une ligne pour chaque disque SSD que vous avez sur votre machine.

- On rends le fichier exécutable :
Code :
sudo chmod +x /etc/rc.d/rc.local

- On édite le fichier pour démarrer le service
Code :
sudo vim /etc/systemd/system/rc-local.service

- On ajoute le contenu suivant dans le fichier qui doit être vide, et on sauvegarde ensuite :
Code :
[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
GuessMainPID=no

[Install]
WantedBy=multi-user.target
 
- On active le service pour un démarrage en automatique et on démarre le service :
Code :
sudo systemctl enable rc-local.service
sudo systemctl start rc-local.service

- On active le TRIM sur le disque
Code :
sudo systemctl enable fstrim.timer

- On redémarre le serveur ensuite
Code :
sudo reboot

- Au redémarrage vous pouvez vérifier que le service TRIM est démarré :
Code :
sudo systemctl status fstrim.timer

- Et que le scheduler du noyau est bien sur "noop" (exemple pour le disque sda):
Code :
sudo cat /sys/block/sda/queue/scheduler

   7.1.3) Modification de l'utilisation de la swap :
Pour éviter que le système utilise la swap du disque il faut modifier une valeur

- Edition du fichier de configuration
Code :
sudo vim /etc/sysctl.conf

- Ajouter le paramètre suivant dans le fichier (qui doit être vide) :
Code :
vm.swappiness = 0
Note : Cette valeur va de 0 à 100 ; plus elle est faible et plus le système utilise le moins possible le swap

   7.1.4) Désactive la journalisation et active le TRIM :
On evite que le système journalise la moindre modification sur le disque, pour cela il faut mettre une option sur les partitions concernées

- Ouvrir le fichier concerné en édition
Code :
sudo vim /etc/fstab

- On ajoute l'option "noatime" sur les partitions concernées, exemple :
Code :
/dev/sda1   /   ext4     defaults,noatime,discard       1 1
Explications :
 * noatime = désactive la gestion des dates d'accès sur les fichiers
 * discard = active le trim pour les partition en EXT4 (nécessaire pour les SSD)

- Pour vérifier une fois l'OS redémarre on exécute la commande suivante
Code :
sudo findmnt -O discard

- Le rèsultat attendu doit être du type :
Citation :[roon@PEACH ~]$ sudo findmnt -O discard
TARGET     SOURCE    FSTYPE OPTIONS
/          /dev/sda3 ext4   rw,noatime,discard,data=ordered
├─/boot    /dev/sda2 ext4   rw,noatime,discard,data=ordered
└─/library /dev/sda5 ext4   rw,noatime,discard,data=ordered
Note : La valeur "data=ordered" s'ajoute automatiquement lorsque l'on utilise l'option "discard".

  7.2) Désactivation des services non nécessaire (selon votre configuration bien sûr) :
>> Ces lignes ne s'adressent qu'à une installation faite depuis une source "Fedora Server DVD"  option "Installation Server"
- Pour aide a créer des rapport de bugs
Code :
sudo systemctl disable abrtd

- Gestion des logs
Code :
sudo systemctl disable rsyslog

- Pour l'iSCSI, stockage sur le réseau
Code :
sudo systemctl disable iscsi

- Surveillance des raids
Code :
sudo systemctl disable mdmonitor

- Gestion des volumes LVM
Code :
sudo systemctl disable lvm2-monitor

- Gestion du multi chemin lorsque l'on a un stockage réseau
Code :
sudo systemctl disable multipathd

- Planificateur de tâches
Code :
sudo systemctl disable crond

  7.3) Configuration du mode bridge :
- - - A Venir ... - - -

  7.4) Passage des services Roon en mode RealTime :
- Création du dossier :
Code :
sudo mkdir /opt/RoonRealTime
sudo chmod 755 -R /opt/RoonRealTime

- Pour RoonServer & RoonBridge : Création du script 
Code :
sudo vim /opt/RoonRealTime/roon-realtime.sh

- Pour RoonServer & RoonBridge : Passer en mode édition et ajouter le contenu suivant :
Code PHP :
#!/bin/bash

# ProcessusName
PROC_ROON="RoonServer"
PROC_BRIDGE="RoonBridge"
PROC_RAAT="RAATServer"
PROC_APPLIANCE="RoonAppliance"

# Log File
STR_LOG="/var/log/roon-realtime.log"
echo "- - - - " $STR_LOG
echo "## Date : $( date +'%D %r' )" >> $STR_LOG
echo "## User : $( whoami )" >> $STR_LOG
echo "- - - - " >> $STR_LOG

# Options
STR_HELP="
How to use this script : 
roon-realtime.sh PARAMETERS OPTIONS

Example for Server: roon-realtime.sh -p 99 -m FIFO -s y -a y -r y 
Example for Brige: roon-realtime.sh -p 99 -m FIFO -b y -r y 

* Options (At least one of them)
s = Server
a = Appliance
r = RAAT
b = Bridge

* Parameters
m = Scheduling >> {FIFO|RR}
p = Priority   >> {0-99}
"
while getopts s:a:r:b:m:p:hoption
do
case 
"${option}"
  in
       s
)
               OPT_ROON=${OPTARG}
               echo "## Option $PROC_ROON selected..." >> $STR_LOG
               
;;
       a)
               OPT_APPLIANCE=${OPTARG}
               echo "## Option $PROC_APPLIANCE selected..." >> $STR_LOG
               
;;
       r)
               OPT_RAAT=${OPTARG}
               echo "## Option $PROC_RAAT selected..." >> $STR_LOG
               
;;
       b)
               OPT_BRIDGE=${OPTARG}
               echo "## Option $PROC_BRIDGE selected..." >> $STR_LOG
               
;;
       m)
               SCHED_CMD=${OPTARG}
               echo "## Scheduling $SCHED_CMD  selected..." >> $STR_LOG
               
;;
       p)
               SCHED_RANGE=${OPTARG}
               echo "## Priority $SCHED_RANGE selected..." >> $STR_LOG
               
;;
       h)
               echo $STR_HELP
               exit 0
               
;;
esac
done
echo "- - - -" >> $STR_LOG

# # # # # # # # # #
# Function
# $1 = Value for Process Name
# $2 = Value for Log file
# # # # # # # # # #
function Get_ProcessStatus () {

       # Check if the process is started
       if [ -/proc/$(/usr/bin/pidof $1)/exe ]; then
               INT_RETURN
=1
               echo 
"## Service $1 started..." >> $2
       else
               INT_RETURN
=0
               echo 
"## Service $1 not started..." >> $2
       fi

       
# Return value of the flag
       return $INT_RETURN

}

# Pause
echo "## Pause 7 secs (to be sure all services are running)..." >> $STR_LOG
sleep 7
echo "- - - -" >> $STR_LOG

# Check if the service are running
FLAG=0
FLAG_MAX
=3
# Identify the number of service
if [ "$PROC_BRIDGE== "Y" ] || [ "$PROC_BRIDGE== "y" ]; then
       FLAG_MAX
=2
fi

# Iteration
while (( FLAG FLAG_MAX ))
do
       # Check for RoonServer
       Get_ProcessStatus $PROC_ROON $STR_LOG
       INT_RESULT
=$?
       FLAG=$(($FLAG $INT_RESULT))

       # Check for RoonAppliance
       Get_ProcessStatus $PROC_APPLIANCE $STR_LOG
       INT_RESULT
=$?
       FLAG=$(($FLAG $INT_RESULT))

       # Check for RAATServer
       Get_ProcessStatus $PROC_RAAT $STR_LOG
       INT_RESULT
=$?
       FLAG=$(($FLAG $INT_RESULT))

       # Check for RoonBridge
       Get_ProcessStatus $PROC_BRIDGE $STR_LOG
       INT_RESULT
=$?
       FLAG=$(($FLAG $INT_RESULT))

done
echo "- - - -" >> $STR_LOG

# Schedule Round robin
if [ "$SCHED_CMD== "RR" ] || [ "$SCHED_CMD== "rr" ]; then
       SCHED_CMD
="-r"
fi

# Schedule First in, first out
if [ "$SCHED_CMD== "FIFO" ] || [ "$SCHED_CMD== "fifo" ]; then
       SCHED_CMD
="-f"
fi

# # # # # # # # # #
# Function
# $1 = Value for Option
# $2 = Value for Parent Process Name
# $3 = Value for Scheduling
# $4 = Value for Priority
# # # # # # # # # # 
function Set_RealTime () {
       if "$1" == "Y" ] || [ "$1" == "y" ]; then
               ARR_PID
=$(ls /proc/$(pidof $2)/task)
               INT_ROWS=0
               for p_id in $ARR_PID
;
                       do
                               echo 
"## Process : $(tail /proc/$(pidof $2)/task/$p_id/comm) | PID = $p_id>> $STR_LOG
                               chrt 
$-$4 $p_id >> $STR_LOG
                               chrt 
-p $p_id >> $STR_LOG
                               INT_ROWS
=$(($INT_ROWS 1));
                       done
               echo 
"## -----------------------------------------------------------------" >> $STR_LOG
               echo 
"## Parent Process [$2] >> $INT_ROWS child process updated..." >> $STR_LOG
               echo 
"## -----------------------------------------------------------------" >> $STR_LOG
               echo 
"- - - - " >> $STR_LOG
       fi

}


# Iteration for RoonServer
Set_RealTime $OPT_ROON $PROC_ROON $SCHED_CMD $SCHED_RANGE

# Iteration for RoonBridge
Set_RealTime $OPT_BRIDGE $PROC_BRIDGE $SCHED_CMD $SCHED_RANGE

# Iteration for RAATServer
Set_RealTime $OPT_RAAT $PROC_RAAT $SCHED_CMD $SCHED_RANGE

# Iteration for RoonAppliance
Set_RealTime $OPT_APPLIANCE $PROC_APPLIANCE $SCHED_CMD $SCHED_RANGE

# End
exit 

- Pour RoonServer & RoonBridge : Puis sauvegardez le fichier et rendez le exécutable :
Code :
sudo chmod +x /opt/RoonRealTime/roon-realtime.sh

- Pour RoonServer : Puis lancez le avec les paramètres qui vont bien :
Code :
sudo /opt/RoonRealTime/roon-realtime.sh -p 99 -m FIFO -r y -a y -s y

Pour RoonBridge : Puis lancez le avec les paramètres qui vont bien :
Code :
sudo /opt/RoonRealTime/roon-realtime.sh -p 99 -m FIFO -b y -r y

Note :
How to use this script : roon-realtime.sh PARAMETERS OPTIONS

Example for Server:
 * roon-realtime.sh -p 99 -m FIFO -s y -a y -r y (put all process in RT)
 * roon-realtime.sh -p 99 -m FIFO -a y -r y (put only process RAATServer and RoonAppliance in RT)

Example for Brige (never tested)
 * roon-realtime.sh -p 99 -m FIFO -b y -r y

OPTIONS (At least one of them)
s = Server
a = Appliance
r = RAAT
b = Bridge

PARAMETERS :
m = Scheduling >> {FIFO|RR}
p = Priority   >> {0-99}


- Pour RoonServer : Creation du service pour le mode démarrage automatique :
Code :
sudo vim /etc/systemd/system/roon-realtime.service

- Passez en mode edition et ajoutez le texte suivant :
Code :
[Unit]
Description=Realtime Process for RoonLabs
After=roonserver.service
Requires=roonserver.service

[Service]
User=root
Type=forking
WorkingDirectory=/opt/RoonRealTime
ExecStart=/usr/bin/sh roon-realtime.sh -p 99 -m FIFO -a y -r y -s y

[Install]
WantedBy=multi-user.target
Note : Pour les options de démarrage cf. plus haut pour le script.

- Pour RoonBridge : Creation du service pour le mode démarrage automatique :
Code :
sudo vim /etc/systemd/system/roon-realtime.service

- Passez en mode edition et ajoutez le texte suivant :
Code :
[Unit]
Description=Realtime Process for RoonLabs
After=roonbridge.service
Requires=roonbridge.service

[Service]
User=root
Type=forking
WorkingDirectory=/opt/RoonRealTime
ExecStart=/usr/bin/sh roon-realtime.sh -p 99 -m FIFO -a y -r y -b y

[Install]
WantedBy=multi-user.target
Note : Pour les options de démarrage cf. plus haut pour le script.


- Pour RoonServer & RoonBridge : Activez le service au démarrage et mettre à jour la liste des services :
Code :
sudo systemctl daemon-reload
sudo systemctl enable roon-realtime.service


  7.5) Chargement de l'OS en RAM (remonté par Olivier) :
- - - A Venir ... - - -

  7.6) Divers  :
   7.6.1) Bug sur le bridge réseau :
En cas d'erreur lors de l'activation du bridge, il est nécessaire d'activer le multi-pathing : Solution proposée par Olivier

   7.6.2) Gestion de l'utilisation mémoire :
- J'ai mis en place un script permettant de voir l'utilisation mémoire par Roon et de vider le cache au besoin. Ci-dessous la liste des commandes à faire pour récupérer le script et le rendre exécutable :
Code :
cd /usr/sbin/
sudo wget https://raw.githubusercontent.com/LittleScarabee/RoonLabs/master/scripts/roon-memory.sh
sudo chmod +x roon-memory.sh

- Pour l'utiliser il suffit de faire l'une des commandes suivantes :
Code :
/usr/sbin/roon-memory.sh
ou
roon-memory.sh

- Résultat en choisissant l'option "check" :
Citation :[roon@PEACH ~]$ roon-memory.sh
Que souhaitez-vous faire : Controler la mémoire (check) ou Vider le cache (clear) ?
check

######### RoonServer #########
Utilisation = 362.441 Mo

######### RoonAppliance #########
Utilisation = 295.816 Mo

######### RAATServer #########
Utilisation = 27 Mo

######### RoonBridge #########
Utilisation = 0 Mo

- Résultat en choisissant l'option "clear" :
Citation :[roon@PEACH ~]$ roon-memory.sh
Que souhaitez-vous faire : Controler la mémoire (check) ou Vider le cache (clear) ?
clear

######### Utilisation mémoire avant #########
             total        used        free      shared  buff/cache   available
Mem:           1,8G        351M         29M        692K        1,4G        1,4G
Swap:          3,9G          0B        3,9G

>>> Authentification requise en tant que 'ROOT', merci de saisir votre
Mot de passe :

######### Utilisation mémoire après #########
             total        used        free      shared  buff/cache   available
Mem:           1,8G        353M        1,2G        712K        274M        1,4G
Swap:          3,9G          0B        3,9G

  7.7) Mise à jour du kernel  :
- Après s'est connecté en utilisateur standard (pas root) lancez la commande suivante et confirmez en tapant "O":
Code :
sudo dnf update

- Vous allez maintenant vérifier la liste des kernels installés
Code :
sudo dnf list installed | grep kernel

- Le résultat sera de ce type :
Citation :[roon@PEACH ~]$ sudo dnf list installed | grep kernel
kernel.x86_64                     4.11.12-200.fc25                   @updates  
kernel.x86_64                     4.13.12-100.fc25                   @updates  
kernel-core.x86_64                4.11.12-200.fc25                   @updates  
kernel-core.x86_64                4.13.12-100.fc25                   @updates  
kernel-headers.x86_64             4.13.12-100.fc25                   @updates  
kernel-modules.x86_64             4.11.12-200.fc25                   @updates  
kernel-modules.x86_64             4.13.12-100.fc25                   @updates  
kernel-rt.x86_64                  4.9.11-200.rt9.1.fc25.ccrma        @planetcore
kernel-rt.x86_64                  4.13.10-100.rt3.1.fc25.ccrma       @planetcore
kernel-rt-core.x86_64             4.9.11-200.rt9.1.fc25.ccrma        @planetcore
kernel-rt-core.x86_64             4.13.10-100.rt3.1.fc25.ccrma       @planetcore
kernel-rt-modules.x86_64          4.9.11-200.rt9.1.fc25.ccrma        @planetcore
kernel-rt-modules.x86_64          4.13.10-100.rt3.1.fc25.ccrma       @planetcore

- Il faut maintenant redémarrer la machine et ensuite exécuter la commande suivante pour vérifier le kernel utilisé (car vous avez normalement bascule le kernel standard suite à la mise à jour) :
Code :
uname -a

- Le résultat est de ce type :
Code :
[roon@PEACH ~]$ uname -a
Linux PEACH 4.13.12-100.fc25.x86_64 #1 SMP Wed Nov 8 18:13:25 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

- Vous allez maintenant supprimer les anciens noyaux, dans notre cas (cela permet aussi de libérer de l'espace disque) :
kernel.x86_64                     4.11.12-200.fc25                   @updates   
kernel.x86_64                     4.13.12-100.fc25                   @updates   
kernel-core.x86_64                4.11.12-200.fc25                   @updates   
kernel-core.x86_64                4.13.12-100.fc25                   @updates   
kernel-headers.x86_64             4.13.12-100.fc25                   @updates   
kernel-modules.x86_64             4.11.12-200.fc25                   @updates   
kernel-modules.x86_64             4.13.12-100.fc25                   @updates   
kernel-rt.x86_64                  4.9.11-200.rt9.1.fc25.ccrma        @planetcore
kernel-rt.x86_64                  4.13.10-100.rt3.1.fc25.ccrma       @planetcore
kernel-rt-core.x86_64             4.9.11-200.rt9.1.fc25.ccrma        @planetcore
kernel-rt-core.x86_64             4.13.10-100.rt3.1.fc25.ccrma       @planetcore
kernel-rt-modules.x86_64          4.9.11-200.rt9.1.fc25.ccrma        @planetcore
kernel-rt-modules.x86_64          4.13.10-100.rt3.1.fc25.ccrma       @planetcore

- Pour cela exécutez la commande suivante et confirmez en saisissant "O" pour chaque commande :
Code :
sudo dnf remove kernel-rt-core-4.9.11-200.rt9.1.fc25.ccrma
sudo dnf remove kernel-core-4.11.12-200.fc25

Note : La structure c'est : COLONE_1 (sans x86_64) + "-" + COLONE_2

- Maintenant que vous avez supprimé les deux anciens kernels il ne doit vous rester que kernel : noyau standard + CCRMA, exécuter la commande suivante pour le vérifier :
Code :
sudo dnf list installed | grep kernel

- Résultat est :
Code :
[roon@PEACH ~]$ sudo dnf list installed | grep kernel
kernel.x86_64                      4.13.12-100.fc25                     @updates
kernel-core.x86_64                 4.13.12-100.fc25                     @updates
kernel-headers.x86_64              4.13.12-100.fc25                     @updates
kernel-modules.x86_64              4.13.12-100.fc25                     @updates
kernel-rt.x86_64                   4.13.10-100.rt3.1.fc25.ccrma         @planetcore
kernel-rt-core.x86_64              4.13.10-100.rt3.1.fc25.ccrma         @planetcore
kernel-rt-modules.x86_64           4.13.10-100.rt3.1.fc25.ccrma         @planetcore

- Il faut maintenant mettre à jour le Grub :
Code :
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

- Puis on contrôle :
Code :
grep "submenu\|^\menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2

- Le résultat sera de ce type :
Code :
[roon@PEACH ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.13.12-100.fc25.x86_64
Found initrd image: /boot/initramfs-4.13.12-100.fc25.x86_64.img
Found linux image: /boot/vmlinuz-4.13.10-100.rt3.1.fc25.ccrma.x86_64+rt
Found initrd image: /boot/initramfs-4.13.10-100.rt3.1.fc25.ccrma.x86_64+rt.img
Found linux image: /boot/vmlinuz-0-rescue-deda80999134438d9cecc9472589362f
Found initrd image: /boot/initramfs-0-rescue-deda80999134438d9cecc9472589362f.img
done
[roon@PEACH ~]$ grep "submenu\|^\menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2
Fedora (4.13.12-100.fc25.x86_64) 25 (Twenty Five)
Fedora (4.13.10-100.rt3.1.fc25.ccrma.x86_64+rt) 25 (Twenty Five)
Fedora (0-rescue-deda80999134438d9cecc9472589362f) 25 (Twenty Five)

- On va maintenant basculer sur le noyau CCRMA, puis mise à jour et enfin reboot :
Code :
sudo grub2-set-default "Fedora (4.13.10-100.rt3.1.fc25.ccrma.x86_64+rt) 25 (Twenty Five)"
sudo grub2-editenv list
sudo reboot

- On vérifie que l’on est bien sur le noyau choisi, suite au redémarrage :
Code :
uname -a

- Le résultat attendu est :
Code :
[roon@PEACH ~]$ uname -a
Linux PEACH 4.13.10-100.rt3.1.fc25.ccrma.x86_64+rt #1 SMP PREEMPT RT Fri Nov 3 10:34:09 PDT 2017 x86_64 x86_64 x86_64 GNU/Linux
Salut Littlescarabee,

comme tu le sais sans doute je tourne sur config 2PC en mode Ethernet bridgé sous Fedora 24 + noyau Planet CCRMA.

Je vois que tu as intégré les plugins API développés pour Roon à la solution Fedora.
Perso je n'en ai pas trop l'utilité et je ne suis pas allé plus avant dans ce domaine.
Je possède toutefois une télécommande avec son hub wifi Logitech Harmony.
D'après toi, le plugin Logitech Harmony Source Control a-t-il un intérêt quelconque étant donné que j'ai déjà l'appli Logitech Harmony sur ma tablette?

Par contre Docker, je ne connais que de nom. Quels seraient les avantages à utiliser ce conteneur?
Pas de système directement sur PC mais sur un serveur, c'est bien ça?
Salut Le dom

(07-31-2017, 09:32 AM)Le dom a écrit : [ -> ]comme tu le sais sans doute je tourne sur config 2PC en mode Ethernet bridgé sous Fedora 24 + noyau Planet CCRMA.

Oui en effet, pour ma part je suis Fedora 25 car c'est la dernière version utilisée par CCRMA...j'ai du resortir des cartons mes scripts d'installation automatisés pour Fedora du temps de FedoLight (impossible de retrouver la procédure) car je n'avais plus en tête toutes les commandes à exécuter.

(07-31-2017, 09:32 AM)Le dom a écrit : [ -> ]Je vois que tu as intégré les plugins API développés pour Roon à la solution Fedora.
Perso je n'en ai pas trop l'utilité et je ne suis pas allé plus avant dans ce domaine.
Je possède toutefois une télécommande avec son hub wifi Logitech Harmony.
D'après toi, le plugin Logitech Harmony Source Control a-t-il un intérêt quelconque étant donné que j'ai déjà l'appli Logitech Harmony sur ma tablette?
En effet c'est la finalité du plugin : on a pas de tablette on prends son navigateur Web pour le faire..je t'avoue ne pas l'avoir installé car aucun besoin. Je me suis intéressé au plugins surtout à la demande de Patatras qui voulait tester le plugin "Web Controller" qui est beaucoup moins riche graphiquement que le client que l'on connait, mais bon c'est toujours interessant de "grater" un peu car on peut découvrir autre chose parfois !

Tu peux rester sur ton application tablette et ton hub ; elle reste meilleure "je pense", de ce que j'ai pu voir !


(07-31-2017, 09:32 AM)Le dom a écrit : [ -> ]Par contre Docker, je ne connais que de nom. Quels seraient les avantages à utiliser ce conteneur?
Pas de système directement sur PC mais sur un serveur, c'est bien ça?
Pour Docker : en quelques mots c'est un package (ou container si tu préfères) qui va permettre de virtualiser une application (et ces dépendances) et la rendre compatible quelque soit la plateforme à partir du moment où "l'image" a été faite...tu t'affranchies donc de toute installation longue et laborieuse parfois selon le composant. un PC devient serveur quand il tourne H24 et qu'il y a une distribution un peut optimisé je dirais (dans les grandes lignes). J'ai donc comme toi un PC avec Fedora & CCRMA et j'ai installé et fait fonctionner Docker.

Exemple : sur TinySqueeze on aurait avoir un package Docker de Squeezelite optimisé on pourrait sous linux le faire fonctionner que se soit sous Fedora, Debian ou autre en faisant abstration à la couche CPU, donc hardware...Je pense que c'est une orientation à prendre aujourd'hui quand on a une application : la rendre portable pour une mise en place rapide. Surtout que Windows 2016 va le proposer de base...

Dans les faits :
- Une personne du forum de Roon a créer un package qu'il a publié sur Docker
- J'ai installé Docker et ces dépendances, lancer la ligne de commande permettant de lancer le package :
 * Cela a eu pour effet de télécharger l'image en local sur mon serveur
 * Il m'a démarrer un processus dédié à cette application (RoonServer) a qui j'ai positionné des points de montage pour son dossier travaille (/var/roon et /music)
- Je peux ensuite suivre l'utilisation CPU et mémoire de ce container

Les "container" sont eux isolés entre eux et sont chargés en RAM et on peut très bien limiter les allocations mémoire, mais bon c'est aussi source de problèmes (comme ne pas le faire !)

La finalité pour moi c'est d'avoir un container "RoonServer" et "RoonBridge" sur le même serveur et d'avoir des barrettes mémoire avec un faible timing, on a aujourd'hui une architecture client et serveur pour éviter les soucis que l'on connait (mais il est nécessaire d'avoir un pont optique ou autre solutions), je souhaite vérifier si l'on a ou pas ces soucis avec Docker.

Ajouter un pont optique (que je possède) ou encore du bridge pour gagner en performances c'est pour moi en quelque sorte un "cache misère" on a un soucis en effet, mais mon approche c'est plutôt d'optimiser le fonctionnement entre les applications (faute d'être le développeur "fou" qui a développer l'application et d'aller optimiser le code ; comme l'a fait finalement Dimas) dans la mesure du possible et éviter d'avoir "une usine à gaz autour" : créer le chemin le plus cours entre mon NAS et mon DAC...ça reste mon sentiment et j'entends que cela se discute je te rassure !

J'espère avoir répondu à tes questions.

Bonne écoute à toi.
(07-31-2017, 01:52 PM)Olivier a écrit : [ -> ]Pour rappel : http://forum-hifi.fr/thread-139.html

Cry...j'ai mal cherché...je me suis complétement trompé de post !

Je vais contrôler la procédure et voir la partie "optimisation" c'est à dire supprimer tout ce qui est inutile.

En tout cas merci pour le rappel. Smile
Bonjour,

Donc si j'ai bien tout compris ( pas possible..)
Un bon pc i5 et 8go de ram, on installe Fedora, un Docker avec Roonserveur serveur et un deuxième Docker sur le même PC avec Roonplayer.
Plus besoin de bridge et de dual PC.

Et cela ainsi configuré  fonctionne mieux que toute les productions ou DIY actuelles ?

Merci de votre réponse

Alain
Disons qu'il va falloir essayer... Wink

En effet, le but d'une config 2PC, c'est d'avoir un PC serveur qui se tape tout le boulot (dans le cas de Roon, du moins) et un PC player, optimisé, toutefois, au niveau de l'USB avec les cartes SOtM, mais qui ne fait presque plus rien sauf envoyer les données audio les plus propres possible dans le DAC.

Est-ce concevable avec Docker?
(07-31-2017, 02:51 PM)Le dom a écrit : [ -> ]Disons qu'il va falloir essayer... Wink
C'est exactement cela, je n'ai pas encore pu tester j'attends mon matériel pour mettre tout ça "en musique".
Sur le PC on constate une faible utilisation CPU à chaque fois, mais malgré tout on a une meilleure écoute en dissociant physiquement les fonctions, il y a un soucis quelque part ! Je souhaite donc m'appuyer sur Docker pour voir si cela arrange ou pas quelque chose.

(07-31-2017, 02:51 PM)Le dom a écrit : [ -> ]En effet, le but d'une config 2PC, c'est d'avoir un PC serveur qui se tape tout le boulot (dans le cas de Roon, du moins) et un PC player, optimisé, toutefois, au niveau de l'USB avec les cartes SOtM, mais qui ne fait presque plus rien sauf envoyer les données audio les plus propres possible dans le DAC.
Est-ce concevable avec Docker?
Dans tous les cas tu peux utiliser Docker que se soit sur un ou plusieurs PC, reste à voir si cela apporte de meilleure résultats sur un PC avec Docker en effet.
(07-31-2017, 06:46 PM)LittleScarabee a écrit : [ -> ]
(07-31-2017, 02:51 PM)Le dom a écrit : [ -> ]Disons qu'il va falloir essayer... Wink
C'est exactement cela, je n'ai pas encore pu tester j'attends mon matériel pour mettre tout ça "en musique".
Sur le PC on constate une faible utilisation CPU à chaque fois, mais malgré tout on a une meilleure écoute en dissociant physiquement les fonctions, il y a un soucis quelque part ! Je souhaite donc m'appuyer sur Docker pour voir si cela arrange ou pas quelque chose.

(07-31-2017, 02:51 PM)Le dom a écrit : [ -> ]En effet, le but d'une config 2PC, c'est d'avoir un PC serveur qui se tape tout le boulot (dans le cas de Roon, du moins) et un PC player, optimisé, toutefois, au niveau de l'USB avec les cartes SOtM, mais qui ne fait presque plus rien sauf envoyer les données audio les plus propres possible dans le DAC.
Est-ce concevable avec Docker?
Dans tous les cas tu peux utiliser Docker que se soit sur un ou plusieurs PC, reste à voir si cela apporte de meilleure résultats sur un PC avec Docker en effet.

Dans la logique plus de carte à rajouter plus de câble,de connecteur,de transit de flux numérique tout se ferai dans la
 " matrice " .

Peut être faut-il un PC relativement bien pourvu au niveau U.C et RAM ?

Alain
(07-31-2017, 06:56 PM)wgb25 a écrit : [ -> ]Dans la logique plus de carte à rajouter plus de câble,de connecteur,de transit de flux numérique tout se ferai dans la
 " matrice " .

Peut être faut-il un PC relativement bien pourvu au niveau U.C et RAM ?

Alain

En CPU au pire un i3 je dirais, mais c'est surtout la RAM, avec Docker tout est en mémoire il faut donc avoir des barrettes mémoires avec une faible latence (avoir des "timing" sur les mémoires le plus faible pour limiter les latences)...je dois approfondir le sujet !

Par contre : je ne dis pas aujourd'hui que c'est la solution, je partage ma réflexion et les tests que je souhaite réaliser. Si c'est quelque chose que tu souhaites faire, cela sera plus enrichissant, car il faut dans les grandes lignes :
  1. Installer l'OS
  2. Installer CCRMA
  3. Installer Docker
  4. Lancer les packages et tester
Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40