Ubuntu Touch su Galaxy Nexus, installazione e impressioni

Lock Screen

Lock Screen

Canonical ha annunciato una versione 1.0 del suo Ubuntu Touch per Ottobre, quindi perchè non provarla direttamente sul campo, per capire a che punto reale e’ lo sviluppo? Grazie quindi alla documentazione ufficiale, ho installato Ubuntu Touch su un Galaxy Nexus e ho iniziato a giocarci un po’.

 

Installazione

Il processo di installazione fila via liscio e senza intoppi (l’importanza di avere un bootloader sbloccato e’ sempre da apprezzare). La guida accompagna sia nell’installazione facile, con script che fa tutto da solo, sia nella “old way”, in cui prima si carica una recovery image tramite fastboot e poi, grazie a questa recovery, si carica il sistema.

Piccola nota, dato che avevo gia’ una recovery installata nel telefono (CWM): durante l’installazione mi e’ apparso il messaggio:
“ROM may flash stock recovery on boot. Fix? THIS CAN NOT BE UNDONE.”
Seguendo quanto detto qui, ho risposto no e sono andato avanti. Primo boot del sistema, emozione.

 

Configurazione di base del sistema

Ho subito fatto un bell’aggiornamento del sistema. Siccome sono un purista, mi sono collegato dal mio pc con adb shell e poi ho lanciato un classico
# apt-get update && apt-get dist-upgrade -y
Se non si vuole usare un pc, basta lanciare gli stessi comandi dall’app Terminal del device, preceduti da sudo (pwd phablet).

In teoria ci sono un paio di applicazioni per gestire l’aggioramento del sistema, System Settings -> Updates, oppure l’app updatemanager, ma in nessun caso mi hanno dato nuovi aggiornamenti presenti, mentre apt-get mi dava pletore di nuovi pacchetti. L’aggiornamento OTA e’ supportato, ma magari vengono rilasciati solo snapshot piu’ stabili del sistema, non so.

In System Settings -> Accounts ho inserito i miei account Twitter, Facebook e Google. Adesso Friends e’ in grado di mostrare il mio stream Twitter e Facebook, le foto possono essere condivise su Facebook direttamente dalla Gallery, ma purtroppo, se lancio l’app di Facebook o Twitter o Gmail, devo inserire nuovamente i miei dati nello schermo di login. Anche le notifiche di nuove email in Gmail non ci sono.

Manca ancora un’app per  sincronizzare i contatti del device con quelli di un qualunque servizio cloud. Per fortuna, grazie a SyncEvolution e con un po’ di sana riga di comando, e’ comunque possibile gestire la sicronizzazione per i servizi da questo supportati. Nel mio caso, avendo tutto nel cloud di Google, si e’ trattato di semplici passi. Dal terminale del dispositivo (o adb shell):
sudo apt-get install syncevolution
su – phablet
syncevolution –configure –sync-property “username=email@gmail.com” –sync-property “password=secret” Google_Contacts
syncevolution –sync one-way-from-server Google_Contacts addressbook
Purtroppo vengono importati 50 contatti alla volta, ma basta eseguire l’ultima riga piu’ e piu’ volte fino a quando tutti i contatti presenti sul server sono stati importati nel dispositivo. La modalita’ one-way-from-server copia i contatti dal cloud al vostro dispositivo, ma esiste anche un modo per tenerli sincronizzati bidirezionalmente. Personalmente, dato lo stato ancora sperimentale del tutto, ho deciso di eseguire sporadicamente una one-way-from-server, in modo da non rischiare di corrompere i dati nel cloud.

 

Installazione altre applicazioni e rifiniture varie

Si possono anche installare alcune applicazioni addizionali (non core) che sono presenti nel Collection PPA, seguendo la guida Ubuntu Touch apps. Sempre dal terminale del telefono digitare:
sudo add-apt-repository ppa:ubuntu-touch-coreapps-drivers/collection
sudo apt-get update
e poi installare le app desiderate, come ad esempio
sudo apt-get install xkcd-viewer

Risorse utili per rimanere aggiornati: la community ufficiale del progetto e alcuni blog come The Raving Rick, I me mine, Stephane Graber’s website, NotYetThere.org, Popey.com,

 

Impressioni finali

Il lavoro svolto dal team di Ubuntu Touch e’ fin qui monumentale. Se ripenso alle prime discussioni sull’interfaccia, alle core-app gia’ disponibili, alla velocita’ con cui il progetto si sta evolveno, non posso che stupirmi davanti a Canonical e alla community, per essersi imbarcata in un’impresa cosi’ complessa e per portarla avanti con cosi’ tanta energia e determinazione. Vi stimo davvero! Purtroppo pero’, dopo qualche giorno di utilizzo, penso che Ubuntu Touch non sia ancora un sistema operativo pronto per avere una versione 1.0 nel giro di un mese (e neanche 2 o 3, a dirla tutta).

Ci sono molte, troppe,  cose ancora da sistemare: innanzitutto la stabilita’ del sistema e’ una chimera: se lancio qualche app, inevitabilmente devo eseguire un reset dopo un po’ visto che mi si blocca tutto. Anche la responsivita’ dell’interfaccia e’ accettabile solo per poco tempo dopo il reset. Aspettiamo con ansia che il merge tra Mir e Unity 8 e altre sostanziose ottimizzazioni migliorino le cose. Tra l’altro lo sto provando su un Galaxy Nexus, quindi neanche l’ultimo dei terminali in quanto a performance. Di sicuro su un Nexus 4 andrebbe meglio, ma questo fuga ogni dubbio che Ubuntu Touch possa essere un sistema operativo per device low/mid-end, almeno allo stato attuale.

C’e’ poi il fattore delle applicazioni, cruciale per il successo di ogni sistema operativo: le core-app offerte sono carine, ma poche e lungi dall’essere complete e pienamente usabili.  Senza contare la mancanza di applicazioni complementari a quelle di sistema ad un mese dal lancio. Questi fattori, sempre secondo me, non rendono la piattaforma appetibile, forse, neanche ai geek piu’ smaliziati. Certo, tutti i siti web ottimizzati per mobile possono essere considerati “first class citizen” di Ubuntu Touch, ma ad oggi sono davvero pochi quei servizi che hanno un sito web performate e usabile al pari un’app nativa per Android, iOS o Windows Phone. Senza contare che, con questo paradigma, la fruzione del servizio offline deve essere gestita dal sito stesso, e sinceramente non so qual’e’ il livello di supporto offerto dal browser della piattaforma, o quanto in profondita’ sia affrontato questo scenario dalle specifiche HTML5.

In definitiva, ancora tifo per vedere Ubuntu Touch come sistema operativo sul mio secondo telefono (il primato va ad Android, inutile dirlo), ma ci riprovero’ tra qualche mese. Purtroppo all’oggi rischio addirittura di perdere le telefonate, dato un sistema cosi’ instabile (prove fatte, ve l’assicuro). Nonostante tutto, Go Canonical, go, io aspetto fiducioso ancora un po’!

Kindle Fire, Ubuntu Linux, ADB e Cyanogenmod

Appena avuto tra le mani un Kidle Fire, da sviluppatore Android, ho cercato di capire come installare applicazioni NON provenienti dall’Amazon AppStore: ecco i passi necessari.

Di default il Fire non viene neanche rilevato da ADB, quindi occorre forzare il bridge tramite un semplice file di configurazione da modificare sul proprio pc, come spiegato qui.

  • Aprire il file ~/.android/adb_usb.ini e aggiungere la stringa “0x1949” alla fine del file (senza le virgolette)
  • Riavviare l’adb server, magari tramite il comando adb kill-server
  • Lanciando il comando adb devices ora dovrebbe essere possibile vedere un nuovo device, anche se con il classico problema dei ??????????

La soluzione e’ facile, basta aggiungere queste righe al file /etc/udev/rules.d/51-android.rules:

#Amazon Kindle Fire
SUBSYSTEM==”usb”, SYSFS{idVendor}==”1949″, MODE=”0666″

Dove ox1949 e’, appunto, il manufacturer id. Bene, l’USB Debugging e’ ora abilitato e funzionante.

Per installare applicazioni non provenienti dall’Amazon AppStore, basta andare nei Settings (la rotellina vicino all’orologio), poi More, Device, e abilitare Allow Installation of Application From Unknown sources. Ora un semplice adb install nome_file_app.apk funzionera’ senza fare una piega.

Passiamo a qualche personalizzazione piu’ dura, tipo installare la CyanogenMod 7 sul Fire. Gli smanettoni di xda-developers stanno gia’ elaborando una ROM ad hoc per il dispositivo. Buoni tentativi ;)

Diablo II Lord of Destruction su Linux con Wine

In attesa del terzo capitolo della saga, con i miei amici ci stiamo divertendo, di tanto in tanto, a fare qualche partita con Diablo II Lord of Destruction. Creato nell’ormai lontano 2001, oggi anche il piu’ banale dei netbook puo’ farlo girare senza problemi, compreso l’host di partite in LAN. Ho comunque voluto installarlo sulla mia Ubuntu Maverick 10.10 a 64 bit, utilizzando wine e qualche configurazione aggiuntiva.

Avendo delle immagini dei cd di installazione, ho installato CDemu prendendolo dall’apposito PPA:
sudo add-apt-repository ppa:cdemu/ppa
sudo apt-get install gcdemu
Ho riavviato il pc e ho aggiunto nella barra di Gnome il widget per CDemu, un piccola icona che mi permette agevolmente di montare /smontare immagini di dischi senza ricorrere alla riga di comando.

Avevo gia’ installato wine con tutte le configurazioni necessarie (drives, alcune librerie caricate con winetricks ecc), quindi mi e’ bastato “fare doppio click sul Setup.exe” una volta montata l’immagine del primo disco e ripetere il processo con quello dell’espansione e la patch 1.13c. Ho installato tutto in C:\Program Files\Diablo II

Il gioco funziona ad una risoluzione di 640×480 oppure 800×600, quindi se si fara’ girare in fullscreen su molti dei computer odierni, che non hanno piu’ un monitor con un rapporto 4:3, questo risultera’ schiacciato e brutto da vedere, oltre ad avere un grosso problema di freeze totale quando si passa ad un’altra finestra e si ritorna poi a quella del gioco. Per risolverli entrambi, ho lanciato wineconfig e ho configurato delle impostazioni particolari per eseguire Diablo 2:
Tab Applications – Add Application – navigare fino a seleziona Game.exe nella cartella di installazione del gioco.
Windows version: Windows XP
Tab Graphics – deselezionare Allow the window manager to control the windows, deselezionare Emulate a virtual desktop

Infine, per lanciare il gioco, ho usato questa riga di comando (fondamentale il parametro -w per il windowed mode):
wine /opt/wine/drive_c/Program\ Files/Diablo\ II/Game.exe -w
che ho inserito come icona nel menu’ Game di Gnome.

Continue reading

Appcelerator Titanium su Ubuntu 10.10 64bit

Incuriosito dalla possibilita’ di sviluppare applicazioni multipiattaforma per Android e iPhone, ho provato ad installare Appcelerator Titanium sulla mia Linuxbox, una Ubunto 10.10 a 64 bit. Di seguito i passi seguiti.

Ho scaricato il runtime di Titanium Developer per Linux 64 bit. La versione corrente e’ la 1.2.2. L’ho scompattato e l’ho lanciato. Alla richiesta del percorso di installazione, sotto la mia home oppure in /opt/titanium, ho scelto la seconda opzione, e il programma si e’ chiuso senza altri segni di vita. Per farlo funzionare, sono stato costretto a far partire l’installer con
sudo ./Titanium\ Developer
eseguendo poi a fine installazione un cambio di permessi delle cartelle create con il comando
sudo chown -R rainbowbreeze:rainbowbreeze /opt/titanium

Scaricati i due pacchetti necessari, l’installer si chiude di nuovo con l’errore
symbol lookup error: /usr/lib/libgdk-x11-2.0.so.0: undefined symbol: g_malloc_n
che sembra essere ben documentato e risolto:
cd /opt/titanium (oppure cd ~/.titanium se l’avete installato nella vostra home)
rm runtime/linux/1.0.0/libgobject-2.0.*
rm runtime/linux/1.0.0/libglib-2.0.*
rm runtime/linux/1.0.0/libgio-2.0.*
rm runtime/linux/1.0.0/libgthread-2.0.*

Superato anche questo ostacolo, ho rilanciato l’installazione, accettato le condizioni di contratto e mi trovo davanti un nuovo errore:
icedteanp plugin error: Failed to run /etc/alternatives/../../bin/java.  For more detail rerun “firefox -g” in a terminal window.
anche questo errore e’ documentato e risolto:
sudo aptitude remove openjdk-6-jre icedtea6-plugin
sudo aptitude install sun-java6-jre sun-java6-plugin sun-java6-fonts

Continue reading

Collegare G1 e Nexus One per il debug con Linux

Il test delle proprie applicazioni Android su un device reale e’ sempre un passo importante per lo sviluppo. Fortunatamente si puo’ affrontare abbastanza semplicemente questa situazione grazie al supporto dell’SDK e del sistema operativo del telefono. Nel sito di Google questa operazione e’ descritta molto bene, ma manca di alcuni particolari.

Ad esempio, l’USB VendorID da usare con un Nexus One, dato che non e’ quello HTC di default, ma bensi’ 18d1. Occorrera’ quindi aggiungere, nel file /etc/udev/rules.d/51-android.rules questa riga

SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"

Aggiungendo i vari device supportati otteniamo:

#Acer
SUBSYSTEM=="usb", SYSFS{idVendor}=="0502", MODE="0666"
#Dell
SUBSYSTEM=="usb", SYSFS{idVendor}=="413c", MODE="0666"
#Foxconn
SUBSYSTEM=="usb", SYSFS{idVendor}=="0489", MODE="0666"
#Garmin-Asus
SUBSYSTEM=="usb", SYSFS{idVendor}=="091E", MODE="0666"
#HTC G1 and others
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
#HTC Nexus One
SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
#Huawei
SUBSYSTEM=="usb", SYSFS{idVendor}=="12d1", MODE="0666"
#Kyocera
SUBSYSTEM=="usb", SYSFS{idVendor}=="0482", MODE="0666"
#LG
SUBSYSTEM=="usb", SYSFS{idVendor}=="1004", MODE="0666"
#Motorola
SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", MODE="0666"
#Nvidia
SUBSYSTEM=="usb", SYSFS{idVendor}=="0955", MODE="0666"
#Pantech
SUBSYSTEM=="usb", SYSFS{idVendor}=="10A9", MODE="0666"
#Samsung
SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"
#Sharp
SUBSYSTEM=="usb", SYSFS{idVendor}=="04dd", MODE="0666"
#Sony Ericsson
SUBSYSTEM=="usb", SYSFS{idVendor}=="0fce", MODE="0666"
#Sony Ericsson
SUBSYSTEM=="ZTE", SYSFS{idVendor}=="19D2", MODE="0666"

Un po’ accortezze varie che potrebbero far comodo in caso di problemi:

  • Ricordardi di abilitare il debug mode sul dispositivo come descritto nella guida
  • Rilanciare UDEV per rendere attive le modifiche: sudo restart udev
  • Rilanciare l’adb per prendere il carico il nuovo device: adb kill-server seguito da adb start-server
/etc/udev/rules.d/51-android.rules.

Encoding di video AVI, DIVX, FLV, MKV in MP4 per PSP

Uso la Playstation Portable, spesso, per guardare video (anime soprattutto) quando sono in giro grazie al suo schermo da 4.3″ e all’autonomia di piu’ di 4 ore… Una bella comodita’! Oltre a VCast che permette di registrare quello che danno in tv direttamente in MPEG4 AVC (il formato compatibile con PSP), ci sono diversi programmi che encodano un video in qualunque formato in MPEG4, anche un file .FLV, sia per Windows che per Linux.

L’installazione di questi sotto Linux non sempre va liscia: a volte non esistono i pacchetti per la distro usata, spesso occorre ricompilare tutto a mano con diverse dipendenze da soddisfare, magari non esiste il pacchetto a 64bit (che in queste operazioni fa la differenza). Siccome a me non schifa la linea di comando, ecco la soluzione che adotto per l’encoding sulla mia linuxbox:

# generate video
ffmpeg -i "anime_ep1x23.avi" -f psp -r 29.97 -b 768k -ar 24000 -ab 64k -s 320x240  "anime_ep1x23.MP4"
# generate thumbnail
ffmpeg -y -i "anime_ep1x23.avi" -f image2 -ss 5 -vframes 1 -s 160x120 -an "anime_ep1x23.THM"

Se manca il comando ffmpeg, basta un apt-get install ffmpeg e passa la paura ;)

Continue reading

Sun Java JDK 1.6 su Ubuntu/Kubuntu 10.4

Versione di Ubuntu che installi, problemi con il Java che trovi. Dopo la deprecazione nella 9.10 del Java 1.5, in Ubuntu / Kubuntu 10.4 i pacchetti java made-in-sun (anche se ora dovremmo dire made-in-oracle) non sono piu’ presenti nei repository di default. Gli unici rimasti sono quelli OpenJDK (openjdk-6-jdk e openjdk-6-jre), che in genere vanno bene, ma a volte hanno problemi di funzionamento con programmi un po’ particolari ed hanno ancora performance lievemente inferiori rispetto alle implementazioni native.

Per poter accedere ai vecchi pacchetti Sun Java 6 (sun-java6-jre, sun-java6-jdk e tutti gli altri), occorre abilitare i repository Partner tra le sorgenti di installazione nel proprio package managar, come documentato in questo post. Oppure, in alternativa, lanciare il comando:
sudo add-apt-repository “deb http://archive.canonical.com/ lucid partner”

Fatto questo, una semplice ricerca e installazione dei pacchetti sun-java6-jre oppure sun-java6-jdk e dipendenze varie dovrebbe bastare.
sudo apt-get update

sudo apt-get install sun-java6-jdk

Occorre poi riconfigurare la jdk usata dal sistema. Ottenere prima una lista di quelle esistenti con il comando:
update-java-alternatives -l
e poi impostare quella sun con
sudo update-java-alternatives -s java-6-sun

Altre informazioni molto esaurienti in questo post, compresa l’installazione del java plugin per Firefox.

Continue reading