gpsd-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [gpsd-users] Earthmate and the Zodiac Driver


From: Scott Nolde
Subject: Re: [gpsd-users] Earthmate and the Zodiac Driver
Date: Mon, 9 Jan 2012 22:19:45 -0500

Did the Earthmates require you send back EARTHA prior to getting the binary data?  If so I'm not seeing it sent back.

Here's some -D6 output since I've not yet finished the new world stuff:
-bash-2.05b$ sudo gpsd -Nn -D6 -F /var/run/gpsd.pid /dev/cuau0
gpsd:SPIN: control socket /var/run/gpsd.pid is fd 3
gpsd:PROG: control socket opened at /var/run/gpsd.pid
gpsd:INFO: launching (Version 3.3)
gpsd:IO: opening IPv4 socket
gpsd:SPIN: passivesock_af() -> 4
gpsd:IO: opening IPv6 socket
gpsd:SPIN: passivesock_af() -> 5
gpsd:INFO: listening on port 2947
gpsd:PROG: NTPD shmat(65536,0,0) succeeded, segment 0
gpsd:PROG: NTPD shmat(65537,0,0) succeeded, segment 1
gpsd:PROG: NTPD shmat(65538,0,0) succeeded, segment 2
gpsd:PROG: NTPD shmat(65539,0,0) succeeded, segment 3
gpsd:PROG: shmat() succeeded, segment 65540
gpsd:PROG: shared-segment creation succeeded,
gpsd:INFO: NTPD ntpd_link_activate: 1
gpsd:INFO: stashing device /dev/cuau0 at slot 0
gpsd:PROG: no /etc/gpsd/device-hook present, skipped running ACTIVATE hook
gpsd:INFO: opening GPS data source type 2 at '/dev/cuau0'
gpsd:INFO: speed 9600, 8N1
gpsd:IO: => GPS: $PASHQ,RID*28\x0d\x0a
gpsd:IO: => GPS: @F0.3=1*67\x0d\x0a
gpsd:IO: => GPS: @F2.2=1*64\x0d\x0a
gpsd:IO: writing oncore control type Cj
gpsd:IO: => GPS: @@Cj)\x0d\x0aRID*28\x0d\x0a
gpsd:SPIN: open(/dev/cuau0) -> 6 in gpsd_serial_open()
gpsd:PROG: Probing "Garmin USB binary" driver...
gpsd:PROG: Probe not found "Garmin USB binary" driver...
gpsd:PROG: Probing "GeoStar binary" driver...
gpsd:IO: Sent GeoStar packet id 0xc1
gpsd:IO: => GPS: 5053474700c100010000000050924746
gpsd:PROG: Probe not found "GeoStar binary" driver...
gpsd:PROG: Probing "Trimble TSIP" driver...
gpsd:INFO: speed 9600, 8O1
gpsd:IO: => GPS: $PASHQ,RID*28\x0d\x0a
gpsd:IO: => GPS: @F0.3=1*67\x0d\x0a
gpsd:IO: => GPS: @F2.2=1*64\x0d\x0a
gpsd:IO: writing oncore control type Cj
gpsd:IO: => GPS: @@Cj)\x0d\x0aRID*28\x0d\x0a
gpsd:INFO: speed 9600, 8N1
gpsd:IO: => GPS: $PASHQ,RID*28\x0d\x0a
gpsd:IO: => GPS: @F0.3=1*67\x0d\x0a
gpsd:IO: => GPS: @F2.2=1*64\x0d\x0a
gpsd:IO: writing oncore control type Cj
gpsd:IO: => GPS: @@Cj)\x0d\x0aRID*28\x0d\x0a
gpsd:PROG: Probe not found "Trimble TSIP" driver...
gpsd:PROG: no probe matched...
gpsd:INFO: gpsd_activate(): activated GPS (fd 6)
gpsd:INFO: device /dev/cuau0 activated
gpsd:PROG: changing to group 68
gpsd:INFO: running with effective group ID 68
gpsd:INFO: running with effective user ID 65534
gpsd:INFO: startup at 2012-01-10T03:14:26.000Z (1326165266)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.284671 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.293019 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.301378 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.309732 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.318090 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.326452 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.334811 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.343166 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.351524 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.359886 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.368244 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.376600 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.384957 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.393321 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.402094 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:PROG: switch_driver(Zodiac binary) called...
gpsd:PROG: selecting Zodiac binary driver...
gpsd:INFO: /dev/cuau0 identified as type Zodiac binary (0.744743 sec @ 9600bps)
gpsd:DATA: 1011: subtype=01.98 mask={DEVICEID}
gpsd:DATA: packet from /dev/cuau0 with {ONLINE|DEVICEID|PACKET|DRIVER}
gpsd:SPIN: packet_get() fd 6 -> 0 (35)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.410458 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.418817 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.427171 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.435528 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.443891 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.452248 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.460609 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.468964 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.477323 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.485684 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.494045 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.502396 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.510761 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.519117 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:DATA: 1000: time=867542386.00 lat=32.67 lon=-83.70 alt=136.46 track=0.00 speed=0.00 climb=0.00 mode=1 status=0
gpsd:DATA: packet from /dev/cuau0 with {ONLINE|TIME|LATLON|ALTITUDE|SPEED|TRACK|CLIMB|STATUS|MODE|PACKET|CLEAR|REPORT|PPSTIME}
gpsd:SPIN: packet_get() fd 6 -> 0 (35)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165267.527447 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 4 (0)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165268.288004 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:PROG: switch_driver(Generic NMEA) called...
gpsd:PROG: selecting Generic NMEA driver...
gpsd:PROG: => Probing for FV-18
gpsd:IO: => GPS: $PFEC,GPint*58\x0d\x0a
gpsd:IO: <= GPS: EARTHA
gpsd:WARN: unknown sentence: "EARTHA"
gpsd:PROG: found trigger string EARTHA.
gpsd:PROG: switch_driver(Delorme EarthMate (pre-2003, Zodiac chipset)) called...
gpsd:PROG: selecting Delorme EarthMate (pre-2003, Zodiac chipset) driver...
gpsd:DATA: packet from /dev/cuau0 with {ONLINE|DEVICEID|PACKET|DRIVER}
gpsd:SPIN: packet_get() fd 6 -> 0 (35)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165269.288005 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:PROG: switch_driver(Generic NMEA) called...
gpsd:PROG: selecting Generic NMEA driver...
gpsd:PROG: => Probing for Trimble Copernicus
gpsd:IO: => GPS: $PTNLSNM,0139,01*5C\x0d\x0a
gpsd:IO: <= GPS: EARTHA
gpsd:WARN: unknown sentence: "EARTHA"
gpsd:PROG: found trigger string EARTHA.
gpsd:PROG: switch_driver(Delorme EarthMate (pre-2003, Zodiac chipset)) called...
gpsd:PROG: selecting Delorme EarthMate (pre-2003, Zodiac chipset) driver...
gpsd:DATA: packet from /dev/cuau0 with {ONLINE|DEVICEID|PACKET|DRIVER}
gpsd:SPIN: packet_get() fd 6 -> 0 (35)
gpsd:SPIN: select() {3 4 5 6} -> { 6 } at 1326165270.282566 (errno 0)
gpsd:SPIN: packet_get() fd 6 -> 8 (0)
gpsd:PROG: switch_driver(Generic NMEA) called...
gpsd:PROG: selecting Generic NMEA driver...
gpsd:PROG: => Probing for Evermore
gpsd:IO: => GPS: 1002128e7f0101000101010001000000000000131003
gpsd:IO: <= GPS: EARTHA
gpsd:WARN: unknown sentence: "EARTHA"
gpsd:PROG: found trigger string EARTHA.
gpsd:PROG: selecting Delorme EarthMate (pre-2003, Zodiac chipset) driver...
gpsd:DATA: packet from /dev/cuau0 with {ONLINE|DEVICEID|PACKET|DRIVER}
gpsd:SPIN: packet_get() fd 6 -> 0 (35)
^Cgpsd:WARN: received terminating signal 2.
gpsd:INFO: closing GPS=/dev/cuau0 (6)
gpsd:SPIN: close(6) in gpsd_close(/dev/cuau0)
gpsd:PROG: no /etc/gpsd/device-hook present, skipped running DEACTIVATE hook
gpsd:WARN: exiting.

-Scott

On Mon, Jan 9, 2012 at 8:43 PM, Derrick Brashear <address@hidden> wrote:
On Mon, Jan 9, 2012 at 7:25 PM, Eric S. Raymond <address@hidden> wrote:
> Scott Nolde <address@hidden>:
>> gpsd:PROG: selecting Generic NMEA driver...
>> gpsd:PROG: => Probing for FV-18
>> gpsd:WARN: unknown sentence: "EARTHA"
>> gpsd:PROG: found trigger string EARTHA.
>> gpsd:PROG: switch_driver(Delorme EarthMate (pre-2003, Zodiac chipset)) called...
>> The Earthmate reliably worked before the 3.x change.
>
> Yeah.  It's switching drivers all right, so the recognizer is working...
> but it's not staying locked on. I can't tell why from the output.
>
> Unfortunately, the old Earthmate is one of a handful of devices we
> support that cannot be simulated with a canned test load (that's due
> to the EARTHA handshake).

so your "test load" file is a pipe which has at the other end a perl
script. But I'm getting ahead of myself.

> If it were simulable, the change that broke it would not have gotten
> past our regression tests.  As it is, the only way to isolate the
> fault is to test with live hardware.

I doubt it. Sadly my Earthmate is dead. It could probably be
recovered, but again, I'm ahead of myself.


gpsd:PROG: found trigger string EARTHA.
gpsd:PROG: switch_driver(Delorme EarthMate (pre-2003, Zodiac chipset)) called...

gpsd:PROG: selecting Delorme EarthMate (pre-2003, Zodiac chipset) driver...

gpsd:DATA: packet from /dev/cuad0 with {ONLINE|DEVICEID|PACKET|DRIVER}
gpsd:PROG: device 0 (fd=7, path /dev/cuad0) already active.
gpsd:PROG: Changed mask: {ONLINE|DEVICEID|PACKET|DRIVER} with reliable
cycle detection


gpsd:PROG: switch_driver(Generic NMEA) called..

so when you get "selecting Delorme EarthMate", the loss would seem to
be immediate.

static void earthmate_event_hook(struct gps_device_t *session, event_t event)
contains:
   if (event == event_identified) {
       (void)gpsd_write(session, "EARTHA\r\n", 8);
       (void)usleep(10000);
       (void)gpsd_switch_driver(session, "Zodiac Binary");
   }

which would tell you something interesting:
   gpsd_report(LOG_PROG, "switch_driver(%s) called...\n", type_name);

But we never see a switch to Zodiac.

So you don't need him. You don't even need a perl script. Your test
input is a file containing a bunch of
EARTHA
strings. Until you see "selecting Zodiac Binary", he's not going to be
happy regardless.


Given in order to get there you would have had to have seen an
accepted packet first:
       gpsd_report(LOG_RAW + 3, "Accepted packet on %s.\n",
                   session->gpsdata.dev.path);
which is gpsd_poll which is at the start of gpsd's event loop, but the
gpsd:DATA: packet from /dev/cuad0 with {ONLINE|DEVICEID|PACKET|DRIVER}
call is further down in that loop, something between that and the
completion of that loop is the presumably the problem.


--
Derrick
the guy that wrote the Zodiac support


reply via email to

[Prev in Thread] Current Thread [Next in Thread]