sabato 8 dicembre 2012

GPS bluetooth su ArchLinux

Guida funzionante ma in bozza, al più presto cercherò di completarla. 

Arch Linux con antenna gps-bluetooth LIFE 63.GPSBT6 mod. GPS GBT-708 e antenna bluetooth SITECOM CN-523

Dopo il passaggio di ArchLinux a systemd non riuscivo più a collegare il mio GPS BT.
Dopo diversi tentativi falliti (soprattutto a causa della mancanza di tempo), leggendo sul sito di GPSD sono riuscito a collegarlo!!!

Per prima cosa ho controllato di avere installato tutto quello che mi serve (per questo vedere questa pagina)....


pthreads library
support for PPS timekeeping on serial GPSes
DBUS
gpsd will issue DBUS notifications
ncurses
a test client and the GPS monitor depend on this
libtinfo5
shared low-level terminfo library (see below)
libusb-1.0.x or later
better USB device discovery
Qt + qmake
libQgpsmm depends on this
python2.6+
required for various clients and utilities
pgtk-2/cairo bindings
the main test client, xgps, needs this
dal sito di gpsd, quelli segnati in rosso sono quelli che ho installato sul mio pc, per quello segnato in arancione ho installato pygtk, mentre per le altre due fanno forse parte di altri pacchetti che avevo già installato...

....e poi ho seguito questa guida per i dispositivi bluetooth.

1 -  per prima cosa ho installato tutti i pacchetti di bluez:
 ---------------------------------------------------------------------------------------------------
 [folletto@follettopc ~]$ sudo pacman -S bluez bluez-firmware bluez-hcidump libbluedevil python2-pybluez
 ---------------------------------------------------------------------------------------------------

2 -  a questo punto ho caricato i moduli del kernel con modprobe, con la sola differenza che rispetto alla guida mi carica solo questi:
-----------------------------------------------------------------
[folletto@follettopc ~] # modprobe hci
[folletto@follettopc ~] # modprobe rfcomm
------------------------------------------------------
 
3 -  fatto questo digitiamo:

------------------------------------------------------
[folletto@follettopc ~]$ hciconfig
------------------------------------------------------

che dovrebbe trovare la nostra antenna bluetooth:
  
------------------------------------------------------
 hci0:    Type: BR/EDR  Bus: USB
    BD Address: 00:09:DD:50:24:BD  ACL MTU: 310:10  SCO MTU: 64:8
    UP RUNNING PSCAN
    RX bytes:1398 acl:0 sco:0 events:65 errors:0
    TX bytes:409 acl:0 sco:0 commands:36 errors:0

------------------------------------------------------

4 -  ora conoscendo la nostra porta dell'antenna BT (hci0), possiamo attivarla con:

------------------------------------------------------
[folletto@follettopc ~]# hciconfig hci0 up
------------------------------------------------------

5 -  fatto questo cerchiamo la nostra antenna GPS con:

------------------------------------------------------ 
[folletto@follettopc ~]# hcitool scan
Scanning ...
    00:0A:3A:24:B0:07    BT_GPS

------------------------------------------------------

6 - ora che conosciamo il MAC ADRESS dell'antenna GPS (nel mio caso 00:0A:3A:24:B0:07), cerchiamo il canale che utilizza con:

------------------------------------------------------ 
[folletto@follettopc ~]# sdptool records 00:0A:3A:24:B0:07
------------------------------------------------------

che cirestituirà (in rosso quello che ci interessa):

Service Name: SPP 
Service RecHandle: 0x10000
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 1
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100


7 - con MAC ADRESS e CANALE non ci resta che editare il file di impostazione rfcomm con:

------------------------------------------------------
[folletto@follettopc ~]# gedit /etc/bluetooth/rfcomm.conf
------------------------------------------------------

aggiungendo nelle righe in fondo:


rfcomm4 {
bind yes;
device 00:0A:3A:24:B0:07;
channel 1;
comment "GPS";
}

8 - dopodichè ho avviato gpsd con:

------------------------------------------------------ 
gpsd -n -N -D 5 /dev/rfcomm4 (uso rfcomm4 al posto di rfcomm4)
------------------------------------------------------
 
Ora dovrebbe cominciare a lavorare gpsd.

Fatto questo avviate xgps e il tutto dovrebbe funzionare.

Ho poi visto che se il GPS non si riesce a collegare (magari per il segnale sporco o pochi satelliti), su xgps non appaiono i satelliti nella skyview, ma in molti casi dovrebbe comunque restituire l'ora gps.

N.B. potrebbe succedere che, magari per prove precedenti, avete gpsd già in esecuzione, per questo basta dare:

# killall gpsd

e poi nuovamente:

# gpsd -n -N -D 5 /dev/rfcomm4.

Io quando riavvio il pc perdo il binding con la porta rfcomm4, in questo caso basta ridare:

# rfcomm bind rfcomm4

* (io uso rfcomm4 al posto di rfcomm0 riportato sulla guida, ma questa è una scelta personale) 


N.B. LEGGETE BENE QUANTO RIPORTATO SUL SITO DI GPSD PRIMA DI ACQUISTARE UN GPS O PRIMA DI COLLEGARLO, IN MODO DA NON ROVINARE LO STESSO.

NON MI ASSUMO NESSUNA RESPONSABILITÀ NEL CASO DI DISPOSITIVI DANNEGGIATI, QUA HO SOLO CONDIVISO LA MIA ESPERIENZA.