il nostro ricevitore, quindi, trasmette sul canale 1.
A questo punto possiamo connetterci alla porta com:
# rfcomm connect 0 00:0B:0D:6C:EF:D0 1 Connected /dev/rfcomm0 to 00:0B:0D:6C:EF:D0 on channel 1 Press CTRL-C for hangup ...
(nota: in questo caso il canale può essere omesso visto che è il num. 1)
Avviamo il demone:
# gpsd -n -N -b -D 6 /dev/rfcomm0
dove:
- -n non attende la connessione di un client;
- -N non "demonizza" ma si avvia in foreground;
- -b non permette di scrivere sul ricevitore gps (dato che alcuni modelli, dopo, diventano totalmente inaccessibili);
- -D setta il livello di debug (può anche essere omesso quando tutto funziona per il meglio)
Testiamo il corretto funzionamento del gps:
$ sudo gpspipe -r GPSD,R=1 $GPGGA,233739.420,3733.7774,N,01507.4695,E,1,03,4.6,241.2,M,39.4,M,,0000*55 $GPRMC,233739.420,A,3733.7774,N,01507.4695,E,0.00,,110209,,,A*78 $GPVTG,,T,,M,0.00,N,0.0,K,N*1C $GPGGA,233740.420,3733.7796,N,01507.4763,E,1,03,4.6,241.2,M,39.4,M,,0000*5F $GPGSA,A,2,17,09,27,,,,,,,,,,4.8,4.6,1.0*36 $GPGSV,3,1,10,09,49,315,24,17,39,065,38,27,31,093,27,15,66,191,23*7F $GPGSV,3,2,10,26,48,160,23,12,33,244,19,05,21,247,,18,18,285,*76 $GPGSV,3,3,10,28,15,051,,22,07,314,12*70
l'output del comando appena impartito ci dice che i dati vengono ricevuti e trasmessi al nostro sistema correttamente.
I comandi rfcomm e gpsd sono eseguibili anche da parte di utenti non privilegiati ma è meglio avviarli con privilegi di *root*.
Per far questo ci avvarremo di sudo (se non presente sul sistema, facilmente installabile da repository), modificando opportunamente (utilizzando visudo) il file /etc/sudoers al quale aggiungeremo questa riga:
%users ALL=(root) NOPASSWD: /usr/sbin/hciconfig,/usr/bin/rfcomm, /usr/sbin/gpsd,/usr/bin/gpspipe
Fatto questo "riuniamo" i precedenti comandi in uno script "rudimentale" che, in questo caso, chiameremo ~/bin/mygps: