Openmoko

57
NeoFreerunner

description

simple presentation about Openmoko for LinuxDay2008

Transcript of Openmoko

NeoFreerunner

Caratteristiche hardware #1

Size and Weight 120.7 x 62 x 18.5 mm133 grams

Display Touch Screen 2.8" VGA (480x640) VGA Screen

Speed ARM9 @ 400 MHz2D/3D Graphics Acceleration

GSM Tri band 850/1800/1900 MHzTri band 900/1800/1900 MHz

Caratteristiche hardware #2

Power Removable 1200 mAh battery

Memory 128MB SDRAM256MB NAND FlashmicroSD Slot

Input and Output Input and Output 2.5 mm audio jackGPS external connector

Caratteristiche hardware #3

Hardware Highlights Wi-Fi (802.1 1b/g)AGPSGPRS (2.5G not EDGE)Bluetooth 2.03axis Motion Sensors (2)

Software Highlights Openmoko GNU/Linux-based100% FOSS on CPUGNU/Linux development tools

Package Contents

Unboxing #1

Unboxing #2

Unboxing #3

Unboxing #4

Unboxing #5

Unboxing #6

Setting up the hardware

Buttons and Connectors

Distributions

om2007.2 (GTK)om2008.9 (GTK + QT)FSO (FreeSmartphone.Org)SHRFDOMQT Extended (ex qtopia)DebianGentooAndroid ?!?

Features by distributions

FSONo BlueToothNo AccellerometersNo PIM

om2007.2

No Accellerometers

DebianNo Finger FriendlyNo Accellerometers

QT Extended

No GPRSNo Accellerometers

Dialer

TangoGPS e Minimo Browser

qtmail per gestire gli sms

Settings e Illume Config

Il boot e il Terminale

TangoGPS e openstreetmap.org

è uno dei gps piu' diffusi (in ambito Linux)non è un navigatoreusa le mappe di openstreetmapha una comunità di utenti può usare le mappe di google mapsè stabile sull'openmokousa gpsdl'utente disegna le mappe di openstreetmappuoi condividere i tuoi tracciati gpspuoi modificare eventuali errori nelle mappeaggiornamenti delle mappe in tempo reale (o quasi)

TangoGPS

Openstreetmap.org #1

Openstreetmap.org #2

Openstreetmap

Google Maps

Developer Developer Developer...

Sviluppare software per l'Openmoko...

Linguaggi di programmazione

PrincipaliPython C/C++

AltriPerlBash scriptJavaBrainFuckMonoun po' quello che ti pare

Toolchain

La toolchain precompilata fornisce:

Compilatore gcc per la crosscomplileScript per la configurazione delle variabili di ambienteScript per facilitare configurazione sorgentiScript per la creazione di pacchettiopkg per l' installazione delle varie librerie necessarie

Installare la toolchainScarichiamo la toolchain per architetture i686: $ wget http://downloads.openmoko.org/toolchains/openmoko-i686-arm-linux-gnueabi-toolchain.tar.bz2 oppure per X86_64: $ wget http://downloads.openmoko.org/toolchains/openmoko-i686-arm-linux-gnueabi-toolchain.tar.bz2 Scompattiamo il pacchetto in / : #cd /#tar -xjvf ~/openmoko-XYZ-arm-linux-gnueabi-toolchain.tar.bz2

Esempio di ultilizzo della toolchain

Grazie alla toolchain si possono portare software non ancora disponibili sul Neo Freerunner , per esempio un programma che si può compilare con la triade ./configure & make & make install si compila con le seguenti istruzioni:

$ . /usr/local/openmoko/arm/setup-en $ om-conf <directory sorgenti programma>$ cd <directory sorgenti programma>$ make$ cd ..$om-make-ipkg <directory sorgenti programma>

Facile, no?

No! Molte volte bisogna modificare gli script per la configurazione del programma e i Makefile dello stesso.

Porting di Powertop

Powertop è un programma sviluppato da Intel grazie al quale possiamo sapere chi consuma la batteria del nostro portatile o in questo caso il nostro cellulare.

Procuriamoci powertop

Prima di tutto scarichiamo i sorgenti di powertop :

$ wget http://www.lesswatts.org/projects/powertop/download/powertop-1.10.tar.gz

Scompattiamo il pacchetto:

$ tar -xvzf powertop-1.9.tar.gz E ora analiziamo il Makefile

Modifichiamo il Makefile

BINDIR=/usr/binLOCALESDIR=/usr/share/localeMANDIR=/usr/share/man/man1WARNFLAGS=-Wall -W -WshadowCFLAGS?=-O1 -g ${WARNFLAGS}CC?=gcc[...]powertop: $(OBJS) Makefile powertop.h $(CC) ${CFLAGS} $(OBJS) -lncursesw -o powertop @(cd po/ && $(MAKE))

Modifichiamo il MakefileBINDIR=/usr/binLOCALESDIR=/usr/share/localeMANDIR=/usr/share/man/man1WARNFLAGS=-Wall -W -WshadowCFLAGS?=-O1 -g ${WARNFLAGS}CC?=arm-angstrom-linux-gnueabi-gcc[...]powertop: $(OBJS) Makefile powertop.h $(CC) ${CFLAGS} $(OBJS) -lncurses -o powertop @(cd po/ && $(MAKE))

Installiamo le librerie necessarie

Diventiamo root e inizializziamo le variabili di ambiente:

# . /usr/local/openmoko/arm/environment-setup

Installiamo le librerrie mancanti:

# opkg-target install ncurses-dev

Crosscompiliamo Powertop

Inizializziamo le variabili di ambiente:

$ . /usr/local/openmoko/arm/setup-en

Compiliamo il programma:

$ cd powertop-1.10

$ make

Creiamo il pachetto ipkg/opkg

Ora invece di dare il classico make install :

$ cd ..

$ om-make-ipkg powertop-1.10/

Questo produrra il pachetto pronto per essere installato sul nostro telefono:

powertop-1.10_0.1_armv4t.ipk

Risultato finale:

Un esempio di sviluppo in Python

Scopo: avere sul desktop del telefono un'icona per lanciare e fermare il demone gpsd .

Strumenti:PythonsshviGimp

Risultato:

gpsdcontrol (ver 0.2)

Per lanciare o fermare gpsd bisogna lanciare:

/etc/init.d/gpsd start|stop

Per accendere l'antenna gps bisogna scrivere 0 o 1 dentro il file:

/sys/class/i2c-adapter/i2c-0/0-0073/neo1973-pm-gps.0/pwron

I dati per definire l'icona stanno in:

/usr/share/applications/gpsdcontrol.desktop

La PNG dell'icona (80x80 pixel) sta in:

/usr/share/pixmaps/gpsdcontrol.png

Il pacchetto finale sarà composto da 3 file:

/usr/bin/gpsdcontrol.py/usr/share/pixmaps/gpsdcontrol.png/usr/share/applications/gpsdcontrol.desktop 1. l'eseguibile2. la PNG dell'icona3. il file per la definizione dell'icona sul desktop

# cat /usr/share/applications/gpsdcontrol.desktop

[Desktop Entry]Name=gpsd startComment=gpsd start and stop scriptEncoding=UTF-8Version=1.0Type=ApplicationExec=gpsdcontrol.pyIcon=gpsdcontrolTerminal=FalseCategories=GTK;Application;PIMSingleInstance=trueStartupNotify=true

root@saponettofono:~# cat /usr/bin/gpsdcontrol.py #!/usr/bin/python## Start & Stop gpsd service from openmoko desktop## Carlo Minucci 2008 - GPL# [email protected] http://minucci.netimport stringimport osf = open("/usr/share/applications/gpsdcontrol.desktop", "r")file_content = f.read()pezzi = string.split(file_content, '\n')f.close()state = string.split(pezzi[1], ' ')state = state[1]

f = open("/usr/share/applications/gpsdcontrol.desktop", "w")if state == "start": f.write ("""[Desktop Entry]Name=gpsd stopComment=gpsd start and stop script""") os.system("/etc/init.d/gpsd start") os.system("echo 1 > /sys/class/i2c-adapter/i2c-0/0-0073/neo1973-pm-gps.0/pwron")elif state == "stop": f.write ("""[Desktop Entry]Name=gpsd startComment=gpsd start and stop script""") os.system("/etc/init.d/gpsdcontrol stop") os.system("echo 0 > /sys/class/i2c-adapter/i2c-0/0-0073/neo1973-pm-gps.0/pwron")

f.write ("""Encoding=UTF-8Version=1.0Type=ApplicationExec=gpsdcontrol.pyIcon=gpsdcontrolTerminal=FalseCategories=GTK;Application;PIMSingleInstance=trueStartupNotify=true""")f.close()

Risultato:

Configurare un repository #1Come tutte le distro anche OpenMoko ha un gestore di pacchetti basato sui repository: si chiama opkg .E' derivato da ipkg con alcune modifiche marginali.

I file di configurazione dei repository sono dentro /etc/opkgPer aggiungere un nuovo feed basta creare un file con dentro le informazioni del repositori:

root@saponettofono:~# cat /etc/opkg/gecco-feed.conf src/gz daily-gecco http://minucci.net/file/opkg

Configurare un repository #2

Inoltre va aggiunta l'apposita stringa al file /etc/opkg/arch.conf

root@saponettofono:~# cat /etc/opkg/arch.conf arch all 1arch any 6arch noarch 11arch arm 16arch armv4t 21arch fic-gta02 26arch neo1973 31arch om-gta02 36arch gecco 40

Usare opkgopkg update (aggiorna la lista dei pacchetti)opkg upgrade (aggiorna tutti i pacchetti aggiornabili)opkg list (da la lista di tutti i pacchetti disponibili)opkg list_installed (da la lista dei pacchetti installati)opkg install nomepacchetto (installa il pacchetto)opkg install http://nomesito.org/dir/nome_0.1_all.opk (installa il pacchetto da un percorso di rete)opkg install ../tmp/nome_0.1_all.opk (installa il pacchetto da un percorso locale)opkg remove nomepacchetto (rimuove il pacchetto)

Difetti notiSu om2008 l'eventuale installzione di gsmd conflitta con qpe e non si riesce più a telefonare.Su om2008 installando pulseaudio o un synth vocale diverso da flite disabilita l'audio.Su om2008 a volte se accendi il telefono col cavo usb poi non funzionano i messaggi. Devi riavviareSu om2008 se lo mandi in sospensione col wifi attivo, poi devi disattivarlo riavviare il telefono altrimenti il wifi non funzionaIl volume va regolato via ssh con alsamixerSe imposti il suspend automatico a volte si inceppaSe accendi il wifi dopo averlo messo in carica non funziona

Conclusioni

domanda: "Io per lavoro uso spesso il telefono, mi consigliate l'acquisto dell'Openmoko?" risposta: "No!"

Community

La community di openmoko sembra molto attiva. Ecco alcuni riferimenti:

http://wiki.openmoko.orghttp://planet.openmoko.org/http://forum.telefoninux.org/http://lists.openmoko.org/mailman/listinfo/http://docs.openmoko.org/trac/http://projects.openmoko.org/

Ringraziamenti:

openmoko.comopenmoko.orgeshopen.comgoogle.itopenstreetmap.orggoogle documentsflickr.comforum.telefoninux.orgfanolug.orgminucci.net