GNSS module ZED-F9P freezes often

Hi there,

I have been trying to get the script working for a while now, the gpsd service is up and running, the camera ZED X and ZED box is running as well, only the GNSS data is not coming through.

ZED X itself requires Daemon restart through “systemctl restart zed_x_daemon” several times before it work well, due to GMSL cable.

GNSS does work when restarting fresh, can confirm that as “xgps” shows sats as well as “sudo cat /dev/ttyACM0” shows data coming through, but after running a python script that has to do with anything gnss related or running xgps at times even stops the ttyACM0 from sending anymore data no xgps or cat command returns anything.

only a restart fixes this situation so far I tried killing all that uses gpsd through “killall gpsd”
restarting gpsd service and ttyACM0 services

not working either, is there anyway I can restart the gps module without restarting whole device.

I have been using this method fairly reliably to reset zed cameras when they hang in a state that would otherwise require unplugging and replugging, it should work assuming your GNSS device is connected via USB. How do you reset a USB device from the command line? - Ask Ubuntu

I have been attempting to tackle the same issue as you in feeding GNSS data to the fusion API, and as far as I can tell, the implementation does not work with the current SDK. I would wait for SL to ship some functional code before getting too bogged down in it.

Thank you for the reply,

I am using the optional built-in gnss module ZED-F9P so its sending the data through ttyACM0 port instead of ttyUSB port.

Looking at your solution, it seems there are other ways to reset port besides just restarting tty service, I will look into it and send if i find something useful, thanks.

Indeed there is very little support to gnss module in sdk at the moment I hope they fix this in next patch.


The GNSS issue is known and is due to how gpsd and systemd work together.
From our latest investigation, I advise you disable gpsd from systemctl

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

And run it natively with

sudo gpsd -nG -P /run/ /dev/ttyACM0

If you need to kill it, that will be sudo kill $(pidof gpsd)

Our GNSS features will get a lot of accuracy and stability improvements in the next few patches, indeed :slight_smile:

1 Like

Thank you very much, the gnss solution your provided works perfectly, there is one more thing that is not working at all with all possible solutions we tried, that is geopose.
The available through SDK/Samples/geotracking/recording/python/

It keeps showing “SEARCHING” and even as instructed we moved the camera along with gnss for quite a lot still it shows searching and does not fuse the gnss with camera pose.
The imu data is coming through perfectly as well as xgps shows sats but the script does not provide the corrected svo or kml file.

Can you please look into it.

We’ve got issues like that in the past. We are improving GNSS fusion a lot these days. 4.0.6 and 4.0.7 will have significant improvements, you’ll get them soon :slight_smile: