Usar GPS del Nexus One en Linux vía bluetooth

Publicado el Fri 31 December 2010

Ya indiqué cómo convertir nuestro Nexus One en un GPS bluetooth estándar. Ahora viene la parte de conectarlo a Linux.

Deberemos tener instaladas las dependencias para bluetooth y rfcomm, las pruebas se efectuaron en Fedora 14 x86_64.

  1. Luego deberemos dejar el N1 visible vía bluetooth
  2. En una consola como root debemos buscar el N1:

[root@caleuche ]# hcitool scan
Scanning ...
38:E7:D8:45:AE:63 Nexus One

  1. Buscamos el canal que emplea el N1 para serial:

[root@caleuche ]# sdptool browse 38:E7:D8:45:AE:63
...
Service Name: GPS
Service RecHandle: 0x10008
Service Class ID List:
UUID 128: 00001101-0000-1000-8000-00805f9b34fb
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 29

  1. Creamos el archivo /etc/bluetooth/rfcomm.conf con el siguiente contenido:

rfcomm0 {

bind no;

device 38:E7:D8:45:AE:63;

en channel colocamos el que nos arroja sdptools....

channel 29;
comment "GPS bluetooth";
}

  1. Finalmente realizamos la conexión, en caso que ya hayamos emparejado previamente no solicitará nada, en caso que sea la primera vez solicitará emparejar con PIN:

[root@caleuche ]# rfcomm connect 0
Connected /dev/rfcomm0 to 38:E7:D8:45:AE:60 on channel 29
Press CTRL-C for hangup

  • Probamos que funcione, en N1 mostrará el widget en amarillo:

[root@caleuche eduardo]# cat < /dev/rfcomm0
...
$GPGGA,214202.7,3334.863519,S,07035.229533,W,1,07,1.2,656.9,M,32.0,M,,50
$GPVTG,287.4,T,285.0,M,0.0,N,0.0,K,A
25
$GPRMC,214202.7,A,3334.863519,S,07035.229533,W,0.0,,311210,,,A*45
...

  • Ahora sólo nos queda utilizar este flujo con alguna herramienta, la forma simple es pasarlo al gpsd:

[root@caleuche ]# gpsd -N -b /dev/rfcomm0

Con ésto lograremos que se levante un demonio en el puerto 2947.

  • Podemos probar que funciona con xgps, tangogps y gpsdrive: