back

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:

back