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.
- Luego deberemos dejar el N1 visible vía bluetooth
- En una consola como root debemos buscar el N1:
[root@caleuche ]# hcitool scan
Scanning ...
38:E7:D8:45:AE:63 Nexus One
- 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
- 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";
}
- 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,A25
$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: