I've been struggling for awhile to setup GPS on my Raspberry Pi. I have a Hemisphere Vector H102 connected through a serial connection via USB through an adapter.

I've followed this guide which seems straight-forward and fool proof.

The issue, in short, is when I run:

sudo killall gpsd
sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock

The error message displayed is:

cgps: GPS timeout

I have absolutely no idea what the issue could be. First, I thought it could be an issue with the GPS. These devices are relatively fragile, so I figured a component of it could be damaged. I plugged the device into my computer while sitting outside and it got a position, differential, and heading lock.

Once I knew it had a lock, I plugged it back into the Pi, reran everything, yet I still recieved the error message.

I know the device can be detected. Running lsusb, shows the following entry:

Bus 001 Device 010: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

Also running ls /dev/ttyAMA* correctly shows:


Then, I thought it could be a problem with how the Raspberry Pi is configured. I doubled checked the aforementioned guide.

Conveniently, I have another GPS, although this one is a much smaller and cheaper that plugs directly into USB and doesn't require it's own power source. Rerunning all the commands replacing /dev/ttyAMA0 with /dev/ttyUSB0 worked. A lock was achieved relatively quickly and cgps displayed the correct data.

Even when the lock wasn't achieved right away on the USB GPS, cgps didn't time out. Does that mean the problem is a connection issue?

Just to double check that it wasn't an issue with GPSD, I called variations of the command, changing the location specified, and even omitting the location. (Always making sure to kill a GPSD process before starting a new one.) Sometimes, the model of the GPS would flash up as raw data, but cgps always timed out.

sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock
sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
sudo gpsd -F /var/run/gpsd.sock

I have no idea what to do. Any help would be greatly appreciated!


I suppose it's also important to mention that I had a lock using this GPS the other day. Now it doesn't get a lock at all, which to me makes no sense.

  • Same issue here, still don't know a fix. Jan 3 '16 at 12:40
  • I eventually got this working, but I have really no clue what I did to fix it. The GPS unit I had seemed really temperamental and my project team has since upgraded to a different unit. My best advice would be to make sure you are outside and give the device plenty of time (maybe up to 15 minutes) to achieve the lock. Best of luck! Jan 3 '16 at 16:21
  • Status NO FIX means it simply didn't get a lock - is that correct? Jan 3 '16 at 22:35
  • To my knowledge, yes, that's correct. Jan 3 '16 at 22:36
  • The GPS needs to know where the satellites are. It downloads an almanac with orbit info from the satellites and it sometimes it takes a long time(cold start). The saved almanac gets stale sometimes and a new cold start is needed.
    – PaulF8080
    Apr 7 '16 at 17:23

I faced a similar issue, the way i solved it :

1) check GPS data stream

cat /dev/ttyAMA0

=> i was able to see the NMEA stream

2) check GPS data with gpsmon

gpsmon  /dev/ttyAMA0

=> it was running well using the stream

3) run dgps in debug mode

 sudo gpsd /dev/ttyAMA0 -N -D3 -F /var/run/gpsd.sock

=> it says that it was already running

4) then a realized (i'm running Jessie) that the two following lines where missing in my install process (see adafruit instruction for its Ultimate GPS) :

sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket

5) Then i was able to launch gpsd :

sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock

=> and cgps get a fix and no timeout

My configuration : RPI 2 Jessie Ultimate GPS from adafruit (UART)


I had exactly the same problem:

cgps: GPS timeout

I followed the advice above, stopped the serial console etc. and kept getting the same error.

Wiring should be:

RXT on the GPS goes to TXD on the PI
TXD on the GPS goes to RXT on the PI

When you think about it I suppose it is really obvious but I'm so used to putting like-to-like.

Two hours of Googling, check soldering, the bread board .... anyway, no knowledge is wasted.


Note that with the raspberry pi using the Adafruit Ultimage GPS Hat I used this line: sudo gpsd /dev/serial0 -F /var/run/gpsd.sock instead of this one: sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock and it solved my issues.


I've been stuck for a while with another type of GPS module, Quectel_L86. I've try to read its output with

gpsmon /dev/ttyAMA0 

It never gets a lock on any GPS so I picked my existing external antenna from other project and tried again. Finally I got a lock with GPS from cold boot quite quickly.

Hope this helps.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.