How can I get the GPS receiver BU-353 working on Ubuntu?
I have a GPS receiver BU-353 with USB interface and I'm trying to get it working under Ubuntu.
I ran gpsd -n -N -D 2 /dev/ttyUSB0
, and got this output:
gpsd: launching (Version 2.94)
gpsd: listening on port gpsd
gpsd: running with effective group ID 1000
gpsd: running with effective user ID 1000
gpsd: opening GPS data source type 3 at '/dev/ttyUSB0'
gpsd: speed 38400, 8N1
gpsd: Garmin: garmin_gps Linux USB module not active.
gpsd: speed 9600, 8O1
gpsd: speed 38400, 8N1
gpsd: gpsd_activate(): opened GPS (fd 6)
gpsd: speed 4800, 8N1
gpsd: NTPD ntpd_link_activate: 0
gpsd: /dev/ttyUSB0 identified as type SiRF binary (2.687608 sec @ 4800bps)
gpsd: detaching 127.0.0.1 (sub 1, fd 8) in detach_client
gpsd: detaching 127.0.0.1 (sub 1, fd 8) in detach_client
After this I started tangoGPS, which said no GPS and no GPSD found.
Solution 1:
BU-353 is known to work with gpsd.
Try the
-b
flag (for example,gpsd -b /dev/ttyUSB0
)-
Open a separate terminal window and run
gpsmon
(included in the 'gpsd-clients' package) to check gpsd output. Restart gpsmon each time you restart gpsd.Could tango be starting too soon? The dongle requires a few seconds to sort out the signals, identify satellites, and calculate a fix; udev requires a few seconds to start gpsd, which in turn requires a few seconds to probe the dongle (which may not be ready yet) and begin broadcasting useful information when the data stream finally begins.
gpsmon
can help diagnose that problem, too. -
If there's no gpsd output, then do a more detailed check. Do the following steps in order to test the dongle, the kernel module, the mount, the device node, and gpsd:
- Unplug the USB dongle and kill gpsd (
sudo pkill gpsd
). Wait 10 seconds for/dev/ttyUSB0
to be freed. - Plug the USB dongle back in and wait 10 seconds.
- Check
dmesg | tail -n 5
to verify the dongle was really mounted to/dev/ttyUSB0
. If it doesn't mount, then you're missing a kernel module (from your description, that's unlikely). Sometimes it gets mounted to/dev/ttyUSB1
if0
isn't free! - See if udev recognized the dongle and started gpsd (
ps -e | grep gpsd
). If not, then you have a udev rules issue, and you must start gpsd manually withgpsd /dev/ttyUSB0
-
Once gpsd is running, check for dongle output (dongle output = gpsd input). Try
cat /dev/ttyUSB0
(stop it with CTRL+c). If that fails, then try resetting the baud rate to 4800:pkill gpsd stty 4800 > /dev/ttyUSB0 gpsd -b /dev/ttyUSB0 cat /dev/ttyUSB0 # CTRL+c to stop
- If you have have good dongle output (=gpsd input), open a second terminal window and try either
gpsmon
orcgps
to test gpsd output. - Finally, now that you have good dongle output and good gpsd output, try tangoGPS.
- Unplug the USB dongle and kill gpsd (
Solution 2:
I was having a similar problem. I did everything here and still couldn't get it to work in openCPN. I stumbled on to another forum that said to try changing the default settings for gpsd at /etc/default/gpsd
to this.
# Default settings for the gpsd init script and the hotplug wrapper.
# Start the gpsd daemon automatically at boot time
START_DAEMON="false"
# 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/ttyUSB0"
# Other options you want to pass to gpsd
GPSD_OPTIONS="-n -G -b"
GPSD_SOCKET="/var/run/gpsd.sock"
#end of file gpsd
to my surprise it worked.