COS'E' LA FAST DORMANCY
(NB: le informazioni in questa sezione possono non essere totalmente accurate. Suggerimenti e correzioni sono benvenuti)
La Fast Dormancy (FD), è un meccanismo del 3G per entrare in uno stato "dormiente" più veloce nel ricollegarsi al network quando c'è la necessità di trasferire dati. Senza FD gli stati di una connessione 3G sono almeno i seguenti:
- CELL_DHC: Collegato a banda piena - Molto dispensioso sia in termini di batteria del cellulare, sia in termini di congestione del network
- CELL_FACH: Collegato a banda ridotta - Agevola il network ma è comunque molto dispendioso per la batteria
- IDLE: 3G attivo nel telefono ma sconnesso dal network
Il problema nel non avere la FD è che, dopo che il telefono passa allo stato IDLE, per riconnettersi servono circa 2,5s, il che consuma batteria, può provocare un fastidioso senso di lentezza (normale comunque in Italia viste le connessioni da 4o mondo che abbiamo) e aumenta la congestione del network per le continue riconnessioni. Per ovviare a ciò è stato implementato il meccanismo di Fast Dormancy, che altro non dovrebbe fare che aggiungere un quarto stato:
- CELL_PCH: Collegato ma inattivo. La banda è ridotta così come i consumi. Il network sa che il 3G è presente. Nel Next Turbo potrebbe (dovrebbe?) essere lo stato CELL_CCCH
Al solito non è tutto così semplice. Per complicare ulteriormente le cose di FD ce ne dovrebbero essere due:
- La FD normale
- La Network Managed FD
Dove la differenza sostanziale è che nella seconda il 3G delega il network a gestire la FD, mentre nella prima è il 3G a scegliere quando passare da uno stato a un altro, con il network "a rincorrere" questi cambiamenti, aumentando di nuovo la congestione di questo (ma senza sprecare batteria). In questa sede non cercheremo di scoprire che tipo di FD implementa il network, in quanto per i nostri scopi non è rilevante. La buona notizia è che il Next Turbo, come tutti i Samsung Galaxy dovrebbe aver implementati codici per entrambe le FD, quindi dobbiamo scoprire se il nostro network gestisce o meno la FD. Il che ci introduce alla prossima sezione:
FD IN ITALIA
Al momento la situazione della FD con gli operatori italiani sembra essere la seguente:
- H3G (3 Italia): Quasi sicuramente implementa la FD
- Vodafone: Probabilmente implementa la FD
- TIM: Probabilmente non implementa la FD
- Wind: Quasi sicuramente non implementa la FD
E' scopo di questa thread stabilire quali operatori hanno implementato la FD nel network. Si assume, perché altrimenti sarebbe deleterio, che la FD sia implementata o meno su tutto il territorio coperto da un network, e non a macchia di leopardo.
FD SI o FD NO?
Allora il discorso è semplice: se il network implementa la FD, è necessario che il 3G la gestisca a sua volta. In caso contrario è bene che anche il 3G abbia la FD disabilitata. Abilitare la FD nel 3G quando questa non è supportata dal network, oppure il viceversa, è semplicemente fonte di possibili wake-lock a raffica, di 3G attivo quando non serve con conseguenti alti consumi e drain anche immediato (una nottata e si è a zero. Successo a me personalmente) della batteria. In altre parole, da evitare come la peste.
In teoria, o meglio in un mondo ideale, la FD dovrebbe essere già configurata a perfezione dal produttore del telefono per essere abilitata o meno quando collegati a un qualsiasi network nel mondo invece che a un altro. Ma poiché siamo nel mondo reale e abbiamo operato la furbissima scelta di acquistare un dispositivo Samsung, questo a quanto pare non è proprio il caso. Così, tanto per cambiare, dobbiamo provvedere noi con dei mod a configurare la FD come avrebbe dovuto essere sin dall'inizio. Il che ci porta al succo del discorso:
COME CONFIGURARE LA FD NEL NEXT TURBO (BCM21553)
Cercando in Internet/XDA ho trovato la solita tonnellata di informazioni, anche istruttive ma con l'usuale caratteristica di essere fuorvianti: tutti insistono nell'armarsi di sqlite e modificare dei database, quando la configurazione vera e propria viene fatta a livello di file XML di sistema!! I database vengono solo poi creati al boot time e modificati durante l'uso. Poiché noi siamo interessati a una configurazione definitiva dell'FD, che non venga rimossa ricreando l'APN del 3G oppure facendo un wipe data agiremo direttamente su tali file XML, i quali sono:
- /system/csc/customer.xml: Definisce tra le altre cose quali network hanno la FD abilitata
- /system/etc/nwk_info.xml: contiene i parametri della FD. Non è chiaro se valgano anche nel caso che la FD sia disabilitata.
Ovviamente entrambi i file contengono informazioni sbagliate (tra l'altro i file sono salvati in formato MS-DOS invece che Unix, con il Carriage Return/^M a ogni fine linea, a dimostrare con quanta cura Samsung sviluppa le sue ROM). Tutti i network italiani hanno la FD abilitata nel file della CSC, ma solo la 3 ce l'ha configurata. Avrebbe in realtà, in quanto hanno sostituito il nome network H3G con HUI, rendendo tale configurazione se non inutile, perlomeno inesatta e possibile fautrice di problemi.
Passiamo ora alle configurazioni incriminate in entrambi i file
/system/csc/customer.xml:
codice:
<FastDormancy>
<NetworkName>TIM</NetworkName>
<FastDormancyEnableStatus>on</FastDormancyEnableStatus>
</FastDormancy>
<FastDormancy>
<NetworkName>Vodafone</NetworkName>
<FastDormancyEnableStatus>on</FastDormancyEnableStatus>
</FastDormancy>
<FastDormancy>
<NetworkName>WIND</NetworkName>
<FastDormancyEnableStatus>on</FastDormancyEnableStatus>
</FastDormancy>
<FastDormancy>
<NetworkName>WIND BIZ</NetworkName>
<FastDormancyEnableStatus>on</FastDormancyEnableStatus>
</FastDormancy>
<FastDormancy>
<NetworkName>H3G</NetworkName>
<FastDormancyEnableStatus>on</FastDormancyEnableStatus>
</FastDormancy>
Come vedete la FD è abilitata (on in grassetto) nella CSC in tutti i network. Ma come sappiamo, o almeno pensiamo questo non è il caso. Di sicura c'è solo la 3.
/system/etc/nwk_info.xml:
codice:
<!-- Italy -->
<DormPolicy plmn="22299"
nwkname="HUI"
lcdonfdtime="0"
lcdofffdtime="0"
/>
<!-- Austria -->
Qui invece solo la 3 ha i parametri per la FD definiti. Peccato però che in questo file Samsung abbia deciso di cambiargli nome, da H3G del file precedente a HUI, rendendo il tutto come minimo inconsistente. Ovviamente ho già provveduto a modificarlo che H3G e… guarda caso ora sembra funzionare come deve!
Quello che andrebbe fatto, per testare è quindi il seguente. Dovete saper collegarvi collegarvi con adb shell al telefono rooted e dare il comando "su":
- Avere BetterBatteryStats installato con il widget attivo
- Ottenere il plmn della vostra SIM: facilmente ottenibile con il comando "getprop gsm.sim.operator.numeric"
- Aggiungere in /system/etc/nwk_info.xml una sezione per il vostro network, col plmn ottenuto prima e nwkname identico a quello del file customer.xml
- Ricreare l'APN da Impostazioni/Reti Mobili/Access Point Name/Tasto menu/Ripristina impostazioni predefinite: questo aggiornerà i db di configurazione con i nuovi valori nei file XML
- Spegnere e accendere il 3G just in case. Il WIFI DEVE ESSERE DISABILITATO.
- Monitorare con BetterBatteryStats i wakelock, prestando particolare attenzione al knet_wakelock
- Ripetere l'operazione cambiando il FastDormancyEnableStatus in "off" nel file customer.xml, e magari alzando gradualmente i valori (in secondi) di lcdonfdtime e lcdoffdtime
Un altro modo per monitorare cosa succede è collegare il telefono al PC via usb, e con adb installato nel PC e dare il comando:
codice:
adb logcat -v time | grep FastDormancy
Funziona normalmente con Linux/OS X. Altrimenti da Windows DOS prompt date:
codice:
adb shell
logcat -v time | grep FastDormancy
Le informazioni così ottenute dovranno servire a creare i file con le giuste configurazioni per poi essere inseriti nei kernel della serie Cor e nella ROM Optimus. Non sia mai che gli sporadici bootloop con SIM Wind nella Optimus non siano appunto causati da questa errata configurazione. Per non parlare della infausta perdita del segnale quando si è in 3G.
RISULTATI OTTENUTI CON 3 ITALIA:
Prima:
SC20121117-171411.png
Dopo:
SC20121209-133648.png SC20121210-134315.png SC20121211-205721.png