GPS 18x suddenly died

Many years ago, I bought a Garmin GPS 18x-LVC. Has always worked fine. Week ago it still worked, although I did notice that it took quite a long time to send out valid GPRMC messages.
A few days ago I turned it on again, but no life comes out of it at all. Even waiting for some time (> 1 hour) does not help, it remains silent.
Also the Garmin configuration tool does not help: it does not see it.

Does anyone have any idea if it can be saved? Many thanks in advance.

Maybe the internal flash got corrupted or wore out. You might try connecting it to a Windows machine and use the Garmin utilities to re-flash the firmware and/or factory reset. The Garmin instructions how to do that are not very good, but it can be done. Otherwise, they are relatively inexpensive new or picked up off evilBay.

Thanks for the tip. I found the Garmin utility to flash it to the latest firmware, but the utility also can’t talk to the 18x.
So I guess it’s bricked.
They are indeed not that expensive and Garmin still sells them directly from their website, so I think I’ll go for that.

Are you sure it died? As it sometimes looks that way, but you have to push them into action. I have seen before that they do not always jump into action on their own.
Telling GPSD to use BAUDRATE = 9600 often helps as well as starting GPSMON…or simply kick them on the port with the reset command.
They are told to operate at 4800, but often they run better at 9600…don’t know why it happens. Kick them a bit with software command, often they come alive again.

I’m not 100% sure it’s dead, but now matter how I kick it, it doesn’t respond.
I tried waiting > 1 hour, flashing new firmware, (re)configuring it with the Garmin service tool, talking to it with a terminal program and trying to reset it to the defaults (by sending $PGRMO,4). But it remains completely silent. Unfortunately there is no PPS or power led, so it’s hard to figure out what’s wrong with it.
In the meantime I ordered a new one. Once I get that one up and running, this one is available for anyone who wants to tinker with it.

Edit /etc/default/gpsd

# Devices gpsd should collect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.
DEVICES="/dev/ttyS0 /dev/pps0"
BAUDRATE=9600
# Other options you want to pass to gpsd

GPSD_OPTIONS="-n -N"

# Automatically hot add/remove USB GPS devices via gpsdctl
USBAUTO="false"

Then restart GPSD, check if the status is ok.

Then run GPSMON and wait for it to 3D Fix, by then it should start pulsing PPS.

I know they say the 18X should be 4800baud, but I was having problems all the time too, then I descovered GPSD talks to it at 9600 and it works for me.
Maybe they changed the lastest firmware to default at 9600.

But I have no problems now. But GPSMON should give binary data almost from the start and only starts PPS after 3D Fix has been reached, often less then 5 minutes.

BTW, you do not need to load pps-ldisc, nor setserial, nor linuxptp…all is not needed and makes things more complicated.

GPSD and Chronyd or NTPd is enough to get things running.

My bad!!! This is the correct way, then see if it works.
My 18x 5Hz gave me the same today, took hours to get it working again.
For the 18x 1Hz

Give that a try, they probably changed the speed.

Mine did PPS with module pps_ldisc loaded but no NMEA/sat-codes until I changed the speed by force.

See the first line of my 18x 1Hz

root@server:~# gpspipe -r
{"class":"VERSION","release":"3.22","rev":"3.22","proto_major":3,"proto_minor":14}
{"class":"DEVICES","devices":[{"class":"DEVICE","path":"/dev/ttyS0","driver":"Garmin Serial binary","subtype":"1786: 4.50","activated":"2024-03-11T14:17:27.000Z","flags":1,"native":1,"bps":9600,"parity":"N","stopbits":1,"cycle":1.00},{"class":"DEVICE","path":"/dev/pps0","driver":"PPS","activated":"2024-03-11T14:17:27.000Z"}]}

and the 5Hz version = 19200…for people that want to use this one:

{"class":"VERSION","release":"3.22","rev":"3.22","proto_major":3,"proto_minor":14}
{"class":"DEVICES","devices":[{"class":"DEVICE","path":"/dev/ttyS0","driver":"NMEA0183","activated":"2024-03-11T14:18:13.808Z","flags":1,"native":0,"bps":19200,"parity":"N","stopbits":1,"cycle":1.00},{"class":"DEVICE","path":"/dev/pps2","driver":"PPS","activated":"2024-03-11T14:18:13.200Z"}]}

This gets a little tricky because I don’t have any Linux system here. I am more of an OpenBSD user.
But thanks anyway for the tip.

Sorry can’t help you with BSD.

However, GPSD should work the same…if you have the package for BSD.

No worries. There is a gpsd package for OpenBSD, but until now I’ve always used OpenNTPd. I know it’s not the most accurate NTP daemon, but it works more than good enough for me.
But I’ll put it on my list to have a look at gpsd and see if I can get it to work with the reference ntpd.

Anyway, my new 18x LVC arrived yesterday, I put a DB9 and USB connector (for 5V power) on the cable and it is up and running. Happy days :grinning:

1 Like

I would advise you to take a look at Chrony too, as it’s more advanced that NTPD.

GPSD and the Garmin are fully supported by Chrony in various ways.

Also the configuration and offset at pretty easy to correct with Chrony, it has very good (build-in) tools to measure it, so you can correct it.