BU-353 is a nice little USB based GPS receiver that I use for several types of project. Straight out of the wraps it defaults to outputting NMEA data at 4800 baud which is exactly what I want. However, it also supports the SIRF binary protocol and may switch to that format. This can happen if you connect it to a system that uses gpsd. That daemon supports both the NMEA and the SIRF protocol but will switch the GPS to the latter if it can.
So how do you switch it back? Maybe you can just leave it be and the supercap inside will discharge and it will revert to its default settings. The FAQ kind of hinted at that. However, I wasn’t patient enough to see if that works so I needed a quicker option.
It turns out that if you use Windows it is not too difficult. You can follow any one of several guides on the net, for instance this, straight from the horse’s mouth.
But I needed a way to do this from Linux and this is how.
First make sure you have gpsctl in your path. If it is not installed you can install it by running:
sudo apt-get install gpsd-clients
I am doing this on an Ubuntu system but it should work on most Debian derivatives.
Then connect your BU-353 and type (assuming that your GPS device turns up at /dev/ttyUSB0):
sudo stty -F /dev/ttyUSB0 4800 sudo gpsctl -n -D 4 /dev/ttyUSB0
Then it should be back on NMEA.