User Tools

Site Tools


doc:appunti:hardware:nexus_s

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:

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 ImpostazioniApplicazioniOrigini sconosciute (ApplicationsUnknown 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: ImpostazioniApplicazioniSviluppoDebug 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:

  1. 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.
  2. 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.
  3. 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

Sbloccare il boot loader

Fastboot Bootloader Bootloader with USB connected Bootloader unlock confirm Unlocked boot Default Recovery Mode ClockworkMod Recovery Mode Program requesting superuser privileges

:!: 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 ImpostazioniPrivacyBackup dei miei datiRipristino automatico e ImpostazioniAccount e sincronizzazione, allora alcune impostazioni vengono recuperate automaticamente quando si reinstalla un'applicazione, ma la procedura è tutt'altro che completa e chiara.

  1. Sul PC installare l'Android SDK e scaricare gli Android SDK Platform-tools (vedi sopra).
  2. 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.
  3. 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.

FIXME 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 SicurezzaRisposta automaticaChiedi - 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 MenuAltroConfiguraImpostazioni della navigazioneRoot 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:

  • MenuImpostazioniImpostazioni FileMostra file nascosti
  • MenuImpostazioniVai alla radice
  • MenuImpostazioniSfoglia 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:

  1. Copiare l'archivio Superuser-3.0.7-efghi-signed.zip nella sdcard.
  2. Entrare in modalità fastboot e con il tool fastboot dell'SDK flashare la recovery ClockworkMod (vedi sopra).
  3. Senza riavviare, entrare in modalità recovery ClockworkMod e installare Superuser dalla sdcard.
  4. 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 errore ash: 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 versione j (4.1.1, Jelly Bean).

Conviene aver installato sul telefonino anche il programma ROM Manager dal Play Store di Google.

  1. 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 tasti Vol si sceglie RECOVERY e si conferma con Power, si sceglie install zip from sdacard, quindi si indica il file 9ZGgDXDi.zip. Al termine fare un reboot del telefono e far completare l'aggiornamento.
  2. 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.

  3. 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 file Superuser-3.0.7-efghi-signed.zip. Al termine riavviare il telefonino.
  4. 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:
    1. Avviare ROM Manager, installare la ClockWorkMod 6.0.1.0 via WiFi oppure da sdcard, ma ha funzionato anche via connessione 3G.
    2. Sempreda ROM Manager riavvare in modalità Recovery.
    3. 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
doc/appunti/hardware/nexus_s.txt · Last modified: 2016/10/11 21:04 by niccolo