Hello
I own a Altina SiRF III bt GPS with Firmware
GSW3.2.2_3.1.00.12-SDK003P1.01a
I once was one of those reporting that it crashes using gpsd which resulted
in the -b option being added in future releases.
Playing around with gpsmon I have now found a way to switch my BT gps from
NMEA to SiRF binary and back quite reliably.
I suppose the problem is the baudrate change (or the BT stack not reporting
the baudrate correctly).
So this is how I manualy switch my gps:
# gpsmon /dev/rfcommX
Now it is in NMEA Mode, I get a reading and it tells me it's running with some
baudrate. This seams to be the baudrate of last time I opened that serical
device but not the true one.
I cannot set baudrate (s) or binary (n1) while in dumb NMEA Mode.
Let's switch to SiRF binary:
=> tSiRF
The display changes to SIRF but the driver falls back to NMEA.
But now I can set the baudrate:
=> s4800
Very important, switching to any other baudrate than 4800 caused me to loose the BT connection.
Switch to binary mode and reinitialize:
=> n1
=> i
Voila, the drivers successfully switches to SiRF and I get the SIRF output.
But this would be one-way, as soon as I disconnect I can never reconnect without resetting my BT
so it's back to NMEA.
I found a way to switch it back to NMEA but that does not seam to be as reliably as from NMEA to
SIRF:
=> n0i
Sometimes then I'm back to NMEA Mode.
Now I suggest an baud option to be added to gpsd to tell gpsd to switch and lock the serial line
to a specific baudrate and not go around probing for the right speed. This would make it possible
to switch my BT gps to SiRF reliably.
Also if -n is not used gpsd would need to set the gps back to NMEA before disconnecting, else it
won't be able to connect anymore.