terça-feira, 23 de março de 2010

Android 2.1 no Milestone brasileiro

Já faz uma semana que instalei o Android 2.1 no Milestone e estou devendo algumas considerações. Ah, só uma observação, instalei exatamente do mesmo jeito que as outras, só mudei a imagem (já atualizei aquele outro post com o link pro 2.1)

Prós:
* Aparentemente mais rápido. O slide entre desktops, o menu de aplicações e a barrinha de avisos tem animações mais naturais e com menos lags.
* Aplicativos novos: No Android 2.1 tem Google Earth liberado, tem widget para Latitude e Google Buzz, bastante prático e útil pra quem usa com frequência.
* Número de desktops configurável, agora dá pra configurar nativamente (sem o Helix) até 9 desktops, tem até uma barrinha com uma bolinha vermelha no topo da tela mostrando em qual desktop você está.
* Live Wallpapers, all those fancy live wallpapers do Nexus One estão nessa atualização.
* Quick Office e Facebook já vem instalado.
* Aplicativos novos: All Videos e Camcorder.
* O relógio do dock agora tem controle de luminosidade por uma barrinha. Agradou.

Contras:
* A instalação APAGA TODOS OS SEUS DADOS. E eu não sabia disso. Cuidado! :-\
* A versão que instalei, a européia, interpreta os números dos contatos como xxx-xxx-xxxx. Isso faz uma bagunça quando a sua lista de contatos inclui números de operadoras e DDD no formato xx xx xxxx xxxx. Isso implica que o android não reconhece mais as chamadas, uma droga.
* Problemas de travamento frequente usando Foursquare, Twidroid e Helix home. Realmente perturbador se você usa com frequência esses aplicativos (eu).
* Ainda tem o problema de não vir pré-configurado as APNs da VIvo. Esse link diz como configurar, foi por lá que me segui e deu tudo certo com o meu 3G

Outra coisa que vem me incomodando desde a versão 2.0 - e ainda não foi corrigido - é em relação ao storage. Acontece quando copio grandes quantidades de dados (uma pasta de 2.5GB de músicas, por exemplo), chega num ponto da cópia que meu dá IO Error. O device fica maluco e trava TUDO. Tenho que tirar a bateria pra rebootar. Hey Google, if you're reading this, PLEASE fix it, ok?

E agora me resta apenas a triste notícia de que vou voltar pro Android 2.0.1, mais notícias em breve aqui ou no meu twitter.

Agradecimentos ao Haydt e ao Uatafóc pelas dicas.

segunda-feira, 22 de março de 2010

otubo no Yahoo! Open Hack Day Brasil 2010: O day-after

en_US:
An awesome event, unlike any I've ever gone so far.
Unlike the Intercon's, Campus Party's and the FISL. Yahoo was very happy to come up with such an event and the reasons are quite simple.


 Perfect atmosphere for fun, and that's exactly what it is: fun. (Photo: velozocomz)

1) Perfect atmosphere: air-conditioning (and believe me, a good temperature is ideal for the creativity), food on a regular frequency, free coffee, stable wifi, video games and toys. In parallel, they played music chosen by twitter (not having to fight) and in the cold dawn had even Monty Python session on screen. Exactly what you need to get a friendly environment for computer geeks to create and have fun.

2) The purpose of the event: The proposal is clear, get together some computer geeks interested in creating new things, put a friendly environment and encourage them with prizes. Clear that Yahoo is not dumb, the main award categories are for libraries and technology of Yahoo (off course, I would do the same). But something that is interesting is the support for creating and developing over any platform, including things VERY low level, like the Arduino.

3) Fantastic team: The Yahoo team was extremely professional and friendly. Always trying to help, whether solving technical problems or playing Guitar Hero. Either through post-its on the dashboard or twits on screen, the means of communication for problem solving was very transparent and straightforward.

Just a curious detail, Yahoo that I'm sorry, but I thought Open Hack Day a term means overrated. 90% of projects were mashups (including mine). But ok, did not hurt anything, just making my point.




And now the star of the event: The Gas Finder.

Met
Luciano Camilo there on Saturday. He had an almost completed project that mines information at the ANP, build a table and exports in XML to find cheap fuel using google maps. He wanted to make a mashup with this YQL. I thought: Man! Let's put it on a phone and use GPS and so on and so! Okay, we had an idea, two programmers and a goal: Complete a proof of concept until 13h the next day.


Gas Finder on the projector. Glad I did not crashed on time. (Photo: imbertti)

After some headaches with Android, ASE, Python and YQL, we managed to finish the prototype of Gas Finder almost at 5 am Sunday. Everything commited and we are testing and polishing edges here and there. On Sunday the presentation was good, thank god it didn't crashed with timeout - what use to happen when getting YQL info or GPS signal. In the end, I am proud to announce I recieved from Fabio Akita the award for the best YQL application with Gas Finder! HELL YEAH!

More information and other projects can be found on the blog or Chapiewski William James Doria.

I hope to go next year to play a little more. Thanks Yahoo, thanks Luciano. :-)


pt_BR:

Um evento sensacional, diferente de todos que já fui até agora. Diferente dos Intercon's dos Campus Party's e do FISL. Yahoo foi muito feliz em montar um evento desses e os motivos são bem simples.


 Atmosfera perfeita para copmuteiros se divertirem, e é exatamente disso que se trata: diversão. (foto: velozocomz)

1) Atmosfera perfeita: Ar condicionado (e acredite, uma temperatura boa é IDEAL para fazer o lado criativo funcionar), comida em uma frequência regular, café à vontade, wifi estável, video games, brinquedos e puffes. Em paralelo, rolou música escolhida por twitter (pra não ter briga) e na madrugada fria teve até sessão de Monty Python no telão. Exatamente tudo o que você precisa pra ter um ambiente amigável pra computeiros criarem e se divertirem bastante.

2) O objetivo do evento: A proposta é bem clara, juntar computeiros interessados em criar coisas novas, botar num ambiente amigável e incentivá-los com prêmios. Claro que o Yahoo não é bobo, as principais categorias de premiação são de bibliotecas e tecnologias do Yahoo (lógico, eu também faria o mesmo). Mas algo que é interessante é o apio à criação e ao desenvolvimento em cima de qualquer plataforma, incluindo coisas BEM baixo nível, como o Arduino.

3) Equipe fantástica: A equipe do Yahoo foi extremamente profissional e simpática. Sempre tentando nos ajudar, seja resolvendo problemas técnicos ou fazendo par no Guitar Hero. Seja por meio de post-its no painel ou twitts no telão, o meio de comunicação para a resolução de problemas foi bastante transparente e direto ao ponto.

Só um detalhe curioso, Yahoo que me desculpe, mas achei Open Hack Day um termo meio overrated. 90% dos projetos foram de mashups (incluindo o meu). Mas ok, não atrapalhou em nada, só me fez pensar.

E agora a grande estrela do evento: The Gas Finder.

Conheci o Luciano Camilo lá no sábado. Ele já tinha um projeto quase completo de garimpar informações na ANP para montar uma tabela (e exporta num XML amigável) os postos com combustível barato usando google maps e tal. Ele queria fazer um mashup disso com YQL e tal. Pensei na hora: Cara! Vamos botar isso no celular e usar GPS e tal e coisa! Pronto, tínhamos uma idéia, dois computeiros e um objetivo: Terminar uma prova de conceito até 13h do dia seguinte.

Gas Finder em operação no projetor. Ainda bem que não crashou na hora. (foto: imbertti)

E não é que foi? Depois de algumas dores de cabeça com Android, ASE, Python e YQL conseguimos terminar o protótipo do Gas Finder lá pelas 5h da manhã do domingo. Commitamos tudo e ficamos testando e polindo umas arestas aqui e alí. No domingo a apresentação foi boa, não travou e nem crashou - o que costumava acontecer se desse timout no YQL ou na hora de pegar o sinal do GPS. Resumo da Ópera, tivemos a felicidade de receber da mão de Fábio Akita o prêmio de melhor aplicação YQL. HELL YEAH!

Mais informações e outros projetos podem ser encontrados no blog do Guilherme Chapiewski ou no Tiago Dória.

Espero poder ir ano que vem pra nerdear madrugada a dentro. Valeu Yahoo, valeu Luciano. :-)

ps.: Pode parecer post-puxa-saco, post-pago, blé, mas é tudo verdade.

terça-feira, 16 de março de 2010

otubo no Yahoo! Open Hack Day Brasil 2010

Este final de semana, 20 e 21 de março, vou participar do Yahoo! Open Hack Day. E neste eu nunca fui. O que já me agradou de primeira é o nome combinar direitinho com o clima do evento. Hack no sentido de pegar um projeto existente (ou algum que seja pensado na hora) e programar. Simples assim. Hackear o final de semana inteiro ao redor dele.


Sim, eventualmente haverão palestras e ... AH! WHO CARES? Palestra a gente baixa ou vê no youtube, juntar computeiros pessoalmente pra trocar idéias e programar não.

Nos vemos lá?
Happy hacking!

quarta-feira, 3 de março de 2010

Atualizando Motorola Milestone Brasileiro para Android 2.0.1

Disclaimer: Todo o procedimento aqui descrito foi concedido gentilmente pelo Rodrigo Haydt.

Disclaimer2: É com muita dor no coração que digo que neste tutorial usaremos Windows e ferramentas proprietárias de código fechado da Motorola. O que particularmente é um absurdo. Pra que diabos a gente precisa de ferramentas proprietárias e que rodem no Windows pra flashar um device que roda Linux? Mas enfim, dancemos conforme a música :-(

Disclaimer3: Faça todo este procedimento por sua conta em risco. Fazer de forma errada o procedimento pode brickar seu telefone e transforma-lo em um elegantíssimo peso de papel. Tenha certeza que seu celular esteja carregado em 100% e que não haverá falhas ou interrupção de energia elétrica - recomendo fazer de um notebook para evitar este último.
1) A receita de bolo é bastante simples, pegue os ingredientes:
Motorola Driver Installation 4.2.0 - Windows (32bit / 64bits)
RSD Lite 4.6 [update: o arquivo não está mais neste servidor, não achei na busca que fiz. Se alguém achar poste ai nos comentários]
2) Pegue a imagem inglesa do Android 2.0.1 que instalaremos no celular e descompacte. [update: imagem brasileira do android 2.0.1 já disponível] [update2: imagem européia do android 2.1 já disponível]

3) Em seu Milestone, vá em Settings > Applications > Development e ative o USB Debugging.

4) Conecte seu telefone ao computador pela porta USB utilizando o cabo de dados.

5) Espere até o Windows achar seu device, instalar os drivers e tal e coisa. Tudo isso feito, abra o RSD Lite e espere até que o device A853 apareça na tabela.

6) Selecione o arquivo de imagem que você descompactou na caixa de texto e clique em Start.

7) Agora é a hora que a mágica do software proprietário acontece. Todo o processo vai demorar uns 10min e o telefone irá rebootar umas 3 vezes. O RSD Lite eventualmente pedirá pra ligar o celular e como você leu este tutorial você NÃO FARÁ ISSO. Seja paciente e espere até que esteja escrito Finished e PASS na tabela do RSD Lite.

Pronto, agora você tem o Android 2.0.1 no seu Motorola Milestone GSM Brasileiro. E aí, o que eu ganho com isso? Agora você vai poder instalar o Google Earth (que é mais cool do que útil por enquanto), vai poder instalar um novo aplicativo pro Dock (que é menos brilhante e você poderá dormir com mais facilidade) e vai poder instalar um novo Home (que é o nativo do Nexus 1, é cool também, mas ainda ta cheio de bug). Agora sério, a atualização deixou o Android mais rápido e aquelas travadas (e até reboots) esporádicos sumiram. A tela me pareceu mais responsiva e o consumo de bateria diminuiu sensivelmente.

Downgrade: Caso você não tenha gostado, ou tenha bugado seu telefone por algum motivo, você pode fazer o downgrade usando o mesmo procedimento mas com a imagem do Android 2.0.

Importante: O upgrade conserva todas as configurações do seu aparelho, o que não é verdade no caso do downgrade. Seu celular vai estar como se estivesse tirado da caixa.

sexta-feira, 25 de dezembro de 2009

Retrospectiva fotográfica de 2009

Sim, eu realmente estava preparando um post-retrospectiva-2009. Escrevi algumas linhas e já parei no primeiro parágrafo achando tudo muito chato. Não me agradou bater na mesma tecla. A um certo tempo eu já estava pensando em escrever um post não-técnico pra falar um pouco de fotografia e o que eu tenho feito sobre o assunto esse ano. Ué, não haveria ocasião melhor! :-). A idéia do post é bastante simples, vou listar algumas fotografias e dizer por que elas são importantes pra mim. Espero que gostem :-)

[update: o layout maldito do blog cortou a borda direita das fotos, se quiser vê-las no tamanho real/ideal é só seguir o link na própria foto :-)]

Esta particularmente marca a mudança de visão que comecei a ter quando comecei a fazer o curso de fotografia. Comecei a aplicar algumas técnicas, como a profundidade de campo curta, o enquadramento enfatizando a perspectiva e a ausência de cor.


Esta foto foi no Jardim Botânico de Jundiaí. Foi a primeira aplicação da regra dos terços. As cores da Fuji também ajudaram bastante a deixar a fotografia interessante.


sujinhos
Sujinho's Bar- Rio Claro. Bar famoso por afogar as mágoas das provas da faculdade. Gostei do tema, das cores e da saudades.


pescador
Esta foi na primeira saída fotográfica do curso. Gostei particularmente dessa por que foi aí que saquei a idéia de usar a grande-ocular.


olhares
Roda de capoeira - feira de artesanato na feira da rua do Lavradio. Descobri a importância de fotografar no modo burst os assuntos muito rápidos. Disparo uma metralhada de cliques e depois escolho a que mais gostei. E dessa, em especial, os olhares me chamaram mais a atenção.


ela
E falando em olhares, fomos à 7 de abril a procura da famigerada 50mm. Esse é um dos efeitos dela, a profundidade de campo fica tão curta que consegue-se diferença de foco entre os olhos de um mesmo rosto. Adoramos. Tornou-se nossa lente favorita desde então.


laranja mecânica
Essa laranja não é exatamente uma boa foto, mas foi a primeira tentativa de se fazer o "macro de pobre". A técnica é bastante simples, você só precisa tirar a lente e segurá-la ao contrário na frente da câmera. Tem outras experiências com essa técnica no meu flickr que deram mais certo que essa :-)


os amigos punk
Amigos punk. Da esquerda pra direita são: Edjunior, Kleber e Sérgio. Essa foi a primeira experiência em fazer revelação em processo cruzado. Fotografei usando Fujichrome (asa 100) e revelei como sendo filme negativo. Deu no que deu, amigos verdes marcioanos em Porto Alegre.


there is a long way down
E esta foi a minha fotografia predileta por um bom tempo. Fiz essa com um filme Neopan (asa 400) na Avenida dos Imigrantes em Jundiaí, já estava quase anoitecendo. Nenhuma técnica experimental ou efeito especial, foi apenas o sentimento pra fora que me fez conseguir captar esse momento.


Pullovers
E foi então que convidaram o pessoal da lista pra fotografar a gravação do clipe do Pullovers. Pronto, descobri que fotografar bandas não é um bicho de sete cabeças e pode ser muito prazeroso principalmente se você gosta do som. E foi o que aconteceu.


Instiga @ Studio SP
O primeiro show a noite que eu fotografei o do Instiga no Studio SP. A experiência foi sensacional, principalmente por que a luminosidade do lugar é muito dramática, não tem luz branca direta e tal. Agradou bastante.


no topo do mundo
Esta foto foi num dos finais de semana mais legais do ano. Conheci todo mundo que eu só conhecia no mundo virtual-sô. Pessoal de Belo Horizonte foi EXTREMAMENTE acolhedor e simpático. Bebemos, discutimos projetos, hackeamos e até deu tempo de passear no final de semana. Só tenho a agradecer :-)


fé
Eu e Má saímos de férias e fomos passar dois dias em Petrópolis. Fiz essa foto no interior da catedral principal da cidade. Não conheço a pessoa que está rezando, não sei nem se ela está pedindo, se está agradecendo ou se está dormindo (hey, por que não?), mas desde então, esta é a minha favorita, nunca mais fiz fotos que me deixassem tão feliz com o resultado.


Moptop @ Hammer 28/nov
E foi assim que o pessoal do Rock'n'Beats me convidou pra fotografar os shows deles. E esse é o esquema, você ouve música que você gosta, fotografa e ainda toma umas cervejas. Gostei muito da combinação.


hey
Esta é a última brincadeira que andei aprontando: Lomografia. Um filme cromo AGFA (asa 100) e uma simples action sampler fazer a vida muito mais divertida. Ainda preciso aprender a fotografar com essa combinação, mas o primeiro resultado até que agradou. :-)

E esta é a hora que eu termino o post desejando feliz ano novo, felicidade, saúde e sucesso a todos os leitores (os que não são leitores terão unhas encravadas o ano todo). Um abraço e até ano que vem! :-)

Disclaimer: Todas as fotos são minhas e estão disponíveis em meu flickr: http://www.flickr.com/photos/otubo/. Aspodem ser usadas segundo a licença Creative Commons.

quarta-feira, 16 de dezembro de 2009

VIVO 3G using Huawei e1756 on Ubuntu 9.10 Karmic

Quick and fast tip to show a way to connect to 3G using Hawei e1756 modem on Ubuntu 9.10 Karmic.

The problem: The modem itself has a little micro-SD card reader inside and guess what? The kernel identifies it as card reader and not as a 3G modem. Good. ¬¬"

The fix: To solve this minor issue, first you have to install a tool that helps you to switch between storage device and usb serial device, the usb_modeswitch. For this just apt-install the usb-modeswitch package.

Then, modify its config file (/etc/usb_modeswitch.conf) adding the lines below:
# Huawei E1692/E1756
DefaultVendor= 0x12d1
DefaultProduct= 0x1446

TargetVendor= 0x12d1
TargetProduct= 0x140c

MessageContent="55534243000000000000000000000011060000000000000000000000000000"

CheckSuccess=5

These lines tells your usb_modeswitch that if the vendor id 0x12d1 and the product id 0x1446 are found on your usb devices, then it will be switched to product id 0x140c. It means that the usb_modeswitch will switch from storage device to 3G modem. So far so good. :)

Then we have to write a udev rule that tells the system to ignore the card reader and identify it as a 3G modem as we plug it in. Write a file named /etc/udev/rules.d/15-hauwei.rules containing these lines:

SUBSYSTEM=="block", \
ACTION=="add", \
SYSFS{idVendor}=="12d1", \
SYSFS{idProduct}=="1446", \
OPTIONS="ignore_device"

SUBSYSTEM=="usb", SYSFS{idProduct}=="1446", SYSFS{idVendor}=="12d1", RUN+="/usr/sbin/usb_modeswitch"

Your udev now will run usb_modeseitch every time you plug in an usb stick with product id and vendor id matching those values.

Restart your udev:
$ service udev restart

And now, your system should be able to identify your 3G modem. After all these done, you have to configure your NetworkManager. This last step is pretty simple and strightforward, so, I will let you handle this by yourself :)

Any problems please feedback!

[update] I wrote this post drinking wine (long story) and I completely forgot to thank Ursinha for the usb_modeswitch tip. Soooorry and thank you bro! :-)

[update 2] And it seems that NetworkManager doesn't like 3G modems, at least not now. So I had to configure some extra lines on /etc/wvdial.conf and /etc/ppp/options in order to use wvdial and connect using /dev/nail (yeah, that was a joke, there is no such a device):

otubo@minivader ~ $ cat /etc/wvdial.conf

[Dialer 3g]
; Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = Analog Modem
; Phone =
ISDN = 0
; Username =
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
; Init3 = AT+CGDCONT=1,"IP","zap.vivo.com.br"
; Password =
Modem = /dev/ttyUSB0
Baud = 921600
DialCommand = ATDT
Check Def Route = on
FlowControl = Hardware(CRTSCTS)
; Username = 1997848815@vivozap.com.br
Username = vivo
Password = vivo
Phone = *99#
Stupid mode = 1
Auto Reconnect = on
Auto DNS = on

otubo@minivader ~ $ egrep -v '#|^ *$' /etc/ppp/options
asyncmap 0
noauth
crtscts
lock
hide-password
modem
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
noipx
asyncmap 0xa0000
mru 1500
refuse-chap
ipcp-max-failure 30


Then, to connect to internet using your 3G modem you just have to run:

root@minivader:~# wvdial 3g
--> WvDial: Internet dialer version 1.60
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2
ATQ0 V1 E1 S0=0 &C1 &D2
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT
--> Carrier detected. Starting PPP immediately.
--> Starting pppd at Thu Dec 17 20:38:52 2009
--> Pid of pppd: 3488
--> Using interface ppp0
--> local IP address 187.88.116.150
--> remote IP address 10.64.64.64
--> primary DNS address 200.142.130.202
--> secondary DNS address 200.220.227.100

And this time, special thanks to Kleber that helped me debugging that shit :-)

sexta-feira, 16 de outubro de 2009

How to connect a GPS phone to a Computer via bluetooth

A very quick post to show how these things work togheter. I connected a Nokia E71 GPS to my ThinkPad T61 running Ubuntu 9.04 Janty Jackalope using bluetooth connection. The initial idea was to use Google Earth as my main GPS screen while driving, but unfortunately I couldn't make it work *yet*.

Step 1) Going right to the point: First you need to be sure that you mobile phone exports the GPS service via bluetooth. And that's simple to get. First you must edit yout /etc/bluetooth/hcid.conf to look like this:

root@phoenix:/etc/bluetooth# cat hcid.conf
#
# HCI daemon configuration file.
#

# HCId options
options {
# Automatically initialize new devices
autoinit yes;

# Security Manager mode
# none - Security manager disabled
# auto - Use local PIN for incoming connections
# user - Always ask user for a PIN
#
security none;

# Pairing mode
# none - Pairing disabled
# multi - Allow pairing with already paired devices
# once - Pair once and deny successive attempts
pairing multi;

# PIN helper
#pin_helper /usr/bin/bluepin;

# D-Bus PIN helper
#dbus_pin_helper;
}

# Default settings for HCI devices
device {
# Local device name
# %d - device id
# %h - host name
name "otubotp";

# Local device class
class 0x3e0100;

# Default packet type
#pkt_type DH1,DM1,HV1;

# Inquiry and Page scan
iscan enable; pscan enable;

# Default link mode
# none - no specific policy
# accept - always accept incoming connections
# master - become master on incoming connections,
# deny role switch on outgoing connections
lm accept;

# Default link policy
# none - no specific policy
# rswitch - allow role switch
# hold - allow hold mode
# sniff - allow sniff mode
# park - allow park mode
lp rswitch,hold,sniff,park;

# Authentication and Encryption (Security Mode 3)
#auth enable;
#encrypt enable;
}


Step 2)
Restart you bluetooth daemon:

root@phoenix:~# /etc/init.d/bluetooth restart
* Stopping bluetooth [ OK ]
* Starting bluetooth [ OK ]


Step 3) Turn on the bluetooth on your phone and get ready to scan devices:

root@phoenix:~# hcitool scan
Scanning ...
00:21:FE:xx:xx:xx mycellphone


Step 4) Then, check if your phone exports GPS data via bluetooth running sdptool. In this step you need to pay attention to the Service Names and to the channel they use. We're gonna use these informations later on.

root@phoenix:~# sdptool browse 00:21:FE:F8:2F:E2
Browsing 00:21:FE:F8:2F:E2 ...
Service Name: AVRCP Target
Service Description: Audio Video Remote Control
Service Provider: Symbian Software Ltd.
Service RecHandle: 0x10000
Service Class ID List:
"AV Remote Target" (0x110c)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 23
"AVCTP" (0x0017)
uint16: 0x100
Profile Descriptor List:
"AV Remote" (0x110e)
Version: 0x0100

Service Name: Hands-Free Audio Gateway
Service RecHandle: 0x10004
Service Class ID List:
"Handsfree Audio Gateway" (0x111f)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Handsfree" (0x111e)
Version: 0x0105

Service Name: Headset Audio Gateway
Service RecHandle: 0x10005
Service Class ID List:
"Headset Audio Gateway" (0x1112)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 2
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Headset" (0x1108)
Version: 0x0100

Service Name: Audio Source
Service RecHandle: 0x10027
Service Class ID List:
"Audio Source" (0x110a)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 25
"AVDTP" (0x0019)
uint16: 0x100
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Advanced Audio" (0x110d)
Version: 0x0100

Service Name: AVRCP Controller
Service Description: Audio Video Remote Control
Service Provider: Symbian Software Ltd.
Service RecHandle: 0x10028
Service Class ID List:
"AV Remote" (0x110e)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 23
"AVCTP" (0x0017)
uint16: 0x100
Profile Descriptor List:
"AV Remote" (0x110e)
Version: 0x0100

Service Name: SyncMLClient
Service RecHandle: 0x10029
Service Class ID List:
UUID 128: 00000002-0000-1000-8000-0002ee000002
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"" (0x00000002-0000-1000-8000-0002ee000002)
Version: 0x0100

Service Name: OBEX File Transfer
Service RecHandle: 0x1002a
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 11
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100

Service Name: Nokia OBEX PC Suite Services
Service RecHandle: 0x1002b
Service Class ID List:
UUID 128: 00005005-0000-1000-8000-0002ee000001
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 12
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"" (0x00005005-0000-1000-8000-0002ee000001)
Version: 0x0100

Service Name: SyncML DM Client
Service RecHandle: 0x1002c
Service Class ID List:
UUID 128: 00000004-0000-1000-8000-0002ee000002
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 13
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"" (0x00000004-0000-1000-8000-0002ee000002)
Version: 0x0100

Service Name: Nokia SyncML Server
Service RecHandle: 0x1002e
Service Class ID List:
UUID 128: 00005601-0000-1000-8000-0002ee000001
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 14
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"" (0x00005601-0000-1000-8000-0002ee000001)
Version: 0x0100

Service RecHandle: 0x1002f
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 3

Service Name: Dial-Up Networking
Service RecHandle: 0x10030
Service Class ID List:
"Dialup Networking" (0x1103)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 4
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100

Service Name: OBEX Object Push
Service RecHandle: 0x10031
Service Class ID List:
"OBEX Object Push" (0x1105)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 9
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"OBEX Object Push" (0x1105)
Version: 0x0100

Service Name: Imaging
Service RecHandle: 0x10032
Service Class ID List:
"Imaging Responder" (0x111b)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 15
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Imaging" (0x111a)
Version: 0x0100

Service Name: SIM Access
Service RecHandle: 0x10033
Service Class ID List:
"SIM Access" (0x112d)
"Generic Telephony" (0x1204)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 8
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"SIM Access" (0x112d)
Version: 0x0101

All you need to check on this huge amount of data is something telling that you phone exports the GPS information. In the above example there is no such thing. If your phone DOES support this information go to step 5. Otherwise, install this strategic application for Symbian: ExtGSP. This little tricky app will do all the messy thing for you exporting all the GPS data over the bluetooth connection. Then re-run the sdptool command again to check. In the end you will find additional information about ExtGPS:

Service Name: Symarctic ExtGPS
Service Description: Share phone's built-in GPS module via Bluetooth
Service Provider: Symarctic Solutions
Service RecHandle: 0x10034
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 5
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100


Step 5) Then, edit your /etc/bluetooth/rfcomm.conf and make it look like this:

root@phoenix:~# cat /etc/bluetooth/rfcomm.conf
rfcomm4 {
bind yes;
device 00:21:FE:F8:2F:E2;
channel 5;
comment "Serial Port";
}


Step 6) Once configured (and ExtGPS running on your phone) you will now open a communication channel and bind it to a local device like this:

root@phoenix:~# rfcomm connect 4
Connected /dev/rfcomm4 to 00:21:FE:F8:2F:E2 on channel 5
Press CTRL-C for hangup


Step 7) Now there's a bunch of GPS information being written on /dev/rfcomm4. In order to make a good use of it, we should grad all these information, and parse it with gpsd:

root@phoenix:~# gpsd -N /dev/rfcomm4
(-N means not to daemonize it, to see all the debug info.)



What's next? Now we have all the setup ready: Cellphone with GPS up and running, exporting information via bluetooth (using ExtGPS), connected and writing information on a local device, and a daemon grabing and parsing all the information. Good! We just need a client program to enjoy the show:

Step 8) You can use a bunch of client programs, I've tested two of them: Xgps and GpsDrive.
Xpgs is a very simple program just to make sure things are working fine. It shows the position of satelites, the current position and so on. Here is a print screen:


GPSDrive is more Google-Earth-like, you may track you path during a travel, check the map and so on:


Well, that's it. Hope you enjoy :)