player1:thin client+voyage - player2:futros450+Debian > Usb Transport: I2soverUSB + DAC (6x1704+I/V a tubi) - Attenuatore passivo Lightspeed
Ampli finale: OTL 6C33 - MyRef Fremen Ed. - Diff.: Diapason Adamantes II - Guida LMS+Squeezelite - B
Propongo oggi una patch di affinamento che chi avra' voglia e coraggio di
attuarla rimarra' davvero meravigliato del risultato ottenuto.
Anche questo lavoretto è nato dalla collaborazione fra me e Fabrizio.
Come sempre bisogna lavorare col terminale di Daphile utilizzando Putty.
TIMER Patch
L’intervento sperimentale che viene proposto ora ha lo scopo di
aumentare la precisione dei timer hardware con la finalità di
migliorare il funzionamento dell’ALSA Midi driver per mezzo di Jack .
Per automatizzare gli ordini da impartire al boot
creiamo un file che nella fattispecie è uno script.
Si puo’denominarlo
come si preferisce, per es. pippo:
Andare sulla directory /etc/init.d
Creare un file di testo vuoto che chiameremo ,ad esempio. pippocodice:cd /etc/init.d
Una volta creato aprirlo:codice:touch pippo
una volta aperto scrivere:codice:nano pippo
Salvare il file (CTRL+x > Y > Enter).codice:#!/sbin/openrc-run echo 3072 >/sys/class/rtc/rtc0/max_user_freq modprobe snd-hrtimer
A questo punto rendiamolo eseguibile digitando:
poi lo faremo eseguire ad ogni avvio del sistema in questo modo:codice:chmod +x pippo
Andare in /etc/local.dcodice:rc-update add pippo default
Creare un file vuoto che chiameremo ad esempio pippo.start:codice:cd /etc/local.d
a questo punto aprire il file:codice:touch pippo.start
e scrivere:codice:nano pippo.start
Poi dovremo creare un file vuoto chiamato “60-max-user-freq.conf”codice:/etc/init.d/pippo &
codice:cd /etc/sysctl.dPoi creiamo un file vuoto chiamato “40-timer-permissions.rules “ in /etc/udev/rules.dcodice:touch 60-max-user-freq.conf
Quindi:
codice:cd /etc/udev/rules.d/Fatto questo possiamo procedere con la patch vera e propria.codice:touch 40-timer-permissions.rules
Apriamo il file “40-timer-permissions.rules” :
E scriviamoci:codice:nano 40-timer-permissions.rules
Poi apriamo un altro file “sysctl.conf”codice:KERNEL==”rtc0″, GROUP=”audio” KERNEL==”hpet”, GROUP=”audio”
quindi apriamo il file 60-max-user-freq.confcodice:cd /etc/sysctl.d
scriviamoci :codice:nano 60-max-user-freq.con
riavviare.codice:dev.hpet.max-user-freq=3072
Al riavvio digitare in sequenza , ricordandoci di dare alla fine di ogni comando il tasto”invio” da tastiera.:
codice:sysctl -p /etc/sysctl.d/60-max-user-freq.confcodice:echo -n 3072 | sudo tee /sys/class/rtc/rtc0/max_user_freqcodice:chmod 660 /dev/hpet /dev/rtc0A questo punto riavviare il PC e….buon ascolto.codice:chgrp audio /dev/hpet /dev/rtc0
A stretto giro per decidere se far cadere la mandibola o meno
al riavvio della macchina provate questo comando da terminale:
codice:TASKLETPR=92se vi rendete conto che vi è caduta la famosa mascella inferiorecodice:ps -eLo pid,cmd | grep [t]asklet | awk ‘{ system(“chrt -f -p ‘$TASKLETPR’ ” $1)}’
immettete i due comandi, cosi come sono, nello script di cui abbiamo
parlato raggiungendolo col comando:
poi salvate (CTRL+x > Y > Enter)codice:nano /etc/init.d/pippo
Riavvio della macchina ( potete chiudere la bocca!! )
player1:thin client+voyage - player2:futros450+Debian > Usb Transport: I2soverUSB + DAC (6x1704+I/V a tubi) - Attenuatore passivo Lightspeed
Ampli finale: OTL 6C33 - MyRef Fremen Ed. - Diff.: Diapason Adamantes II - Guida LMS+Squeezelite - B
Ma quanto sei bravo ? chissà se riuscirò mai...
player1:thin client+voyage - player2:futros450+Debian > Usb Transport: I2soverUSB + DAC (6x1704+I/V a tubi) - Attenuatore passivo Lightspeed
Ampli finale: OTL 6C33 - MyRef Fremen Ed. - Diff.: Diapason Adamantes II - Guida LMS+Squeezelite - B
Ho appena installato l'ultima versione di voyage-mpd e non ricordo più quale file devo editare per stoppare mpd e far partire squeezlite in automatico al boot del sistema. Nella versione precedente che avevo funzionava perfettamente, ma non riesco a risalire ai passaggi che feci qualche tempo fa. Non l'ho cancellata la vecchia installazione..magari con un dir per data potrei risalire ai file che ho editato.
Grazie
Inviato dal mio Nexus 7 utilizzando Tapatalk
La cosa piu' semplice da fare e che facevo usando Voyage era fermare il demone MPD dando da terminale:
dopo dando sempre da terminale l'avvio a squeezelite come demone cosi :codice:killall mpd
codice:squeezelite-i386 -z -o front:CARD=X20,DEV=0 -a 100:3:32:1 -b 3072:4096 -u vLE:::28 -r 352800-384000
player1:thin client+voyage - player2:futros450+Debian > Usb Transport: I2soverUSB + DAC (6x1704+I/V a tubi) - Attenuatore passivo Lightspeed
Ampli finale: OTL 6C33 - MyRef Fremen Ed. - Diff.: Diapason Adamantes II - Guida LMS+Squeezelite - B
Grazie bigtube, quello che intendo e che nella vecchia installazione avevo edito un file (quale?!?) che mi faceva partire squeezlite all'avvio senza la necessità di far partire il terminale. É solo una questione di comodità.
Inviato dal mio Nexus 7 utilizzando Tapatalk
Per gli utilizzatori di Daphile propongo ulteriori provvedimenti di sistema
per farlo funzionare al massimo e che si aggiungono ai precedenti già descritti
nei precedenti post.
Per ottenere con parametri corretti del kernel
che il medesimo utilizzi esclusivamente la porta
USB dedicata al DAC bisogna immettere nel file
pippo queste altre voci. fare attenzione a
posizionarle DOPO l’ultima riga del file come
si presenta ai vostri occhi.
dare da terminale :
dopo l’ultima riga immettere :codice:nano /etc/init.d/pippo
Salvare (CTRL+x > Y > Enter )codice:echo 3000 > /proc/sys/vm/dirty_writeback_centisecs echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor > /dev/null 2>&1 echo “suspend” >/sys/bus/usb/devices/usb1/power/level > /dev/null 2>&1 # Choose the best USB port soundwise echo “suspend” >/sys/bus/usb/devices/usb2/power/level > /dev/null 2>&1 # Shutdown the other ports echo “suspend” >/sys/bus/usb/devices/usb3/power/level > /dev/null 2>&1 # lsusb will show you your port echo “suspend” >/sys/bus/usb/devices/usb5/power/level > /dev/null 2>&1
Riavviare
……………………………………………………………..
Renice del processo di scheduling di Squuezelite in Daphile
Il comando “nice” assegna una priorità a tutti i processi che il
kernel propone alla cpu.
Il valore di nice è un attributo numerico di ciascun processo dei
sistemi Unix e Unix-like che è usato dallo scheduler per stabilire
quanto tempo di CPU dedicare all’esecuzione del processo. A parità di
priorità e di politica di schedulazione, i processi che hanno valori di
nice maggiori ottengono in proporzione meno tempo di CPU rispetto a
processi che hanno valori di nice minori, e quindi la loro esecuzione
procede più lentamente, favorendo gli altri processi.
Il valore –20 è il valore massimo quiandi maggiore priorità.
per ottenere questo si imposta per Squeezelite in questo modo:
al posto di x si puo’impostare 24bit ovvero 32bitcodice:nice --20 squeezelite -p 95 -a f:x
dipende dal vostro DAC,quindi fare delle prove è necessario.
Anche questo comando si puo’tranquillamente inserire nel file pippo
sempre inserendo la stringa nell’ultima riga
salvandolo opportunamente e riavviando la macchina.
Utilizzare il server jackd per gestire ALSA.
jackd è un server audio che lavora a bassissima latenza,
in pratica gestisce l’intero motore audio di Linux lavorando
in real time.
viene utilizzato nei sistemi professionali in registrazione
multitraccia, ad esempio, ma anche per altri usi in playback.
in pratica jackd quando viene richiamato da terminale si
interpone come gestore server dello stream fra il kernel
e il mixer ALSA.
per il nostro interesse ai fini della gestione assolutamente
efficiente del player Squeezelite su daphile esistono alcuni
comandi raccomandati che tuttavia possono essere modificati
in alcuni parametri che devono tuttavia essere sperimentati
sulla mcchina (hardware) in uso corrente. Quindi essi possono
essere aggiustati in relazione alla possibilità di essere
in qualche modo “tollerati” dalla macchina medesima senza
che si manifestino i cosidetti x-run cioè delle perdite di
trasferimento dello stream . Siccome si lavora in realtime
è necessario rendersi conto se i parametri impostati non
generino questa condizione di x-run. Bisogna quindi controllare
la shell dopo il comando per verificare la denuncia di x-run.
tipico comando raccomandato in Daphile (player squeezelite):
esaminiamo i parametri:codice:usr/bin/jackd -R -P89 -dalsa -dhw:0 -r44100 -p256 -n3
-n3 :per la usb è consigliato questo valore. Si puo’ provare
ad abbassarlo a 2
-p256 : questo valore di default è 1024 . Si puo’ abbassare
a 256 > 128 >64 >32
-r : di default è 48000 ma puo’ essere impostato qualunque
valore da 44100 > fino a 384000
Tutti parametri dopo -dalsa -dhw:0 sono riferiti ai parametri
di output di ALSA infatti si puo’aggiungere altri parametri:
-P : playback opportuno nel nostro caso perchè non abbiamo
registrazione in corso .Opzionale l’aggiunta del nome del
device . Nel nostro caso X20.
-H : monitor delle porte in cui transita lo stream. Utile
in quanto fà ottenere “zero latenza”nel monitoraggio
dell’input stream .
I parametri tipicamente di jackd che stanno davanti a -dalsa
qui impostati sono :
-R :sta per scheduling realtime
-P :sta per priorità realtime. Si puo’ specificare il valore
facendo attenzione agli altri processi che hanno alta priorità.
Non attribuire valori detenuti da altri processi ma
scegliere valori lievemente piu’ bassi per non generare
conflitti.
opzionali (da valutare)sempre davanti a -dalsa:
-c :clocksource puo’ essere utile specificando hpet
per il nostro kernel disponibile
Questo comando puo’ essere automatizzato all’avvio inserendolo
nel file pippo gia’ creato in precedenza per questo scopo
salvando opportunamente e riavviando la macchina.
Un ulteriore comando al processo di jackd appena visto e che
garantirebbe un piu’ elevato controllo da parte del kernel è
attribuire un valore di nice molto spinto come è stato fatto
per Squeezelite.
per ottenerlo si imposta nel comando visto sopra in questo modo :
Nel file pippo si aggiunge semplicemente il valore di nice comecodice:nice --20 usr/bin/jackd -R -P89 -dalsa -dhw:0 -r44100 -p256 -n3
indicato.
Dopo prove opportune consiglio infine di utilizzare il seguente comando :
……………………………………………………………codice:nice --20 /usr/bin/jackd -R -P 89 -p 8 -c hpet -d alsa -d hw:0 -r 192000 -p 256 -n 3 -P -H
……………………………………………………………
Per un piu’ corretto utilizzo da parte del kernel delle
risorse impegnate proprio nell’assegnamento delle priority
agli elementi dedicati al trasporto dello streaming
in una scala gerarchica ancora piu’ precisa è opportuno
modificare in alcuni parametri il file rtirq.conf
Vediamo come attuarlo:
entriamo nel file dando da terminale :
modificate il file in questo modocodice:nano /etc/rtirq.conf
alle righe di testo indicate :
Modificati questi valori esattamente nella sintassicodice:* RTIRQ_NAME_LIST=”rtc ehci_hcd” * RTIRQ_PRIO_HIGH=”99″ * RTIRQ_PRIO_DECR=”2″ * RTIRQ_NON_THREADED=””
indicata si salva il file nel modo abituale
CTRL+x > Y > Enter
Riavviare
………………………………………………………
una volta eseguite tutte queste configurazioni l’ultimo
tocco consiste nel lanciare nuovamente da terminale il
comando :
questo determina un riaggiornamento delle prioritycodice:rtirq.sh start
creando una perfetta gerachia di lavoro del Kernel
con particolare riguardo ai file che a noi interessano
in particolare cosi squeezelite passa da una priority
di -81 a -94.
La seccatura è doverlo ridare ad ogni riavvio ma si è
ampiamente ripagati.
Nota : Un certo numero di utenti Daphile sta sperimentando tutti questi parametri e provvedimenti mostrati finora e in pratica tutti indistintamente
hanno denunciato un feedback positivo come incremento di prestazione audio pura . Molti asseriscono che Daphile è il miglior player che abbiano
mai sperimentato. Per quanto ne posso sapere io personalmente confermo ampiamente quest'ultima osservazione.
player1:thin client+voyage - player2:futros450+Debian > Usb Transport: I2soverUSB + DAC (6x1704+I/V a tubi) - Attenuatore passivo Lightspeed
Ampli finale: OTL 6C33 - MyRef Fremen Ed. - Diff.: Diapason Adamantes II - Guida LMS+Squeezelite - B
Ci sono attualmente 3 utenti che stanno visualizzando questa discussione. (0 utenti e 3 ospiti)