[Risolto] Gps Garmin con gpsd e tangogps

Ciao,
è da un po’ che sto cercando di interfacciare un GPS Garmin GPS72H con il nostro Fedora e finalmente ci sono riuscito, ma ho ancora qualche problema da risolvere.
Premetto che ho provato la connessione via Seriale con un pc Fedora12, e quella USB con un pc Fedora11, con un netbook Fedora11 e un laptop molto vecchio con Fedora12 (che diventerà il mio pc da navigazione…); quindi mi sono fatto un po’ di esperienza!
La seriale non dà nessun problema, mentre quella USB sì (gpsd non dà segni di vita, anche se risulta correttamente collegato). Fra parentesi gpsbabel vede correttamente il device e ci comunica.
Da /var/log/messages vedo che il modulo del kernel garmin_gps mappa la presa usb a /dev/ttyUSB0.
Per farla breve ho risolto le cose così:

  • selinux mi bloccava gpsd, e così per adesso l’ho disattivato, ma sarebbe più bello configurarlo bene (ci penserò più avanti)
  • purtroppo il programma modem-manager vede ttyUSB0, cerca di aprire il device e non riuscendoci lo blocca. Siccome modem-manager è chiamato da NetworkManager, ho abbattuto NetworkManager e ho killato modem-manager.
    Così ho il mio tangogps che funziona alla grande.
    La domanda è: posso mantenere in qualche modo NetworkManager su senza che interferisca con il gps? Anche perché, in futuro mi piacerebbe provare a usare una internet key per scaricare le mappe.
    Grazie per l’aiuto.

Pierpaolo Giordani

output di:

# lsusb

Bus 001 Device 002: ID 091e:0003 Garmin International GPSmap (various models)
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

prova così:

# gedit /usr/share/hal/fdi/information/20thirdparty/90-gps.fdi

inserisci:

<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.subsystem" string="usb">
      <!-- Garmin GPS -->
      <match key="usb.vendor_id" int="0x091e">
        <match key="usb.product_id" int="0x0003">
          <append key="info.capabilities" type="strlist">access_control</append>
          <merge key="access_control.type" type="string">pda</merge>
          <merge key="access_control.file" type="copy_property">@info.parent:linux.device_file</merge>
        </match>
      </match>
  </device>
</deviceinfo>

salva chiudi.

dai un reboot.

attiva networkmanager, interferisce ancora ?

E’ andata!
Mi spieghi cosa hai fatto?

Pierpaolo

ho detto ad hal ( Hardware Abstraction Layer ) che la periferica non è un modem (e quindi gestibile da networkmanager) ma un palmare.

ok, grazie mille!

de nada

Ciao Pierpaolo,
riesci anche per caso a caricare mappe .TIFF convertite non- Garmin?
[ot]
Se vado su uno scoglio che lo dicano i moderatori…
[/ot]

@virus
Complimenti, quando il mio schermo riceve le impostazioni pixel per le tue risposte lampeggia tutto frizzantino… Grande!

Ahi, non è vero che funziona... Cioè, questa mattina ho fatto le prove con la scheda di rete staccata (PCMCIA); oggi l'ho attaccata e il problema c'è di nuovo. Ecco la parte di /var/log/messages incriminata (quando accendo il gps):

Jul 19 17:55:50 localhost kernel: usb 1-2: new full speed USB device using ohci_hcd and address 67
Jul 19 17:55:51 localhost kernel: usb 1-2: New USB device found, idVendor=091e, idProduct=0003
Jul 19 17:55:51 localhost kernel: usb 1-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Jul 19 17:55:51 localhost kernel: usb 1-2: configuration #1 chosen from 1 choice
Jul 19 17:55:51 localhost kernel: garmin_gps 1-2:1.0: Garmin GPS usb/tty converter detected
Jul 19 17:55:51 localhost kernel: usb 1-2: Garmin GPS usb/tty converter now attached to ttyUSB0
Jul 19 17:55:52 localhost gpsd.hotplug: gpsd_control(action=add, arg=/dev/ttyUSB0)
Jul 19 17:55:52 localhost gpsd.hotplug: reached a running gpsd
Jul 19 17:55:53 localhost modem-manager: (ttyUSB0) opening serial device...
Jul 19 17:56:05 localhost modem-manager: (ttyUSB0) closing serial device...
Jul 19 17:56:05 localhost modem-manager: (ttyUSB0) opening serial device...
Jul 19 17:56:11 localhost modem-manager: (ttyUSB0) closing serial device...

PS.:non posso importare mappe perchè il mio gps non è cartografico...

abbiamo parlato troppo presto, togli e metti la scheda PCMCIA e posta:

[code]# dmesg|tail

ll /dev/ttyUSB*[/code]

dmesg | tail:

pcmcia_socket pcmcia_socket0: pccard: CardBus card inserted into slot 0
pci 0000:02:00.0: reg 10 io port: [0x00-0xff]
pci 0000:02:00.0: reg 14 32bit mmio: [0x000000-0x0001ff]
pci 0000:02:00.0: supports D1 D2
pci 0000:02:00.0: PME# supported from D1 D2 D3hot
pci 0000:02:00.0: PME# disabled
8139too 0000:02:00.0: enabling device (0000 -> 0003)
8139too 0000:02:00.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
8139too 0000:02:00.0: setting latency timer to 64
eth0: RealTek RTL8139 at 0xd7894000, 00:11:95:1c:f9:17, IRQ 11

ll /dev/ttyUSB0:

crw-rw----. 1 root dialout 188, 0 19 lug 20:10 /dev/ttyUSB0
 

vedere output di:

[code]# lsmod |grep serial

lshal|sed -e ‘/./{H;$!d;}’ -e ‘x;/0x0003/!d;’

[/code]

lsmod |grep serial :

usbserial              27029  1 garmin_gps

lshal|sed -e '/./{H;$!d;}' -e 'x;/0x0003/!d;' :

Nessun output

come nessun output ?

dai :

[code]# lshal> pippo.txt

gedit pippo.txt

[/code]
trova ed estrai la sezione relativa al gps in particolare mi occorre l’udi.

Le cose si fanno strane: dopo un ulteriore riavvio ha riconosciuto il gps anche con la scheda pcmcia attaccata e la rete su. L'unica cosa diversa dal solito che ho fatto è di dare un service NetworkManager restart prima di riavviare. Comunque ecco quello che mi hai chiesto:

udi = '/org/freedesktop/Hal/devices/usb_device_91e_3_noserial_if0_serial_usb_0'
  info.capabilities = {'serial'} (string list)
  info.category = 'serial'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_91e_3_noserial_if0'  (string)
  info.product = 'GPSmap (various models)'  (string)
  info.subsystem = 'tty'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_91e_3_noserial_if0_serial_usb_0'  (string)
  linux.device_file = '/dev/ttyUSB0'  (string)
  linux.hotplug_type = 2  (0x2)  (int)
  linux.subsystem = 'tty'  (string)
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:02.0/usb1/1-2/1-2:1.0/ttyUSB0/tty/ttyUSB0'  (string)
  serial.device = '/dev/ttyUSB0'  (string)
  serial.originating_device = '/org/freedesktop/Hal/devices/usb_device_91e_3_noserial_if0'  (string)
  serial.port = 0  (0x0)  (int)
  serial.type = 'usb'  (string)

rimuovi quella precedente indicazione ad Hal:

# rm -f /usr/share/hal/fdi/information/20thirdparty/90-gps.fdi

poi diciamo a networkmanager di ignorare il dispositivo :

# gedit /etc/NetworkManager/nm-system-settings.conf

inserisci le righe:

[keyfile] unmanaged-devices=/org/freedesktop/Hal/devices/usb_device_91e_3_noserial_if0_serial_usb_0
salva chiudi.
riprova.

Così non funziona più niente. Cioè /var/log/messages dà:

Jul 20 10:31:18 localhost kernel: usb 1-2: new full speed USB device using ohci_hcd and address 2
Jul 20 10:31:19 localhost kernel: usb 1-2: unable to read config index 0 descriptor/start: -62
Jul 20 10:31:19 localhost kernel: usb 1-2: chopping to 0 config(s)
Jul 20 10:31:19 localhost kernel: usb 1-2: New USB device found, idVendor=091e, idProduct=0003
Jul 20 10:31:19 localhost kernel: usb 1-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Jul 20 10:31:19 localhost kernel: usb 1-2: no configuration chosen from 0 choices
Jul 20 10:32:19 localhost gpsd[1070]: gpsd: device open failed: No such file or directory - retrying read-only
Jul 20 10:32:19 localhost gpsd[1070]: gpsd: read-only device open failed: No such file or directory
Jul 20 10:32:19 localhost gpsd[1070]: gpsd: client(0): channel activation failed.
Jul 20 10:32:19 localhost gpsd[1070]: gpsd: device open failed: No such file or directory - retrying read-only
Jul 20 10:32:19 localhost gpsd[1070]: gpsd: read-only device open failed: No such file or directory
Jul 20 10:32:19 localhost gpsd[1070]: gpsd: client(0): channel activation failed.
 

e ovviamente né xgps, né tangogps vedono un istanza di gpsd valida.

rimetti le indicazioni ad hal del post 4.
lascia le modifiche al file /etc/NetworkManager/nm-system-settings.conf.
dai un reboot.

Allora, ho fatto un po' di prove con e senza la scheda di rete inserita. Se il gps è già inserito al boot non viene riconosciuto, ma basta spegnerlo e riaccenderlo perché venga riconosciuto in entrambi i casi. Forse il problema è che hotplug non viene chiamato se non c'è l'avvio del gps (un semplice reinserimento del cavo usb non basta).

Comunque, per quanto mi riguarda io sarei soddisfatto...