‘openmoko’ Category

Fix Buzz e Bass party a milano

giugno 11th, 2009

domenica sarà a milano per il fix buzz e bass party.

e dato che ci sono mi fermo a milano da sabato

bluespam.py – aggiornamenti

maggio 23rd, 2009

ho rilasciato una nuova versione di bluespam.py, scaricabile da http://minucci.net/file/bluespam.py, con un sacco di funzionalità in piu’.

in pratica ora si puo’ specificare il file da inviare da linea di comando, dentro il sorgente ci sono due variabili da settare per la temporizzazione dell’invio dei file, inoltre salva l’elenco dei file inviati in un database, e scrit in output tutti dei log decenti.

tutte le varie modifiche le ho commentate e spiegate qua http://forum.telefoninux.org/index.php/topic,1373.0.html

questo coso mi servira’ ad un altro progetto che, forse, mi frutterà anche dei soldi :)

coypu: mandare file via bluetooth

maggio 1st, 2009

ho rilasciato una versione embrionalissima, ma relativamente funzionante, di Coypu, una comoda utility per mandare file dall’openmoko verso altri device bluetooth.

Appena si lancia il programma lui ci chiede subito qual’e’ il file da inviare. questa soluzione un po’ posticcia l’ho adottata per fare prima, facendo cosi’ poi non devo impazzire ad aggiungere le funzioni per distruggere e ridisegnare le finestra. quando si seleziona il file e si preme “open”, il path del file viene inviato alla parte del programma per mandare i file. inoltre se si preme “cancel” lui crasha e non ho capito il perche’.

purtroppo lo schermo dell’openmoko e’ stretto e non ci sta tutta la finestrella per la selezione dei file, anche questo e’ un problema da risolvere.

Il programma poi fa la scansione dei device bluetooth, e ci impiega circa un minuto. non so che problemi succedano se i device bluetooth sono un sacco, se ci stanno tutti nella finestra o meno. un altro problema da risolvere.

il bottone sulla destra serve per inviare il file precedentemente selezionare ad un device piuttosto che ad un altro.

c’e’ un altro problema, appena si preme il bottone per inviare il file, il programma sta li senza dire nulla. poi alla fine compare questa finestra che il file e’ stato inviato… o forse no… non ho trovato ancora il modo di verificare che il file sia arrivato o meno, o che sia stato accettato dal ricevente o meno.

tra l’altro ho scoperto che esistono due metodi per inviare i file, uno si chiama obexftp e l’altro obexpush. le differenze non le so, io ho usato obexpush perche’, a quanto pare e’ quello che e’ supportato da piu’ dispositivi diversi. per abilitare le ricezione dei file sull’openmoko bisogna lanciare obexftpd -b a quel punto l’openmoko e’ in grado di ricevere i file col protocollo obexpush (altrimenti tocca usare obexftp) pero’ riceve i file senza chiedere conferma o altro.

insomma… e’ tutto un po’ cosi’… senza certezze :)

pero’ la funzione principale, ovvero inviare i file, funziona :)

bluespam.py

aprile 23rd, 2009

Per l’uscita di windows vista la microsoft aveva sparso per le grandi citta’ dei cartelloni pubblicitari al cui interno c’era anche un dispositivo bluetooth che inviava dei file. Sul cartellone c’era proprio scritto di accere il bluetooth del proprio cellulare per ricevere la pubblicita’.

Al MI AMI festival dell’anno scorso, a milano, c’erano un paio di cartelloni pubblicitari su cui era scritto che attivando il bluetooth del proprio cellulare si sarebbe ricevuto un mp3 in omaggio.

Visti questi esempi ho avuto una doppia illuminazione per lo spammaggio di mp3, ma la cosa bella e’ che posso farlo in bicicletta o ai concerti usando il mio openmoko.

Ho scritto questo semplice software che non fa altro che fare una scansione continua degli altri device bluetooth che ci sono in giro, poi indaga se i device che trova sono abilitati a ricevere i file, e quindi manda i file.

Il codice non e’ che sia tanto difficile da comprendere, l’unico punto piu’ o meno complesso e quando usa sdptool per capire o meno se ha abilitato il servizio obex push che, insieme a obex ftp, serve per traferire i file. Io ho usato obex push perche’, a quanto pare, per openmoko non esiste compilato il pacchetto obexftp. obex push sta dentro il pacchetto obextool che va ricercato nei repository angstrom.

Inoltre ci ho messo un controllo per vedere se di un certo device, oltre ai servizi, trova anche il canale abbinato a obex push, perche’ altrimenti credo che non funzioni. Perche’ per inviare il file c’e’ bisogno del macaddress del device e del canale, altrimenti credo che non sia capace di distinguire il servizio obex push da un altro… boh… non ho indagato a riguardo anche perche’ non e’ che son pieno di roba bluetooth…

comuqnue ecco il codice:

#!/usr/bin/python

import os
import string
import time

start_bluetooth="echo 1 > /sys/bus/platform/devices/neo1973-pm-bt.0/power_on; echo 0 > /sys/bus/platform/devices/neo1973-pm-bt.0/reset; /etc/init.d/bluetooth start"
os.system(start_bluetooth)

while 1>0:
	dev_scan = "hcitool scan"
	list_dev=os.popen(dev_scan)
	tot= list_dev.read()
	tot= tot.split("n")
	tot.pop(0)
	tot.reverse()
	tot.pop(0)
	for dev in tot:
		dev=dev.split("t")
		get_channel = "sdptool search --bdaddr " + dev[1] + " OPUSH | sed 's/ //g' | grep Channel | cut -d: -f 2"
		channel_scan=os.popen(get_channel)
		channel=channel_scan.read()
		print dev[1] + " " + channel[:-1] + " " dev[2]
		if channel != "":
			send_file="obextool push file.txt " + dev[1] +  " " + channel
			print "sending file to "" + dev[2] + """
			print send_file
			send=os.system(send_file)
	time.sleep(5)

bluespam.py

aprile 23rd, 2009

Per l’uscita di windows vista la microsoft aveva sparso per le grandi citta’ dei cartelloni pubblicitari al cui interno c’era anche un dispositivo bluetooth che inviava dei file. Sul cartellone c’era proprio scritto di accere il bluetooth del proprio cellulare per ricevere la pubblicita’.

Al MI AMI festival dell’anno scorso, a milano, c’erano un paio di cartelloni pubblicitari su cui era scritto che attivando il bluetooth del proprio cellulare si sarebbe ricevuto un mp3 in omaggio.

Visti questi esempi ho avuto una doppia illuminazione per lo spammaggio di mp3, ma la cosa bella e’ che posso farlo in bicicletta o ai concerti usando il mio openmoko.

Ho scritto questo semplice software che non fa altro che fare una scansione continua degli altri device bluetooth che ci sono in giro, poi indaga se i device che trova sono abilitati a ricevere i file, e quindi manda i file.

Il codice non e’ che sia tanto difficile da comprendere, l’unico punto piu’ o meno complesso e quando usa sdptool per capire o meno se ha abilitato il servizio obex push che, insieme a obex ftp, serve per traferire i file. Io ho usato obex push perche’, a quanto pare, per openmoko non esiste compilato il pacchetto obexftp. obex push sta dentro il pacchetto obextool che va ricercato nei repository angstrom.

Inoltre ci ho messo un controllo per vedere se di un certo device, oltre ai servizi, trova anche il canale abbinato a obex push, perche’ altrimenti credo che non funzioni. Perche’ per inviare il file c’e’ bisogno del macaddress del device e del canale, altrimenti credo che non sia capace di distinguire il servizio obex push da un altro… boh… non ho indagato a riguardo anche perche’ non e’ che son pieno di roba bluetooth…

comuqnue ecco il codice:

#!/usr/bin/python

import os
import string
import time

start_bluetooth="echo 1 > /sys/bus/platform/devices/neo1973-pm-bt.0/power_on; echo 0 > /sys/bus/platform/devices/neo1973-pm-bt.0/reset; /etc/init.d/bluetooth start"
os.system(start_bluetooth)

while 1>0:
	dev_scan = "hcitool scan"
	list_dev=os.popen(dev_scan)
	tot= list_dev.read()
	tot= tot.split("n")
	tot.pop(0)
	tot.reverse()
	tot.pop(0)
	for dev in tot:
		dev=dev.split("t")
		get_channel = "sdptool search --bdaddr " + dev[1] + " OPUSH | sed 's/ //g' | grep Channel | cut -d: -f 2"
		channel_scan=os.popen(get_channel)
		channel=channel_scan.read()
		print dev[1] + " " + channel[:-1] + " " dev[2]
		if channel != "":
			send_file="obextool push file.txt " + dev[1] +  " " + channel
			print "sending file to "" + dev[2] + """
			print send_file
			send=os.system(send_file)
	time.sleep(5)

gtkaddpoi 0.6

aprile 3rd, 2009

Ho aggiornato gtkaddpoi con la funzione per esportare un POI dentro i bookmark di Navit.

Navit si tiene i bookmark in ~/.navit/bookmark.txt in questo formato

mg:13.006126 43.847579 type=bookmark label=”Mia”

in cui l’unica particolarita’ e’ mettere prima la longitudine e poi la latidudine, e non viceversa come avviene di solito.

una volta scoperto questo particolare, fare il programma viene da se.

Distanza tra due macchine in tempo reale

aprile 2nd, 2009

continuando i precedenti esperimenti, ho scritto un pezzo di codice in python per calcolare la distanza tra due veicoli in movimento, che siano collegati ovviamente in qualche modo, nel mio caso col wi-fi.

dopo aver configurato la rete wi-fi ad-hoc bisogna lanciare questo script:

#!/usr/bin/python

import os
import string
import time
import sqlite3
import math
import sys

//ip = raw_input(‘nother IP: ‘)
//ip=ip.rstrip()
t = raw_input(‘Set interval (sec): ‘)
t=t.rstrip()

while 1>0:
command=”gpspipe -w -n 8 | grep GLL”
out=os.popen(command)
gpsdata= out.read()
gpsdata=gpsdata.split(” “)

command_r=”gpspipe -w -n 8 192.168.1.2:2947| grep GLL”
out_r=os.popen(command_r)
gpsdata_r= out_r.read()
gpsdata_r=gpsdata_r.split(” “)

if gpsdata[0] ==”":
print “no gps fix”
time.sleep(10)
else:
latA = float(gpsdata[3])
lonA = float(gpsdata[4])
latB = float(gpsdata_r[3])
lonB = float(gpsdata_r[4])

r = 6372.795477598

radLatA = math.pi * latA / 180
radLonA = math.pi * lonA / 180
radLatB = math.pi * latA / 180
radLonB = math.pi * lonB / 180

phi = abs(radLonA – radLonB)

p = math.acos( (math.sin(radLatA) * math.sin(radLatB)) + (math.cos(radLatA) * math.cos(radLatB) * math.cos(phi)) )

distanza = p * r

print str(distanza)[0:7]

time.sleep(int(t))

che altro non fa che collegarsi al proprio gpsd e a quello remoto e, prendendo di volta in volta le coordinate, ne calcola la distanza.

dai test effettuati, nel tragitto per arrivare in pizzeria, la distanza massima tra le due macchine e’ stata di 122 metri (questo pero’ non so se sia stato reale oppure qualche errore nel prendere le coordinate gps per via del brutto tempo qualche altro fattore)

un’altra cosa che ho notato, che pero’ non ho verificato se sia vero o meno, e’ che quando si perde il segnale wi-fi per la troppa distanza, i due telefoni si ricollegano una volta riavvicinati.

sfruttare il wi-fi tra due macchine

marzo 28th, 2009

L’altro giorno, il e il mio amichetto nerd, ci siamo ritrovati a fare lo stesso tragitto ognuno col rispettivo openmoko, quindi ci siamo inventati qualcosa al volo: usiamo il wi-fi.

L’idea iniziale era trovare un modo per comunicare tra le due macchine sfruttando l’openmoko, ovviamente non intendo la telefonia ma il wi-fi o il bluetooth. Lo standard dice che il bluetooh non va oltre i 10 metri (anche se pare che con l’openmoko si possa fare) e quindi abbiamo usato il wi-fi (che, secondo le voci, doveva avere pur sempre una capacita’ limitata ad un normale wi-fi)

Visto che a disposizione aveva solo l’openmoko e il pennino (il che equivale a dire “no programmazione”) ci siamo limitati a testare con dei semplici ping.

La prima operazione da fare e’ configurare ad-hoc le due schede wireless visto che non c’e’ un access point a disposizione, per fare cio’ il comando e’:

iwconfig eth0 mode ad-hoc essid p channel 01

e poi configurare un indirizzo ip ciascuno

ifconfig eth0 192.168.1.1

a questo punto abbiamo lanciato il ping, ognuno al telefono dell’altro ovviamente, e via in macchina.

i test sono stati piu’ che positivi: circa il 2% di pacchetti persi e un picco di 260ms, la media era sui 25ms.

Test positivo quindi ma vanno condotti altri test: qual’e’ la distanza massima? e se supero la distanza massima, quando mi riavvicino poi si riconnettono da soli i due telefoni?

Black Sheep 0.1

marzo 23rd, 2009

Ho rilasciato questo fantastico software:

non fa altro che visualizzare questa schermata e fa muovere la pecora da sinistra a destra.

E’ un innovatissimo software per chi soffre di insonnia, te lo accendi e ti metti a contare quante pecore passano, quindi dopo un po’ ti addormenti.

in pratica e’ solo un file .edj con l’animazione che viene richiamato da un coso in python.

Potete scaricarlo da qua http://www.opkg.org/package_169.html oppure guardarvi i sorgenti nell’svn http://projects.openmoko.org/plugins/scmsvn/viewcvs.php/?root=blacksheep

Yaouh 0.5

marzo 3rd, 2009

Ho rilasciato la versione 0.5 di Yaouh col codice modificato da Helge Hafting che lo rende molto piu’ veloce.

Inoltre ho aggiunto una progress bar che indica lo spazio occupato su disco.

Tutto e’ diponibile al solito indirizzo http://wiki.openmoko.org/wiki/Yaouh!

ed ecco uno screenshot

Il codice è praticamente invariato, l’unica cosa interessante e’ quello che mi ha suggerito il mio amico Matteo per prendere la percentuale di disco impegnata, ovvero questo script:

df ” + self.dir + ” | tr -s ‘ ‘ | cut -d   -f5 -s | tail -n +2