https://indilib.org/support/tutorials/157-persistent-serial-port-mapping.html Commands: Dmesg -shows device status, unplug and replug to get info Lsusb shows usb devices Cgps shows gps info Geany -text editor Note ID: Bus 003 Device 059: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC 1) Find ttyusbX Tty: ls /dev/ttyUSB* -maybe change the *? Or dmesg | grep tty dmesg 2) Find the serial ID: udevadm info -a -n /dev/ttyUSB0 | grep '{serial}' | head -n1 In my case, I got the following: ATTRS{serial}=="A8YNLO6X" U-Blox AG= 1546:01a7 When working: /dev/ttyACM0 3) Create a udev rule file (use above info): /lib/udev/rules.d/ Name must be before other rules: “1-gps.rules” Rule: # U-Blox symbolic link of the driver to a customized one KERNEL=="ttyACM[0-9]*", SUBSYSTEM=="tty", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a7", SYMLINK="ttyGPS" 4) Change GPSsd file. /etc/default/gpsd Edit devices= to “/dev/ttyGPS” if you made a udev rule. (maybe try changing auto to false, and ttyACM0 , and changing the ACM# until it works as configured?) default: # Start the gpsd daemon automatically at boot time START_DAEMON="true" # Use USB hotplugging to add new USB devices automatically to the daemon USBAUTO="true" # Devices gpsd should collect to at boot time. # They need to be read/writeable, either by user gpsd or the group dialout. DEVICES="" # Other options you want to pass to gpsd GPSD_OPTIONS="" New: # Start the gpsd daemon automatically at boot time START_DAEMON="true" # Use USB hotplugging to add new USB devices automatically to the daemon USBAUTO="true" # Devices gpsd should collect to at boot time. # They need to be read/writeable, either by user gpsd or the group dialout. DEVICES="/dev/ttyGPS" # Other options you want to pass to gpsd GPSD_OPTIONS=""