Table of Contents
Samsung Nexus S Android phone
Caratteristiche:
- Schermo 480 x 800 pixels, 4.0 inches
- CPU 1 GHz Cortex-A8
- Memoria: 16 Gb storage, 512 Mb RAM (no card slot)
- Sistema Operativo Android 2.3.4
- Modello GT-I9023, Super Clear LCD per l'Europa. Altro modello GT-I9020 con display Super AMOLED.
Applicazioni da installare subito
Questo l'elenco delle applicazioni installate dal Market Android:
- Navit off-line map and routing.
- OsmAnd off-line map and on-line routing.
- GPS Logger for Android GPS logger, distance tracking disabled due #57 bug.
- OSMTracker for Android Mapper tagging (photo, voice, text, preset, etc.) companion.
- ConnectBot client SSH
- Hacker's Keyboard In modalità orizzontale presenta una tastiera completa di tasti freccia, funzione, ecc. Richiede accesso root.
- Android Terminal Emulator, per la verità non molto utile senza un server SSH (es.
dropbear
) e qualche tool tipobusybox
. Vedere questo articolo. - Barcode Scanner legge codici a barre e QR
- K-9 Mail email reader un po' ostico da configurare. Vedere la struttura dei menu e l'articolo Working With Classes.
- AndroSS Cattura schermata, a scuotimento.
- Viber telefonate VoIP e SMS (non-free)
- AndroSensor mostra lo stato dei sensori (non-free, adware)
- ES File Explorer (non-free) ha la funzione Root Explorer nella versione gratuita.
File Expert(non-free). La funzione Root Explorer è diventata a pagamento nella versione 4.2.2.- Open Manager e OI Gestore File, alternative libere a File Expert e ES File Explorer, ma non hanno la funzione Root Explorer.
- F-Droid market alternativo di app libere.
- ROM Manager installa o aggiorna recovery custom ClockworkMod. Ha bisogno di permessi root.
- aLogcat (non-free), per vedere il log del sistema operativo.
- Beem client chat XMPP
- Emulatore terminale un emulatore terminale, senza aver installato busybox serve a poco!
- External IP mostra l'indirizzo IP privato e pubblico.
- Jota text editor editor di testi.
- Torcia (non-free).
- Easy Voice Recorder Free (non-free), registratore di suoni, no ads, senza limiti di tempo e anche in background.
Operazioni speciali
Spengimento
Tenere premuto il pulsante di accensione fino alla comparsa del menu Silent mode, Airplane mode, Power off.
boot-loader mode
Dopo aver spento il telefono, tenere premuto Volume up mentre si preme il tasto di accensione.
USB debuggging
Da Settings, Applications, Development.
Installazione applicazioni non dal Market
Occorre installare un file manager (ad es. Astro o File Expert vanno bene, ma non è software libero) e abilitare Impostazioni → Applicazioni → Origini sconosciute (Applications → Unknown sources).
Dal PC si carica il file .apk
via cavetto USB (modalità USB-storage) ad esempio nella cartella ReceivedFiles
della memoria SD. Anche nel Nexus S la memoria “saldata” viene comunque vista come scheda SD.
Quindi dal file manager selezionando il file .apk è possibile procedere all'installazione.
In alternativa vedere l'articolo How to Manually Install .APK Files on Android Smartphones che spiega come utilzzare il comando adb install file.apk
fornito dal SDK Android.
Installazione SDK e debug USB
NOTA: La piattaforma ufficiale per lo sviluppo Android è adesso (ottobre 2016) Android Studio, per istruzioni aggiornate vedere gli appunti Android, quello che segue è da considerarsi obsoleto. Ad esempio sembra che non sia più possibile scaricare l'SDK o i Platform Tools come archivi separati.
L'Android SDK è indispensabile per diverse operazioni, ad esempio per sbloccare il boot loader (per guadagnare l'accesso root) oppure per catturare le schermate con l'utility ddms
Dal sito SDK Android, scaricare l'Android SDK starter package:
android-sdk_r16-linux.tgz
. Lo si può scompattare direttamente nella propria home directory, ad esempio $HOME/android/
.
Dal sito SDK Android, scaricare l'ADT (Android Developer Tools) Boundle: adt-bundle-linux-x86-20130717.zip
. Lo si può scompattare direttamente nella propria home directory, creando nel nostro caso $HOME/adt-bundle-linux-x86-20130717/
.
Eseguire i comandi dell'SDK entrando in $HOME/adt-bundle-linux-x86-20130717/sdk/
.
Si esegue tools/android
e si installano gli Android SDK Platform-tools (richiede la connessione internet). Questa procedura scarica nella stessa directory i tool appropriati alla propria piattafroma. Tra gli eseguibuili che verranno scaricati ci sono fastboot
, adb
, ecc.
Sul telefoninio si attiva: Impostazioni → Applicazioni → Sviluppo → Debug USB, quindi si collega il cavetto USB. Sul PC si prende nota dell'ID USB:
lsusb Bus 001 Device 006: ID 18d1:4e22 Google Inc. Nexus S (debug)
Conviene aggiungere una regola udev
, così quando il telefonino è collegato alla porta USB viene creato il device con i permessi giusti. Si crea un file /etc/udev/rules.d/z90-local.rules
:
# Android phone: Google Inc. Nexus S (debug) SUBSYSTEMS=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e22", MODE="0666"
Infine si esegue /etc/init.d/udev reload
.
Accesso root
In generale i passaggi effettuati per avere il maggior controllo possibile del proprio telefonino Android sono i seguenti:
- Sblocco del boot loader. Questa operazione consente di installare sulla memoria flash delle immagini non ufficiali, in generale infatti il boot loader consente di flashare solo immagini firmate dal produttore. In generale le immagini flashabili sono quella del kernel (boot), quella del filesystem di root (system) e quella della modalità Recovery (recovery). A noi interessa installare una Recovery con funzioni speciali, non offerte da quella predefinita. Sul telefonino Nexus S sbloccare il boot loader è semplice e previsto dal produttore Google.
- Installazione di una modalità Recovery con funzioni evolute. In particolare il programma ClockWorkMod Recovery consente di installare dei file .zip prima di avviare il sistema operativo, useremo questa funzione per installare il programma Superuser.
- Installazione del programma
su
(Superuser). Questo consente di eseguire dei programmi con i privilegi di root. Android infatti nella sua versione predefinita non consente di eseguire programmi con tali privilegi.
Riferimenti
Software
- recovery-clockwork-5.0.2.0-crespo.img.gz ClockworkMod 5.0.2.0: ROM modificata per Recovery Mode (de-zippare prima di usare)
- recovery-clockwork-6.0.1.0-crespo.img.gz ClockworkMod 6.0.1.0: ROM modificata per Recovery Mode (de-zippare prima di usare)
- superuser-3.0.7-efghi-signed.zip Superuser, programma per aggiungere la funzione
su
al sistema operativo.
Sbloccare il boot loader
Attenzione! La procedura di sblocco del boot loader cancella tutti i dati personali dal telefono, fare un backup dei dati della memoria SD, annotarsi le impostazioni fatte e le applicazioni installate. Se sono attive le opzioni Impostazioni → Privacy → Backup dei miei dati → Ripristino automatico e Impostazioni → Account e sincronizzazione, allora alcune impostazioni vengono recuperate automaticamente quando si reinstalla un'applicazione, ma la procedura è tutt'altro che completa e chiara.
- Sul PC installare l'Android SDK e scaricare gli Android SDK Platform-tools (vedi sopra).
- Sul telefonino entrare nella schermata del boot loader: spengere il telefono e accenderlo tenendo premuto contemporaneamente Volume-Up e Power. Se compare la scritta
LOCK STATE - LOCKED
il boot loader deve essere sbloccato. - Collegare il cavetto USB tra telefono e PC (compare la scritta
STANDARD_SET_CONFIGURATION
), sul PC eseguire come root il comando:platform-tools/fastboot devices
Se il telefono risulta collegato, è possibile eseguire sempre come root
platform-tools/fastboot oem unlock
Viene chiesta conferma tramite tasti Volume e Power.
Backup Google
Cosa viene recuperato in automatico dal backup di Google:
- Contatti
- Calendario
- Password di accesso WiFi
Cosa non viene recuperato:
- Dati (foto, musica, ecc.)
- Programmi installati
- Impostazioni dei vari programmi
Installare un recovery mode modificato: ClockworkMod
Scaricare il file recovery-clockwork-6.0.1.0-crespo.img, un'immagine per il recovery mode alternativo all'originale, specifico per il Nexus S.
Come salvare la recovery predefinita, quella con il triangolo e il punto esclamativo?
Sul telefonino entrare nella schermata del boot loader accendendolo con i tasti Volume Up e Power. Sul PC eseguire come root:
fastboot flash recovery recovery-clockwork-6.0.1.0-crespo.img
D'ora in poi - scegliendo l'opzione RECOVERY
del boot loader - si attiva la schermata del ClockworkMod Recovery:
ClockworkMod Recovery v.2.5.1.8 - reboot system now - apply sdcard:update.zip - wipe data/factory reset - wipe cache partition - install zip from sdcard - backup and restore - mounts and storage - advanced - +++++Go Back+++++
Installare il programma Superuser
ATTENZIONE! Vedere avanti la versione aggiornata 3.2!
Scaricare il file Superuser-3.0.7-efghi-signed.zip e copiarlo nella SD memory del telefonino. Riavviare il telefonino nella ClockworkMod Recovery e scegliere install zip from sdcard.
Dopo aver riavviato il telefonino, ogni applicativo che ha bisogno di accesso privilegiato presenterà la schermata di richiesta autorizzazioni, vede ad esempio in figura la richiesta di File Expert. La risposta viene salvata in modo da essere utilizzata in futuro.
Arrivati all'aggiornamento Android 4.1.1 Jelly Bean avevamo ancora l'eseguibile /system/bin/su
versione 3.0.3.2 che pare non vada più bene. Infatti alcune applicazioni risultavano registrate e autorizzate, ottenendo i privilegi di root automaticamente, altre invece fallivano silenziosamente senza presentare il prompt di richiesta autorizzazione.
Anche nella finestra dell'Emulatore terminale si aveva questo comportamento anomalo, senza che venisse presentata la finestra con la richiesta di autorizzazione:
$ su -c id root Permission denied
mentre funzionava senza prompt (quindi evidentemente l'operazione era stata autorizzata in precedenza):
$ su # id uid=0(root) god=0(root)
Il problema si è risolto aggiornando l'eseguibile su
con il pacchetto Superuser-3.2-arm-signed.zip. È necessario riavviare in modalità recovery e installare da file .zip. Da questo momento in poi l'applicazione Superuser è tornata funzionante, e - avendo impostato l'opzione Sicurezza → Risposta automatica → Chiedi - ogni volta che un programma ha bisogno dei privilegi di root viene presentato il dialog box di autorizzazione.
Vedere i file di sistema
ATTENZIONE: la funzione Root Explorer è stata rimossa dalla versione gratuita di File Expert (certamente nella versione 4.2.2), adesso è necessario acquistare la Pro Key.
Ad esempio con File Expert si imposta la funzione Menu → Altro → Configura → Impostazioni della navigazione → Root Explorer. In questo modo - se all'applicazione viene concesso il permesso su - sarà possibile vedere il contenuto di alcune directory di sistema, altrimenti inaccessibili.
Un esempio è l'accesso ai file di Navit (bookmark, ecc.), basta sfogliare la directory /data/data/org.navitproject.navit/home/
della memoria interna, che altrimenti risulta inaccessibile.
Con ES File Explorer attivare le seguenti opzioni:
- Menu → Impostazioni → Impostazioni File → Mostra file nascosti
- Menu → Impostazioni → Vai alla radice
- Menu → Impostazioni → Sfoglia come root
Ottenere una shell via SDK
Avendo installato l'SDK sul PC ed avendo abilitato il debug USB è possibile ottenere una shell sul telefonino:
./platform-tools/adb shell $ su # id uid=0(root) gid=0(root) groups=1003(graphics),1004(input),1007(log),... # cat /proc/cpuinfo Processor : ARMv7 Processor rev 2 (v7l) BogoMIPS : 99.40 Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x2 CPU part : 0xc08 CPU revision : 2 Hardware : herring Revision : 0034 Serial : 38353d90950e00ec
Problema DNS con busybox
Dopo aver installato busybox si scopre che la risoluzione dei nomi DNS non funziona, ad esempio con wget
:
wget http://www.rigacci.org wget: bad address 'www.rigacci.org'
Questo perché le librerie utilizzate da Android per la risoluzione dei nomi non sono le stesse utilizzate da busybox
.
Per fortuna è sufficiente creare il file /etc/resolv.conf
per abilitare il tradizionale resolver. Dopo essere entrati con la adb shell
ed aver guadagnato i privilegi di root, si vede che /etc
è un link a /system/etc
, montata read-only. Dopo aver verificato con mount
il nome del device, è possibile ottenere accesso in lettura/scrittura:
mount -o rw,remount /dev/block/platform/s3c-sdhci.0/by-name/system /system
Nel file /etc/resolv.conf
si possono indicare due DNS liberi di Google:
nameserver 8.8.8.8 nameserver 8.8.4.4
Ripristinare il filesystem in sola lettura al termine dell'operazione.
Aggiornamento Android da 2.3.4 a 2.3.6
Una mattina il telefono mi avverte che è disponibile l'aggiornamento alla versione 2.3.6, in effetti so che esiste anche l'aggiornamento alla versione 4, ma suppongo che si debba fare un passo per volta. Il file di 17 mega è arrivato OTA (On The Air), ma non si sa in quale directory è stato salvato. Accetto l'installazione.
Il telefono si riavvia e compare l'icona di una scatolina che si apre, una barra di avanzamento fa capire che il processo è in corso. Dopo pochi istanti si blocca tutto e compare un'icona triangolare con punto esclamativo: mi tocca rimuovere la batteria.
Al boot successivo nessuna traccia dell'aggiornamento, anche dal menu Impostazioni, Info sul telefono, Aggiornamento sistema risulta aggiornato, sebbene la versione sia sempre la 2.3.4.
Dopo qualche giorno l'aggiornamento OTA ci riprova, ma con lo stesso risultato negativo. Probabilmente il fallimento è dovuto al fatto che il mio telefono ha il boot loader sbloccato oppure al fatto che ho sostituito la recovery originale con la ClockworkMod.
Googolando un po' trovo il file .zip con l'aggiornamento specifico per il mio Nexus S, lo scarico e lo salvo nella radice della sdcard con il nome update.zip
. Spengo il telefono e lo riaccendo con i tasti Vol-up e Power, dal boot menu entro nella recovery ClockworkMod. Qui scelgo l'opzione di installare la update.zip
e finalmente l'aggiornamento va a buon fine.
Ecco una copia salvata dell'update.zip.
Ci sono però due inconvenienti: la recovery ClockworkMod è stata cancellata (sovrascritta dalla recovery originale Android) e il comando su
ha smesso di funzionare (non ha più i permessi SETUID e SETGID). Anzi la situazione è ancora peggiore: se installiamo una recovery alternativa (es. ClockworkMod), questa viene sostituita dall'originale ad ogni reboot, per colpa dello script /etc/install-recovery.sh
.
Per venire a capo della situazione questa è la ricetta:
- Copiare l'archivio Superuser-3.0.7-efghi-signed.zip nella sdcard.
- Entrare in modalità fastboot e con il tool
fastboot
dell'SDK flashare la recovery ClockworkMod (vedi sopra). - Senza riavviare, entrare in modalità recovery ClockworkMod e installare Superuser dalla sdcard.
- Riavviare il telefono.
Al termine di questa operazione avremo su
funzionante, ma la recovery ripristinata originale. Bisogna disattivare lo script /etc/install-recovery.sh
. Aprire una shell eseguento l'applicazione Emulatore terminale oppure adb shell
dall'SDK, guadagnare i privilegi di root, montare il filesystem in lettura/scrittura e rinominare install-recovery.sh
:
$ su # mount -o remount,rw /dev/block/platform/s3c-sdhci.0/by-name/system /system # mv /etc/install-recovery.sh /etc/install-recovery.sh.bak # mount -o remount,ro /dev/block/platform/s3c-sdhci.0/by-name/system /system
A questo punto potremmo finalmente installare la nostra recovery ClockworkMod in modo permanente. Possiamo usare il metodo tradizionale con fastboot
(vedi sopra) oppure utilizzare l'applicativo ROM Manager che si occupa di trovare la versione più aggiornata disponibile (nel mio caso la 5.0.2.0). Il programma ROM Manager chiede conferma del modello di telefono, nel mio caso ho indicato Google Nexus S.
Volendo salvare l'immagine ClockworkMod scaricata da ROM Manager (ad esempio per poterla flashare in futuro da PC con il tool Android fastboot
come indicato sopra), basta andare a cercare il file nella directory /sdcard/clockworkmod/download
. Dovrebbe essere un file di circa 4 Mb. Ecco un modo per portarlo sul PC con il tool Android adb
:
./platform-tools/adb pull /sdcard/clockworkmod/download/1467945360 recovery-clockwork-5.0.2.0-crespo.img
Aggiornamento Android da 2.3.6 a 4.0.4
Una mattina il telefono mi avverte che è disponibile l'aggiornamento alla versione 4.0.4 (Ice Cream Sandwitch). Il file di circa 128 Mb è arrivato OTA (On The Air) ed è stato salvato nel file /cache/fL9fwa99.zip
. Viene proposta l'installazione, ma questa non va a buon fine, probabilmente perchè ho la recovery ClockworkMod invece di quella originale Android.
Per effettuare l'installazione copio il file fL9fwa99.zip
nella directory /sdcard/
, spengo il telefono e lo riaccendo con i tasti Vol-up e Power, dal boot menu entro nella recovery ClockworkMod e qui scelgo l'opzione install zip from sdcard. Tutto pare procedere correttamente.
Ovviamente dopo l'aggiornamento si è perso il privilegio di root e la recovery ClockworkMod non funziona più (compare l'icona di un robottino Android morto con triangolo rosso e tocca rimuovere la batteria). Per ripristinare accesso root e ClockworkMod si esegue la procedura di 4 passaggi più uno indicata nel paragrafo precedente.
Nell'aggiornamento viene mantenuto il file /etc/resolv.conf
personalizzato (vedi sopra riguardo busybox
).
Problemi riscontrati con la nuova versione
- La luminosità automatica del display non funziona: viene lasciato al minimo senza alcuna variazione in base al fotometro. Vedere il bug 23095.
- Sono spariti i controlli zoom + e zoom - che comparivano quando si scorreva una pagina nel browser.
- Se in una finestra terminale si esegue la shell
ash
ad ogni comando compare il messaggio di erroreash: precmd: not found
.
Aggiornamento Android da 4.0.4 a 4.1.1 (Jelly Bean)
L'aggiornamento sul telefonino Nexus S è stato proposto automaticamente On The Air, scaricato nottetempo via connessione 3G (115 Mb). L'installazione automatica non è stata provata, probabilmente sarebbe fallita a causa dell'installazione della Recovery non originale ClockWorkMod. Quella che segue è la procedura manuale di aggiornamento, necessaria a mantenere la Recovery ClockWorkMod e i permessi di Superuser.
Accertarsi di avere installato sul PC l'SDK Android ed avere sul PC l'immagine della recovery ClockWorkMod. In pratica sul PC occorre avere i seguenti file:
platform-tools/fastboot
recovery-clockwork-5.0.2.0-crespo.img
Copiare nella sdcard i seguenti file:
9ZGgDXDi.zip
, il file viene scaricato On The Air automaticamente in/cache/
, bisogna copiarlo in/sdcard/
Superuser-3.0.7-efghi-signed.zip
pare funzionare correttamente anche sulla versionej
(4.1.1, Jelly Bean).
Conviene aver installato sul telefonino anche il programma ROM Manager dal Play Store di Google.
- Installazione dell'aggiornamento. Riavviare in modalità Fastboot e quindi entrare in modalità Recovery (noi avevamo già installato la recovery ClockWorkMod in precedenza): spengere il telefono e riaccendenderlo con i tasti
Vol-up
+Power
. Con i tastiVol
si sceglieRECOVERY
e si conferma conPower
, si sceglie install zip from sdacard, quindi si indica il file9ZGgDXDi.zip
. Al termine fare un reboot del telefono e far completare l'aggiornamento. - Ripristinare la recovery ClockWorkMod. La recovery personalizzata viene corrotta dall'aggiornamento, se si tenta di avviarla compare il robottino morto con il triangolo rosso e dopo qualche minuto si riavvia normalmente. Per reinstallare la ClockWorkMod spengere il telefono e riavviarlo in modalità Fastboot con
Vol-up
+Power
, quindi dal PC collegato via USB lanciare./platform-tools/fastboot flash recovery recovery-clockwork-5.0.2.0-crespo.img
Servono i privilegi di root o comunque i permessi sul device USB.
- Ripristinare Superuser. Anche il programma
su
installato per poter eseguire i programmi con privilegi di amministratore è andato perso con l'aggiornamento. Senza neanche riavviare il telefono, entrare nella modalità Recovery appena ripristinata e scegliere install zip from sdcard, quindi indicare il fileSuperuser-3.0.7-efghi-signed.zip
. Al termine riavviare il telefonino. - Disabilitare la funzione che ripristina la recovery ad ogni reboot. Il sistema Android elimina la ClockWorkMod Recovery ad ogni reboot tramite lo script
/etc/install-recovery.sh
. Un sistema per disabilitare questa funzione è illustrato sopra, altrimenti usando il programma ROM Manager i passaggi sono questi:- Avviare ROM Manager, installare la ClockWorkMod 6.0.1.0 via WiFi oppure da sdcard, ma ha funzionato anche via connessione 3G.
- Sempreda ROM Manager riavvare in modalità Recovery.
- Dalla modalità Recovery selezionare reboot, quindi attivare l'opzione Disable recovery flash.
Problemi riscontrati con la nuova versione
- Viber non funziona più. Problema riconosciuto con Viber 2.2.
Aggiornamento a 4.1.2
Arrivato On The Air l'aggiornamento di 15 Mb circa: 9U4MCfNt.zip
. Bisogna spostarlo dalla directory /cache/
a /sdcard/
.
Con la recovery ClockworkMod 6 è possibile fare l'installazione senza perdere la recovery e l'accesso root.
In pratica si entra in modalità recovery e si installa il file 9U4MCfNt.zip
dalla sdcard. Quando si sceglie di riavviare il telefono, ClockworkMod 6 chiede se preservare la recovery attuale (cioè viene disabilitata la funzione di ripristino della recovery ad ogni reboot di Android) e riabilitare i permessi di su
(accesso root).
In caso qualcosa andasse storto (recovery, accesso root) è necessario recuperare i seguenti file ed eseguire la procedura descritta sopra per l'aggiornamento a 4.1.1:
9U4MCfNt.zip
Superuser-3.2-arm-signed.zip
platform-tools/fastboot
recovery-clockwork-6.0.1.0-crespo.img