mercoledì 8 gennaio 2014

Un viaggio attraverso il kernel - Parte 3







Rieccoci con l'ultimo dei 3 (aka 4) post riguardanti l'editoriale sul viaggio attraverso il kernel.
A causa di altri progetti (vedi progettazione della KlaEx-rom), sono stato quasi costretto a non concentrarmi su questo ultimo articolo. Oggi finalmente ne ho trovato il tempo, per cui eccovelo.

Come vi avevo promesso nel primo post, questo terzo ed ultimo capitolo della saga, sarà concentrato sul kernel Dorimanx (che vi ricordo è basato sul Siyah kernel di GokhanMoral). 
Perché questo kernel e non gli altri? 
Premettendo che anche gli altri kernel (CM, AOSP, Apolo, KangBang, Jeboo, Philz etc) sono ottimi, il Dorimanx ha una marcia in più: conferisce all'utente la piena libertà su ogni aspetto, il che fa sì che sia l'utente ha decidere come il proprio smartphone debba funzionare.
Nota bene: purtroppo il Dorimanx è disponibile solo per Samsung Galaxy SII. Ciò non toglie che, sebbene non esista un kernel simile per altri device, questo non possa essere tweakato tramite gli script menzionati nei post precedenti.

Un (altro) punto di forza del kernel Dorimanx è la sua applicazione (sviluppata da GokhanMoral) Stweaks che permette di relazionarsi con le modifiche da apportare al kernel tramite un'interfaccia grafica (GUI), il che rende il tutto quasi fool-proof.
È proprio Stweaks l'aspetto che andremo ad analizzare: questa applicazione, composta da 19 schede, ci da totale e pieno accesso praticamente a tutto il kernel ed è configurabile all'inimmaginabile. Molti parametri sono astrusi, ma è lo scopo di questa guida fare un po' di luce al riguardo.
All'avvio, l'app impiega qualche secondo per caricare tutti i moduli necessari al suo funzionamento e, non appena pronta, mostra questa prima schermata:


Come abbiamo detto prima, l'applicazione consta di 19 schede:
  • 5 dedicate alla CPU
  • 1 dedicata alla memoria RAM
  • 2 dedicate alla GPU/schermo
  • 1 per il suono
  • 1 per i BLN (backlight notification)
  • 3 per i settaggi vari
  • 5 per i settaggi dell'applicazione
  • 1 per il dual boot
Andiamo a vederle una per una:

Schede della CPU

La CPU di ben 5 schede nell'app di Stweaks. Vediamo i vari parametri per ogni scheda:
La prima, CPU, annovera come valori:
BOOT CPU FREQUENCY, ossia il valore che la CPU deve mantenere all'accensione del device. È sempre opportuno mantenere il massimo valore possibile (1.2ghz) o anche overclockare per consentire al telefono di assolvere tutte le mansioni che gli competono ad ogni boot.
CORTEX WAKEUP BOOST, il tempo durante il quale la CPU resterà al valore sopra.
MAX NORMAL FREQUENCY, la frequenza normale della CPU, è un valore da lasciare invariato, poiché dipende dal successivo.
MAX OC FREQUENCY, frequenza di overclock massima.
MIN FREQUENCY, frequenza minima di clock. Non scendere mai sotto i 200000khz (200mhz).
GENTLE FAIR SLEEPERS, valore che determina la priorità dei processi. Lasciarlo disabilitato rende il telefono più reattivo.
ARCH POWER, è consigliato lasciarlo attivato, poiché attiva le funzioni dell'ARM topology power invece di quelle generiche.
CPU IDLE MODE, imposta il comportamento della cpu quando non ha carichi di lavoro, è consigliato l'uso di AFTR + LPA.
CPU IDLE MODE (SLEEP MODE), come sopra, ma in stato di sleep, anche qui il valore opportuno è AFTR + LPA.
BUSFREQ_UP_THRESHOLD, imposta la soglia per passare alla frequenza di bus successiva. Il valore consigliato è 25%.
BUSFRQ_UP_THRESHOLD_SLEEP, come sopra, ma in stato di sleep del telefono.
SCALING_MAX_SUSPEND_FREQ, è la massima frequenza che raggiunge la cpu in stato di sleep. Valori più bassi di 800mhz freezeranno il device.
SCALING_MIN_SUSPEND_FREQ, è invece la frequenza minima.
SCALING_MIN_STANDBY_FREQ, frequenza minima durante le chiamate o la riproduzione di musica. Se sentite a scatti, aumentatela a 300mhz o 400mhz.

La seconda scheda riguardante la CPU è CPU-VOLTAGE, che, com'è possibile intuire, è dedicata ai voltaggi delle frequenze della CPU.

CPU VOLTAGE MAIN SWITCH, è il parametro che abilita tutte le funzioni sotto di esso. Se disabilitato, i valori impostati sotto non verranno considerati.
CHECK CPU VOLTAGE GROUP, controlla i voltaggi impostati finora relegati in gruppo. Per il Galaxy SII il gruppo è il 3.
CHECK ACTIVE CPU VOLTAGE, controlla i voltaggi impostati al momento.
CPU VOLTAGE 1600MHZ ~ 100 MHZ, sono i valori per ogni step di frequenza. È consigliato undervoltare per un massimo di 50mV. Valori di -75mV sono possibili, ma sconsigliati.

La terza e la quarta scheda sono CPU-TUNING-AWAKE e CPU-TUNING SLEEP e ci faranno avere il controllo sugli step di frequenza in stato awake (screen on) e sleep (screen off).

DEFAULT CPU GOVERNOR, è il parametro che ci farà decidere quale governor utilizzare. Vedere la seconda parte dell'editoriale per saperne di più su quale governor impostare.
GOV POLICY INSTALL , impartisce tutti i cambiamenti al governor in tempo reale.
UP_THRESHOLD, quando il carico della cpu è uguale o superiore alla percentuale impostata, il governor scala uno step di frequenza.
UP_THRESHOLD_AT_MIN_FREQ, stesso valore di sopra, ma utilizzato quando si è a frequenze minori.
SAMPLING_RATE, intervallo di campionatura del tempo che il governor interroga la cpu.
SAMPLING_DOWN_FACTOR, agisce come moltiplicatore per l'intervallo di sopra.
FREQ_STEP, definisce la percentuale di aumento della frequenza per certi carichi di lavoro.
DOWN_DIFFERENTIAL, altro parametro di campionamento della cpu.
FREQ_FOR_RESPONSIVENESS, campionamento del governor per trovare il prossimo step di frequenza. È opportuno lasciarlo invariato.
DOWN_THRESHOLD, quando la cpu assume un valore pari o inferiore a quello determinato, il governor scala una frequenza verso il basso.
CPU_UP_RATE, numero di campionamenti per passare la cpu ad uno step superiore.
CPU_DOWN_RATE, stesso di sopra ma in direzione opposta.
INC_CPU_LOAD_AT_MIN_FREQ, soglia utilizzata per il campionamento a frequenze basse.
INC_CPU_LOAD, come sopra, ma a tutte le frequenze.
DEC_CPU_LOAD, valore sotto al quale, la cpu scatta allo step inferiore.
FREQ_FOR_RESPONSIVENESS_MAX, valore massimo di frequenza per il governor Nightmare.
FREQ_STEP_AT_MIN_FREQ, definisce il carico al quale la cpu scala da bassa frequenza.
FREQ_UP_BRAKE_AT_MIN_FREQ, parametro di controllo del governor Nightmare per lo scaling delle frequenze.
FREQ_UP_BRAKE, FREQ_STEP_DEC, FREQ_STEP_DEC_AT_MAX_FREQ, UP_SF_STEP, DOWN_SF_STEP, come sopra.
HOTPLUG_ENABLE, abilita il controllo dell'intelliplug, ossia la sincronia dei core.
HOTPLUG_FREQ_FST, determina a quale frequenza viene abilitato l'hotplug del secondo core.
HOTPLUG_FREQ_SND, determina a quale frequenza viene disabilitato il secondo core.
UP_LOAD, la frequenza alla quale la cpu scala verso l'alto nell'hoplugging mode.
DOWN_LOAD, come sopra, ma in direzione opposta.
FORCE_FREQS_STEP, indica quanti step di frequenza devono esistere. 16 permette un minor consumo.
SAMPLING_DOWN_MAX_MOM, SAMPLING_DOWN_MOM_SENS, UP_THRESHOLD_HP_FST, UP_THRESHOLD_HP_FREQ_FST, DOWN_THRESHOLD_HP_FREQ_FST, SMOOTH_UP, FREQ_LIMIT, FAST_SCALING, EARLY_DEMAND, GRAD_UP_THREASHOLD, DISABLE_HOTPLUG, sono gli stessi parametri descritti finora, ma applicati per il solo governor zzmoove.

La quinta scheda è quella dedicata allo scheduler e si chiama IO:

KILOBYTES TO READ-AHEAD, numero di kb da leggere in anticipo sul file system della sd esterna. È cosa giusta lasciarlo in AUTO.
DEFAULT AWAKE IO SCHEDULER e STANDBY AND DEEPSLEEP IO SCHEDULER, impostano gli scheduler per il profilo awake e per il profilo sleep.

La sesta scheda è quella dedicata alla memoria e si chiama Memory:

AUTO-OOM abilita il controllo auto oom usando i profili che troverete sotto. È necessario disabilitarlo se lo si vuole tweakare.
OOM LEVEL TUNING SCREEN ON e OOM LEVEL TUNING SCREEN OFF tweakano la gestione della memoria attraverso la funzione lowmemkiller a schermo ON ed OFF. Valori maggiori indicano un comportamento più aggressivo con maggiore RAM libera, ma anche più app killate.
DIRTY BACKGROUND RATIO e DIRTY RATIO modificano il valore per creare buffer per le operazioni in background.
CLEAN RAM CACHE imposta il valore per la pulizia della cache RAM e restituisce tutta la RAM in cache e usata per il buffer.
ZRAM SETTINGS gestisce dei blocchi di RAM compressi usati come swap. Percentuali di compressione maggiori sono indicati per device con meno RAM.
SWAPPINESS imposta l'uso della partizione di swap.
ZRAM STATS controlla lo stato attuale della ZRAM.
ULTRA KSM-CONTROL Abilita/disabilita il controllo di KSM. Questo integra una certa quantità di memoria ma consuma cicli di CPU e batteria. Dipende dal servizio Cortex backround e necessità di reboot o di uno stop/riavvio del servizio Cortex background.

- ULTRA KSM STATS
Controlla lo stato attuale del KSM.


GPU

GPU CONTROL
Settaggi riguardanti utilizzo/step/voltaggio/frequenza della GPU. Le frequenze predefinite sono 108, 160, 200, 267 e 267. I voltaggi predefiniti sono 900, 950, 1000, 1050 e 1050.

- VPLL MODE
L'abilitazione del VPLL mode può rendere instabili alcuni device perciò non lamentarti se il tuo terminale presenta lag o SOD. Se non lo usi i seguenti step di frequenza non saranno disponibili: 330, 440, 520. VPLL è un nuovo range di frequenze per dare ad alcuni utenti maggiori performance GPU. USALO A TUO RISCHIO!

- GPU UTILISATION TIMEOUT
Qui puoi cambiare i tempi di passaggio tra i vari step della GPU. Valori più vicini al 100 (0.1 sec) garantiscono una risposta più veloce nel salto tra gli step, ma comportano un maggiore consumo di batteria.

- GPU FREQUENCY STEP X
I valori di frequenza dei vari step della GPU.

GPU VOLTAGE LEVELS
I valori del voltaggio della GPU. Quelli predefiniti sono 900, 950, 950, 1000 e 1050. ATTENZIONE! Voltaggi superiori a 1200mV possono comportare dei rischi! Puoi bruciare il chip della GPU!

- GPU VOLTAGE LEVEL X
I valori di voltaggio dei vari step della GPU.

GPU THRESHOLDS
Le soglie di carico per il passaggio tra i vari step della GPU. UP indica la percentuale di carico necessaria per passare allo step successivo. DOWN indica la percentuale sotto la quale si scende allo step precedente.

- GPU THRESHOLD X
Le soglie di carico per il passaggio tra i vari step.


SCREEN

BRIGHTNESS CURVE
Questi setting modificano il comportamento della luminosità automatica.

- MIN_BL
Impostando valori più alti lo schermo resterà ad un livello di luminosità più basso in condizioni di luce più forte.

- MIN_GAMMA
Il livello minimo di luminosità.

- MAX_GAMMA
Il livello massimo di luminosità.

- LCD POWER
Se si preferisce uno schermo più luminoso, a scapito della batteria, disabilitare questo componente.

SCREEN COLOR MENU
Modifica manualmente la scala cromatica.

- RESET COLOR TO DEFAULT
Ripristina la scala cromatica predefinita.

- BLUE, RED COLOR SCALE
Modificano la scala cromatica del blu e del rosso.

- MDNIE SHARPNESS TWEAKS BY GM!
Rende lo schermo più nitido e i contorni più definiti. Per avere effetto richiede un reboot.

OTHER SETTINGS

- GAMMA SHIFT
Cambia la gamma verso l'alto o verso il basso. Valori al di sotto dello 0 comportano una minore luminosità dello schermo e viceversa.

- FB EARLY SUSPEND DELAY
Imposta il ritardo dell'effetto CRT quando si spegne lo schermo.

- VIBRATION FORCE
Modifica l'intensità della vibrazione.

- SLIDE2WAKE ON/OFF SWITCH
Quando lo schermo è spento con uno swipe da sininstra a destra sullo schermo possiamo far si che il tel si accenda senza usare tasti fisici (By Fluxi@xda).

- MDNIE NEGATIVE TOGGLE
Abilita i colori invertiti (negativo) dello schermo premendo ripetutamente il tasto home.

- NEGATIVE SCREEN MOD TUNING
Da qui scegliamo con quanti click ripetuti del tasto home attivare la modalità a colori invertiti.

GESTURES PANEL
Controlla le gesture dello schermo modificabili da data/gesture_set.sh. L'utente può aggiungerne altre. Questa funzionalità dipende dall'abilitazione del 'cortex background-process' nella sezione TWEAKS.

- GESTURES SWITCH
Interruttore per abilitare le gesture.

- RESET GESTURES
Serve a resettare le gesture al livello predefinito o a effettuare un update con nuove gesture.

TOUCH SCREEN SENSITIVITY
Configurazione del touchscreen con alimentazione a batteria e da caricatore. ATTENZIONE! Valori errati renderanno il touchscreen inutilizzabile! Dovrai resettare i profili in recovery! Inoltre i settaggi per alimentazione a batteria e da caricatore sono diversi! Non impostare gli stessi valori!

- CHECK TOUCH SCREEN INFO
Premi per vedere il tipo di touch screen e la configurazione attiva. Può essere TSP MX224 O MX224E, quindi se vuoi configurarlo fallo nelle sottosezioni corrette.

- BATT TOUCH THRESHOLD 
Imposta la soglia del touch con alimentazione a batteria. Con un valore più alto si ha una minore potenza del touch ma una maggiore precisione.

- BATT NOISE THRESHOLD
Imposta la soglia di disturbo al tocco con alimentazione a batteria. Con un valore più alto si ha un disturbo minore però una minore sensibilità del touch.

- BATT MOVE FILTER 
Imposta la sensibilità di movimento del touch con alimentazione a batteria. Un valore più basso offre una sensibilità maggiore.

- CHRG TOUCH THRESHOLD 
Imposta la soglia del touch quando il device è in carica. Con un valore più alto si ha una minore potenza del touch ma una maggiore precisione.

- CHRG NOISE THRESHOLD
Imposta la soglia di disturbo al tocco quando il device è in carica. Con un valore più alto si ha un disturbo minore però una minore sensibilità del touch.

- CHRG MOVE FILTER 
Imposta la sensibilità di movimento del touch quando il device è in carica. Un valore più basso offre una sensibilità maggiore.


SOUND 

LOW SOUND FIX
Fix per il bug del volume basso al boot su rom JB

- JB LOW SOUND FIX ON BOOT
Questa patch diminuirà e aumenterà velocemente il volume in avvio, fixando il problema dell'audio basso al boot su rom JB. Vedrai la barra del volume muoversi! In più eliminerà il 'silenzioso' se impostato prima dell'avvio. Con rom ICS ignorare questo setting. E' impostato su OFF di default, se lo attivi, sarà attivo solo all'avvio.

HEADPHONE AMPLIFICATION
Impostazioni per aumentare la potenza audio con cuffie inserite.

- HEADPHONE AMPLIFIER
Amplificatore audio in cuffia (i valori corrispondono a 0db; +1,5db; +3db; +6db).

VOLUME LEVELS AND GAIN CONTROL
Ulteriori amplificatori per il suono in cuffia, tramite speaker e per il microfono.


BLN
Impostazioni che riguardano l'uso della retroilluminazione dei tasti soft touch per la notifica di chiamate o messaggi ricevuti.

- BLN
Attiva o disattiva il BLN.

- BLN EFFECT
Imposta il comportamento dei led (gli effetti) per il BLN. !README! Se il BLNWW è attivo il led resterà acceso senza effetti!

- NOTIFICATION_TIMEOUT
Imposta il tempo di durata delle notifiche tramite led. !README! Se il BLNWW è attivo questo setting sarà ignorato e resettato su !Never timeout!

TOUCH KEYS LIGHT SETTINGS
Qui puoi impostare il comportamento dei led dei pulsanti softouch.

- LED_TIMEOUT
Tempo di accensione dei led. Usa "Rom defaults" se la tua ROM incorpora già il supporto al timeout dei led (richiede un reboot). Dovrai usare questo setting su ROM Samsung se vuoi usare l'effetto dissolvenza dei led (LED FADEOUT).

- BLNWW
Sistema di notifica BLN senza Wakelock. Non utilizzabile con effetti blinking e breathing. Abilitandolo la CPU resterà in stato di sleep durante il BLN con risparmio di batteria.

- LED FADEOUT
Dissolvenza dei led prima dello spegnimento. Con ROM Samsung dovrai settare come sempre accesi o sempre spenti i led dal menu della rom e usare LED_TIMEOUT in STweaks.

- LEDS ON WITH TOUCH
Attivazione dei led quando si tocca lo schermo (solo con LED_TIMEOUT abilitato).

- TEST BLN 
Verifica il funzionamento del BLN. Attivarlo e spegnere lo schermo per vedere il risultato.

- LED VOLTAGE LEVEL
Controlla la potenza dei led.

- AUTO LED VOLTAGE
Automatizza il livello di voltaggio dei led in base alla luminosità esterna. Esclude il valore impostato in LED VOLTAGE LEVEL.


OTHER

CRON 
Da qui puoi attivare alcuni script che ti permetteranno di effettuare alcune operazioni di manutenzione ad orari prefissati, in background.

- CRON TASK MAIN SWITCH
Interruttore principale. Se impostato su OFF nessuno dei setting successivi avrà effetto.

- TEST CRON TASK SERVICE
Usa questo pulsante per verificare se il servizio CRON TASK è ONLINE e supportato. Se l'interruttore principale in alto è impostato su ON e il servizio è OFFLINE, allora il Busybox della ROM non supporta CRON TASK. Aggiorna Busybox o la rom per rendere il servizio funzionante.

- CRON RESET
Pulsante per resettare gli script di CRON e aggiornare la configurazione. Cancellerà tutti i cambiamenti fatti!

- CLEAN FILE-CACHE
Pulizia della cache dei file ogni ora, soltanto se la CPU è a riposo ed è usata più del 50% della memoria (libera memoria RAM).

- UPDATE AD-BLOCK 
Aggiornamento di AD-BLOCKER il sabato alle 6 UTC ogni settimana dal sito ufficiale. Questa utility verificherà se è presente una connessione internet. Se così non fosse proverà a connettersi in WIFI e terminato l'aggiornamento spegnerà la connessione. In mancanza di connessione un errore sarà aggiunto nei log.

- DB OPTIMIZATION
Ottimizza il database delle apps ogni giorno alle 3, solo se la CPU è a riposo.

- CLEAN APP-CACHE
Pulisce la cache delle app ogni giorno alle 4, solo se la CPU è a riposo (mantiene spazio libero nella partizione dati e pulisce tutti i vecchi dati inutilizzati).

- FIX APP PERMISSION
Effettua un fix permission ogni giorno alle 4.40, solo se la CPU è a riposo (può aiutare a ridurre errori, bug e FC delle app).

- ZIPALIGN TASK
Effettua lo zipalign di tutti i dati delle app ogni giorno alle 4.50, solo se la CPU è a riposo (può aiutare a ridurre errori, bug e FC delle app, e migliorare la velocità di apertura delle app stesse). ATTENZIONE! Fai un backup delle tue app prima di usarlo. Questo processo rimuoverà tutte le app che sono danneggiate e non compresse o compilate correttamente, perciò potresti veder sparire qualche app. Usalo a tuo rischio e aggiorna le app danneggiate!

- TEST CRON TASK JOBS
Pulsante per testare se il servizio CRON TASK sta lavorando come richiesto. Mostra i log dei lavori completati.

Gli altri punti sono più o meno superflui ed opinabili per quanti riguarda il funzionamento del telefono e per questo li tralascieremo.
Questo è tutto quello che riguarda questa splendida app e soprattutto per quanto riguarda il kernel Dorimanx, quello che, a mio avviso, concede la massima libertà di manovra e configurabilità.
Se siete su ROM JellyBean (sia stock che AOSP) potete fare uso del Dorimanx 9.xy. 
Purtroppo se usate una ROM KitKat non potrete usufruire delle build ufficiali del Dorimanx, ma comunque le build unofficial ci vengono incontro.

Vi lascio col thread italiano sul Dorimanx che potete trovare su Androidiani.com


Si conclude qui questo sterminato viaggio cominciato agli inizi di novembre e terminato solo ora, all'anno nuovo. Vogliate perdonarmi per l'attesa, voi che riuscite a sopportare questi interminabili scritti noiosi, compatibilmente con la mia vita, mi diverto a condividere quel (poco) che so e lo faccio con piacere.
Allora significa alla prossima, magari con qualche ROM basata su 4.4.x!