Ug-353 Gps Driver May 2026

stty -F /dev/ttyAMA5 9600 cs8 -cstopb -parenb Now cat /dev/ttyAMA5 showed garbage. Good—data was flowing.

Still no fix in gpsd . Marta ran gpsd -N -n -D 5 /dev/ttyAMA5 (foreground, debug mode). The debug output revealed: ug-353 gps driver

sudo gpsd /dev/ttyAMA5 -F /var/run/gpsd.sock But cgps showed a blank screen. Zero satellites. Sky was clear. stty -F /dev/ttyAMA5 9600 cs8 -cstopb -parenb Now

Marta was a firmware engineer for a small agricultural robotics startup. Her team had just switched from an old U-Blox GPS to the UG-353 (a common, low-cost 10Hz GPS module with a UART interface). The robot’s navigation stack was failing. “No fix,” the logs said. “No fix.” Marta ran gpsd -N -n -D 5 /dev/ttyAMA5

The garbage was not NMEA sentences (which start with $GP or $GN ). It was random binary noise. Marta grabbed an oscilloscope: the UG-353’s TX was 3.3V, but the CM4’s RX was configured for 1.8V logic due to a broken device tree overlay. She fixed the config.txt :

dtoverlay=uart5,uart5_rx_pullup=on

The UG-353 was wired to UART5 on a Raspberry Pi Compute Module 4. Marta had written a simple systemd service to start gpsd with the correct options: