I am using Raspberry Pi 3 with U-blox AG USB GPS. I am not getting a fix in it. To check the data coming out of GPS I used the following command:

sudo cat /dev/ttyACM0

It did not show any data.

My default configuration file is as follows:

sudo nano /etc/default/gpsd

# Default settings for the gpsd init script and the hotplug wrapper.

# Start the gpsd daemon automatically at boot time

# Use USB hotplugging to add new USB devices automatically to the daemon

# Devices gpsd should collect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.

# Other options you want to pass to gpsd

So why I am not getting any data when using cat /dev/ttyACM0?

Why am I getting no fix?

  • 1
    I doubt /dev/ttyACM0 is correct. Could you add a photo and describe the connections between the GPS unit and the Pi?
    – joan
    Jul 16, 2018 at 16:48
  • It seems that some people had the same issue. raspberrypi.org/forums/viewtopic.php?t=56023 Jul 16, 2018 at 16:52
  • 1
    In my experience, the device is correct.
    – eftshift0
    Jul 16, 2018 at 17:03
  • Just had this problem (RPi4, uBlox). From day 1, I was able to read NMEA sentences on ttyACM0 until I managed to configure gpsd with a settings file similar to the above (prior to that gpsd + cgps weren't detecting the device). After adding the settings file and rebooting, gpsd + cgps are FINALLY working fine. But, I'm no longer getting NMEA sentences with cat /dev/ttyACM0 (which is fine with me since gpsd is FINALLY working). My guess is that gpsd reconfigured the receiver so that it is no longer streaming NMEA sentences.
    – D. Woods
    Oct 2, 2021 at 11:58

3 Answers 3


You have another process reading from it (gpsd)? Then maybe it's because that process is reading from the file already. Try stopping the service and then do the cat. It should work.

In my experience with GPS devices so far, there's no need to use an external service if you know how to parse the output from the device. If that's the case then just plug in the device and read from the file.

  • How can I check that another process is reading from gpsd?
    – Thoht
    Jul 19, 2018 at 7:29
  • lsof should be able to list files opened by any given process. I'd just try stopping gpsd and checking if then I could cat from the file.
    – eftshift0
    Jul 19, 2018 at 14:19

From Unable to find USB/TTY GPS unit, notably this post:

Plug the USB GPS into the Pi, you should be able to see it detected in:

sudo lsusb

Mine came up as

Bus 001 Device 004: ID 1546:01a6 U-Blox AG


dmesg | grep -i usb

I established that the GPS device was paired to:


You can check your GPS data feed by using the cat command and viewing the GPS data directly by typing

sudo cat /dev/ttyACM0

Next I piped the GPS feed into the GPS demon - gpsd by

sudo gpsd /dev/ttyACM0 -n -F /var/run/gpsd.sock

I had to ensure that the -n flag was present in this command, as trying without the flag resulted in a time out.

then just to be safe I killed the gpsd and restarted it

sudo killall gpsd

You should now be able to use

cgps -s

to view the interpreted GPS data coming from your unit.


Since you are taking STDIN from /dev/ttyACM0, the command is:

cat < /dev/ttyACM0

You should also check that your userid has read permissions to /dev/ttyACM0:

ls -l /dev/ttyACM0

You may need to grant read permissions to 'other':

sudo chmod o+r /dev/ttyACM0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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