SlideShare una empresa de Scribd logo
1 de 57
Descargar para leer sin conexión
NeoFreerunner
Caratteristiche hardware #1

  Size and Weight
     120.7 x 62 x 18.5 mm
     133 grams
  Display
     Touch Screen
     2.8quot; VGA (480x640) VGA Screen
  Speed
     ARM9 @ 400 MHz
     2D/3D Graphics Acceleration
  GSM
     Tri band 850/1800/1900 MHz
     Tri band 900/1800/1900 MHz
Caratteristiche hardware #2

  Power
     Removable 1200 mAh battery
  Memory
     128MB SDRAM
     256MB NAND Flash
     microSD Slot
  Input and Output
     Input and Output
     2.5 mm audio jack
     GPS external connector
Caratteristiche hardware #3

  Hardware Highlights
     Wi-Fi (802.1 1b/g)
     AGPS
     GPRS (2.5G not EDGE)
     Bluetooth 2.0
     3axis Motion Sensors (2)
  Software Highlights
     Openmoko GNU/Linux-based
     100% FOSS on CPU
     GNU/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)
  SHR
  FDOM
  QT Extended (ex qtopia)
  Debian
  Gentoo
  Android ?!?
Features by distributions

FSO                    Debian
  No BlueTooth           No Finger Friendly
  No Accellerometers     No Accellerometers
  No PIM

om2007.2               QT Extended
  No Accellerometers     No GPRS
                         No 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 navigatore
 usa le mappe di openstreetmap
 ha una comunità di utenti
 può usare le mappe di google maps
 è stabile sull'openmoko
 usa gpsd
 l'utente disegna le mappe di openstreetmap
 puoi condividere i tuoi tracciati gps
 puoi modificare eventuali errori nelle mappe
 aggiornamenti 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

Principali
   Python
   C/C++
Altri
   Perl
   Bash script
   Java
   BrainFuck
   Mono
   un po' quello che ti pare
Toolchain

La toolchain precompilata fornisce:

   Compilatore gcc per la crosscomplile
   Script per la configurazione delle variabili di ambiente
   Script per facilitare configurazione sorgenti
   Script per la creazione di pacchetti
   opkg per l' installazione delle varie librerie necessarie
Installare la toolchain
Scarichiamo 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/bin
LOCALESDIR=/usr/share/locale
MANDIR=/usr/share/man/man1
WARNFLAGS=-Wall -W -Wshadow
CFLAGS?=-O1 -g ${WARNFLAGS}
CC?=gcc
[...]
powertop: $(OBJS) Makefile powertop.h
    $(CC) ${CFLAGS} $(OBJS) -lncursesw -o powertop
    @(cd po/ && $(MAKE))
Modifichiamo il Makefile
BINDIR=/usr/bin
LOCALESDIR=/usr/share/locale
MANDIR=/usr/share/man/man1
WARNFLAGS=-Wall -W -Wshadow
CFLAGS?=-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:
   Python
   ssh
   vi
   Gimp

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'eseguibile
2. la PNG dell'icona
3. il file per la definizione dell'icona sul desktop
# cat /usr/share/applications/gpsdcontrol.desktop

[Desktop Entry]
Name=gpsd start
Comment=gpsd start and stop script
Encoding=UTF-8
Version=1.0
Type=Application
Exec=gpsdcontrol.py
Icon=gpsdcontrol
Terminal=False
Categories=GTK;Application;PIM
SingleInstance=true
StartupNotify=true
root@saponettofono:~# cat /usr/bin/gpsdcontrol.py
#!/usr/bin/python
#
# Start & Stop gpsd service from openmoko desktop
#
# Carlo Minucci 2008 - GPL
# gecco@napodano.com http://minucci.net

import string
import os

f = open(quot;/usr/share/applications/gpsdcontrol.
desktopquot;, quot;rquot;)
file_content = f.read()
pezzi = string.split(file_content, 'n')
f.close()
state = string.split(pezzi[1], ' ')
state = state[1]
f = open(quot;/usr/share/applications/gpsdcontrol.
desktopquot;, quot;wquot;)
if state == quot;startquot;:
    f.write (quot;quot;quot;[Desktop Entry]
Name=gpsd stop
Comment=gpsd start and stop scriptquot;quot;quot;)
    os.system(quot;/etc/init.d/gpsd startquot;)
    os.system(quot;echo 1 > /sys/class/i2c-adapter/i2c-
0/0-0073/neo1973-pm-gps.0/pwronquot;)

elif state == quot;stopquot;:
    f.write (quot;quot;quot;[Desktop Entry]
Name=gpsd start
Comment=gpsd start and stop scriptquot;quot;quot;)
    os.system(quot;/etc/init.d/gpsdcontrol stopquot;)
    os.system(quot;echo 0 > /sys/class/i2c-adapter/i2c-
0/0-0073/neo1973-pm-gps.0/pwronquot;)
f.write (quot;quot;quot;
Encoding=UTF-8
Version=1.0
Type=Application
Exec=gpsdcontrol.py
Icon=gpsdcontrol
Terminal=False
Categories=GTK;Application;PIM
SingleInstance=true
StartupNotify=truequot;quot;quot;)

f.close()
Risultato:
Configurare un repository #1
   Come 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/opkg
Per 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 1
   arch any 6
   arch noarch 11
   arch arm 16
   arch armv4t 21
   arch fic-gta02 26
   arch neo1973 31
   arch om-gta02 36
   arch gecco 40
Usare opkg
opkg 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 noti
  Su 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 riavviare
  Su om2008 se lo mandi in sospensione col wifi attivo, poi
  devi disattivarlo riavviare il telefono altrimenti il wifi non
  funziona
  Il volume va regolato via ssh con alsamixer
  Se imposti il suspend automatico a volte si inceppa
  Se accendi il wifi dopo averlo messo in carica non funziona
Conclusioni


 domanda: quot;Io per lavoro uso spesso il telefono,
 mi consigliate l'acquisto dell'Openmoko?quot;

 risposta: quot;No!quot;
Community

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

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

  openmoko.com
  openmoko.org
  eshopen.com
  google.it
  openstreetmap.org
  google documents
  flickr.com
  forum.telefoninux.org
  fanolug.org
  minucci.net

Más contenido relacionado

La actualidad más candente

CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 3 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 3 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 3 - Corso Linux, Android e Internet of ThingsMirko Mancin
 
CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 2 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 2 - Corso Linux, Android e Internet of ThingsMirko Mancin
 
LinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slidesLinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slidesMaurizio Antonelli
 
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsMirko Mancin
 
[LDNA2018] - JACK Audio Connection Kit: la tua Patchbay virtuale!
[LDNA2018] - JACK Audio Connection Kit: la tua Patchbay virtuale![LDNA2018] - JACK Audio Connection Kit: la tua Patchbay virtuale!
[LDNA2018] - JACK Audio Connection Kit: la tua Patchbay virtuale!Marcello Marino
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterMatteo Baccan
 
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...Matteo Baccan
 
From Scratch To Network - User mode linux
From Scratch To Network - User mode linuxFrom Scratch To Network - User mode linux
From Scratch To Network - User mode linuxMajong DevJfu
 
Io uso Tor e non lascio tracce! Sei proprio sicuro?
Io uso Tor e non lascio tracce! Sei proprio sicuro?Io uso Tor e non lascio tracce! Sei proprio sicuro?
Io uso Tor e non lascio tracce! Sei proprio sicuro?festival ICT 2016
 
Linux Day Torino 2015 applicazioni per iniziare
Linux Day Torino 2015   applicazioni per iniziareLinux Day Torino 2015   applicazioni per iniziare
Linux Day Torino 2015 applicazioni per iniziareFrancesco Tucci
 
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015Matteo Baccan
 
Buffer Overflow - Shellcode - Shatter Attack
Buffer Overflow - Shellcode - Shatter AttackBuffer Overflow - Shellcode - Shatter Attack
Buffer Overflow - Shellcode - Shatter Attackluigi capuzzello
 
Pf e netfilter, analisi dei firewall open source
Pf e netfilter, analisi dei firewall open sourcePf e netfilter, analisi dei firewall open source
Pf e netfilter, analisi dei firewall open sourceGiovanni Bechis
 
Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)Marcello Missiroli
 
Matteo baccan raspberry pi - linox 2015 - corso parte 1
Matteo baccan   raspberry pi - linox 2015 - corso parte 1Matteo baccan   raspberry pi - linox 2015 - corso parte 1
Matteo baccan raspberry pi - linox 2015 - corso parte 1Matteo Baccan
 

La actualidad más candente (20)

CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 3 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 3 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things
 
CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 2 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
 
LinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slidesLinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slides
 
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
 
[LDNA2018] - JACK Audio Connection Kit: la tua Patchbay virtuale!
[LDNA2018] - JACK Audio Connection Kit: la tua Patchbay virtuale![LDNA2018] - JACK Audio Connection Kit: la tua Patchbay virtuale!
[LDNA2018] - JACK Audio Connection Kit: la tua Patchbay virtuale!
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
 
Progetto Netkit
Progetto NetkitProgetto Netkit
Progetto Netkit
 
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
 
From Scratch To Network - User mode linux
From Scratch To Network - User mode linuxFrom Scratch To Network - User mode linux
From Scratch To Network - User mode linux
 
Io uso Tor e non lascio tracce! Sei proprio sicuro?
Io uso Tor e non lascio tracce! Sei proprio sicuro?Io uso Tor e non lascio tracce! Sei proprio sicuro?
Io uso Tor e non lascio tracce! Sei proprio sicuro?
 
Linux Day Torino 2015 applicazioni per iniziare
Linux Day Torino 2015   applicazioni per iniziareLinux Day Torino 2015   applicazioni per iniziare
Linux Day Torino 2015 applicazioni per iniziare
 
APT per RPM
APT per RPMAPT per RPM
APT per RPM
 
X2 Linux Riassunti
X2 Linux RiassuntiX2 Linux Riassunti
X2 Linux Riassunti
 
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
 
Buffer Overflow - Shellcode - Shatter Attack
Buffer Overflow - Shellcode - Shatter AttackBuffer Overflow - Shellcode - Shatter Attack
Buffer Overflow - Shellcode - Shatter Attack
 
Pf e netfilter, analisi dei firewall open source
Pf e netfilter, analisi dei firewall open sourcePf e netfilter, analisi dei firewall open source
Pf e netfilter, analisi dei firewall open source
 
Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)
 
Il Podcasting
Il PodcastingIl Podcasting
Il Podcasting
 
Matteo baccan raspberry pi - linox 2015 - corso parte 1
Matteo baccan   raspberry pi - linox 2015 - corso parte 1Matteo baccan   raspberry pi - linox 2015 - corso parte 1
Matteo baccan raspberry pi - linox 2015 - corso parte 1
 
Arp Attack
Arp AttackArp Attack
Arp Attack
 

Destacado

華視跨年八點檔感動戲劇大賞--讓你看見生命的彩虹:出外人生
華視跨年八點檔感動戲劇大賞--讓你看見生命的彩虹:出外人生華視跨年八點檔感動戲劇大賞--讓你看見生命的彩虹:出外人生
華視跨年八點檔感動戲劇大賞--讓你看見生命的彩虹:出外人生ctsdrama
 
ASIS&T ProQuest Dissertation of the Year Award Presentation
ASIS&T ProQuest Dissertation of the Year Award PresentationASIS&T ProQuest Dissertation of the Year Award Presentation
ASIS&T ProQuest Dissertation of the Year Award PresentationEric Meyer
 
DIY Public Art
DIY Public ArtDIY Public Art
DIY Public Artevemosher
 
ITI Informatica - Statistica
ITI Informatica - StatisticaITI Informatica - Statistica
ITI Informatica - StatisticaRice Cipriani
 
Trabajo 3
Trabajo 3Trabajo 3
Trabajo 3zazou69
 
2005-01-28 Assessment of the Speciated PM Network (Initial Draft, November 2004)
2005-01-28 Assessment of the Speciated PM Network (Initial Draft, November 2004)2005-01-28 Assessment of the Speciated PM Network (Initial Draft, November 2004)
2005-01-28 Assessment of the Speciated PM Network (Initial Draft, November 2004)Rudolf Husar
 
Plantas
PlantasPlantas
Plantasedi
 
United Streaming
United StreamingUnited Streaming
United Streamingguest1dc3d
 
ORGANIZACION TIC
ORGANIZACION TICORGANIZACION TIC
ORGANIZACION TICguest3a250a
 
ITI Elettronica Informatica Licei Scientifici - Matematica
ITI Elettronica Informatica Licei Scientifici - MatematicaITI Elettronica Informatica Licei Scientifici - Matematica
ITI Elettronica Informatica Licei Scientifici - MatematicaRice Cipriani
 

Destacado (17)

華視跨年八點檔感動戲劇大賞--讓你看見生命的彩虹:出外人生
華視跨年八點檔感動戲劇大賞--讓你看見生命的彩虹:出外人生華視跨年八點檔感動戲劇大賞--讓你看見生命的彩虹:出外人生
華視跨年八點檔感動戲劇大賞--讓你看見生命的彩虹:出外人生
 
ASIS&T ProQuest Dissertation of the Year Award Presentation
ASIS&T ProQuest Dissertation of the Year Award PresentationASIS&T ProQuest Dissertation of the Year Award Presentation
ASIS&T ProQuest Dissertation of the Year Award Presentation
 
DIY Public Art
DIY Public ArtDIY Public Art
DIY Public Art
 
Conceito
ConceitoConceito
Conceito
 
ITI Informatica - Statistica
ITI Informatica - StatisticaITI Informatica - Statistica
ITI Informatica - Statistica
 
Software Libre
Software LibreSoftware Libre
Software Libre
 
Trabajo 3
Trabajo 3Trabajo 3
Trabajo 3
 
2005-01-28 Assessment of the Speciated PM Network (Initial Draft, November 2004)
2005-01-28 Assessment of the Speciated PM Network (Initial Draft, November 2004)2005-01-28 Assessment of the Speciated PM Network (Initial Draft, November 2004)
2005-01-28 Assessment of the Speciated PM Network (Initial Draft, November 2004)
 
David Tema 1
David Tema 1David Tema 1
David Tema 1
 
Plantas
PlantasPlantas
Plantas
 
United Streaming
United StreamingUnited Streaming
United Streaming
 
Cce
CceCce
Cce
 
ORGANIZACION TIC
ORGANIZACION TICORGANIZACION TIC
ORGANIZACION TIC
 
Tema 3
Tema 3Tema 3
Tema 3
 
Internetmarketing
InternetmarketingInternetmarketing
Internetmarketing
 
WEBQUEST
WEBQUESTWEBQUEST
WEBQUEST
 
ITI Elettronica Informatica Licei Scientifici - Matematica
ITI Elettronica Informatica Licei Scientifici - MatematicaITI Elettronica Informatica Licei Scientifici - Matematica
ITI Elettronica Informatica Licei Scientifici - Matematica
 

Similar a Openmoko

Installazione di koha_su_debian_v2_0_20_12_2014
Installazione di koha_su_debian_v2_0_20_12_2014Installazione di koha_su_debian_v2_0_20_12_2014
Installazione di koha_su_debian_v2_0_20_12_2014Joaquim Hangalo
 
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Codemotion
 
Pacchi e pacchetti
Pacchi e pacchettiPacchi e pacchetti
Pacchi e pacchettigiallu
 
Installazione Qt/Qt Quick per target Android
Installazione Qt/Qt Quick  per target AndroidInstallazione Qt/Qt Quick  per target Android
Installazione Qt/Qt Quick per target AndroidPaolo Sereno
 
KDE Plasma widgets
KDE Plasma widgetsKDE Plasma widgets
KDE Plasma widgetsPietro Lerro
 
Guida shinelco 3500
Guida shinelco 3500Guida shinelco 3500
Guida shinelco 3500Marco NuvoLi
 
6 Linux Gestioni Pacchetti Debian
6 Linux Gestioni Pacchetti Debian6 Linux Gestioni Pacchetti Debian
6 Linux Gestioni Pacchetti DebianMauro Ferrigno
 
Linux Embedded per l'automazione
Linux Embedded per l'automazioneLinux Embedded per l'automazione
Linux Embedded per l'automazioneDaniele Costarella
 
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...LeonardoIurada
 
Installazione ambientepython ubuntumate
Installazione ambientepython ubuntumateInstallazione ambientepython ubuntumate
Installazione ambientepython ubuntumateMarco Buttolo
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoBabel
 
RiminiLUG. Mini Corso su Linux p2: Networking & Terminal
RiminiLUG. Mini Corso su Linux p2: Networking & TerminalRiminiLUG. Mini Corso su Linux p2: Networking & Terminal
RiminiLUG. Mini Corso su Linux p2: Networking & TerminalAlessandro Carichini
 
JACK Audio Connection Kit
JACK Audio Connection KitJACK Audio Connection Kit
JACK Audio Connection KitNaLUG
 

Similar a Openmoko (20)

Conferenza Pymaemo
Conferenza PymaemoConferenza Pymaemo
Conferenza Pymaemo
 
Installazione di koha_su_debian_v2_0_20_12_2014
Installazione di koha_su_debian_v2_0_20_12_2014Installazione di koha_su_debian_v2_0_20_12_2014
Installazione di koha_su_debian_v2_0_20_12_2014
 
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
 
Pacchi e pacchetti
Pacchi e pacchettiPacchi e pacchetti
Pacchi e pacchetti
 
Installazione Qt/Qt Quick per target Android
Installazione Qt/Qt Quick  per target AndroidInstallazione Qt/Qt Quick  per target Android
Installazione Qt/Qt Quick per target Android
 
LUG - Ricompilazione kernel
LUG - Ricompilazione kernelLUG - Ricompilazione kernel
LUG - Ricompilazione kernel
 
Thesis Frascino Slide iT
Thesis Frascino Slide iTThesis Frascino Slide iT
Thesis Frascino Slide iT
 
Beryl
BerylBeryl
Beryl
 
KDE Plasma widgets
KDE Plasma widgetsKDE Plasma widgets
KDE Plasma widgets
 
Guida shinelco 3500
Guida shinelco 3500Guida shinelco 3500
Guida shinelco 3500
 
6 Linux Gestioni Pacchetti Debian
6 Linux Gestioni Pacchetti Debian6 Linux Gestioni Pacchetti Debian
6 Linux Gestioni Pacchetti Debian
 
Linux Embedded per l'automazione
Linux Embedded per l'automazioneLinux Embedded per l'automazione
Linux Embedded per l'automazione
 
Io, Android
Io, AndroidIo, Android
Io, Android
 
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
 
Installazione ambientepython ubuntumate
Installazione ambientepython ubuntumateInstallazione ambientepython ubuntumate
Installazione ambientepython ubuntumate
 
LTSP
LTSPLTSP
LTSP
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimento
 
RiminiLUG. Mini Corso su Linux p2: Networking & Terminal
RiminiLUG. Mini Corso su Linux p2: Networking & TerminalRiminiLUG. Mini Corso su Linux p2: Networking & Terminal
RiminiLUG. Mini Corso su Linux p2: Networking & Terminal
 
JACK Audio Connection Kit
JACK Audio Connection KitJACK Audio Connection Kit
JACK Audio Connection Kit
 
Standard Dev Workflow
Standard Dev WorkflowStandard Dev Workflow
Standard Dev Workflow
 

Openmoko

  • 2. Caratteristiche hardware #1 Size and Weight 120.7 x 62 x 18.5 mm 133 grams Display Touch Screen 2.8quot; VGA (480x640) VGA Screen Speed ARM9 @ 400 MHz 2D/3D Graphics Acceleration GSM Tri band 850/1800/1900 MHz Tri band 900/1800/1900 MHz
  • 3. Caratteristiche hardware #2 Power Removable 1200 mAh battery Memory 128MB SDRAM 256MB NAND Flash microSD Slot Input and Output Input and Output 2.5 mm audio jack GPS external connector
  • 4. Caratteristiche hardware #3 Hardware Highlights Wi-Fi (802.1 1b/g) AGPS GPRS (2.5G not EDGE) Bluetooth 2.0 3axis Motion Sensors (2) Software Highlights Openmoko GNU/Linux-based 100% FOSS on CPU GNU/Linux development tools
  • 12. Setting up the hardware
  • 14. Distributions om2007.2 (GTK) om2008.9 (GTK + QT) FSO (FreeSmartphone.Org) SHR FDOM QT Extended (ex qtopia) Debian Gentoo Android ?!?
  • 15.
  • 16. Features by distributions FSO Debian No BlueTooth No Finger Friendly No Accellerometers No Accellerometers No PIM om2007.2 QT Extended No Accellerometers No GPRS No Accellerometers
  • 18. TangoGPS e Minimo Browser
  • 21. Il boot e il Terminale
  • 22. TangoGPS e openstreetmap.org è uno dei gps piu' diffusi (in ambito Linux) non è un navigatore usa le mappe di openstreetmap ha una comunità di utenti può usare le mappe di google maps è stabile sull'openmoko usa gpsd l'utente disegna le mappe di openstreetmap puoi condividere i tuoi tracciati gps puoi modificare eventuali errori nelle mappe aggiornamenti delle mappe in tempo reale (o quasi)
  • 28. Developer Developer Developer... Sviluppare software per l'Openmoko...
  • 29.
  • 30. Linguaggi di programmazione Principali Python C/C++ Altri Perl Bash script Java BrainFuck Mono un po' quello che ti pare
  • 31. Toolchain La toolchain precompilata fornisce: Compilatore gcc per la crosscomplile Script per la configurazione delle variabili di ambiente Script per facilitare configurazione sorgenti Script per la creazione di pacchetti opkg per l' installazione delle varie librerie necessarie
  • 32. Installare la toolchain Scarichiamo 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
  • 33. 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>
  • 34. Facile, no? No! Molte volte bisogna modificare gli script per la configurazione del programma e i Makefile dello stesso.
  • 35. 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.
  • 36. 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
  • 37. Modifichiamo il Makefile BINDIR=/usr/bin LOCALESDIR=/usr/share/locale MANDIR=/usr/share/man/man1 WARNFLAGS=-Wall -W -Wshadow CFLAGS?=-O1 -g ${WARNFLAGS} CC?=gcc [...] powertop: $(OBJS) Makefile powertop.h $(CC) ${CFLAGS} $(OBJS) -lncursesw -o powertop @(cd po/ && $(MAKE))
  • 38. Modifichiamo il Makefile BINDIR=/usr/bin LOCALESDIR=/usr/share/locale MANDIR=/usr/share/man/man1 WARNFLAGS=-Wall -W -Wshadow CFLAGS?=-O1 -g ${WARNFLAGS} CC?=arm-angstrom-linux-gnueabi-gcc [...] powertop: $(OBJS) Makefile powertop.h $(CC) ${CFLAGS} $(OBJS) -lncurses -o powertop @(cd po/ && $(MAKE))
  • 39. 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
  • 40. Crosscompiliamo Powertop Inizializziamo le variabili di ambiente: $ . /usr/local/openmoko/arm/setup-en Compiliamo il programma: $ cd powertop-1.10 $ make
  • 41. 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
  • 43. Un esempio di sviluppo in Python Scopo: avere sul desktop del telefono un'icona per lanciare e fermare il demone gpsd . Strumenti: Python ssh vi Gimp Risultato: gpsdcontrol (ver 0.2)
  • 44. 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
  • 45. Il pacchetto finale sarà composto da 3 file: /usr/bin/gpsdcontrol.py /usr/share/pixmaps/gpsdcontrol.png /usr/share/applications/gpsdcontrol.desktop 1. l'eseguibile 2. la PNG dell'icona 3. il file per la definizione dell'icona sul desktop
  • 46. # cat /usr/share/applications/gpsdcontrol.desktop [Desktop Entry] Name=gpsd start Comment=gpsd start and stop script Encoding=UTF-8 Version=1.0 Type=Application Exec=gpsdcontrol.py Icon=gpsdcontrol Terminal=False Categories=GTK;Application;PIM SingleInstance=true StartupNotify=true
  • 47. root@saponettofono:~# cat /usr/bin/gpsdcontrol.py #!/usr/bin/python # # Start & Stop gpsd service from openmoko desktop # # Carlo Minucci 2008 - GPL # gecco@napodano.com http://minucci.net import string import os f = open(quot;/usr/share/applications/gpsdcontrol. desktopquot;, quot;rquot;) file_content = f.read() pezzi = string.split(file_content, 'n') f.close() state = string.split(pezzi[1], ' ') state = state[1]
  • 48. f = open(quot;/usr/share/applications/gpsdcontrol. desktopquot;, quot;wquot;) if state == quot;startquot;: f.write (quot;quot;quot;[Desktop Entry] Name=gpsd stop Comment=gpsd start and stop scriptquot;quot;quot;) os.system(quot;/etc/init.d/gpsd startquot;) os.system(quot;echo 1 > /sys/class/i2c-adapter/i2c- 0/0-0073/neo1973-pm-gps.0/pwronquot;) elif state == quot;stopquot;: f.write (quot;quot;quot;[Desktop Entry] Name=gpsd start Comment=gpsd start and stop scriptquot;quot;quot;) os.system(quot;/etc/init.d/gpsdcontrol stopquot;) os.system(quot;echo 0 > /sys/class/i2c-adapter/i2c- 0/0-0073/neo1973-pm-gps.0/pwronquot;)
  • 51. Configurare un repository #1 Come 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/opkg Per 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
  • 52. 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 1 arch any 6 arch noarch 11 arch arm 16 arch armv4t 21 arch fic-gta02 26 arch neo1973 31 arch om-gta02 36 arch gecco 40
  • 53. Usare opkg opkg 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)
  • 54. Difetti noti Su 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 riavviare Su om2008 se lo mandi in sospensione col wifi attivo, poi devi disattivarlo riavviare il telefono altrimenti il wifi non funziona Il volume va regolato via ssh con alsamixer Se imposti il suspend automatico a volte si inceppa Se accendi il wifi dopo averlo messo in carica non funziona
  • 55. Conclusioni domanda: quot;Io per lavoro uso spesso il telefono, mi consigliate l'acquisto dell'Openmoko?quot; risposta: quot;No!quot;
  • 56. Community La community di openmoko sembra molto attiva. Ecco alcuni riferimenti: http://wiki.openmoko.org http://planet.openmoko.org/ http://forum.telefoninux.org/ http://lists.openmoko.org/mailman/listinfo/ http://docs.openmoko.org/trac/ http://projects.openmoko.org/
  • 57. Ringraziamenti: openmoko.com openmoko.org eshopen.com google.it openstreetmap.org google documents flickr.com forum.telefoninux.org fanolug.org minucci.net