SirfTech is a program for checking and setting practically all SiRF GPS settings and evaluating changes.
Thanks to SirfTech supporters Jean-Philippe, Richard, Tobias, Jim, Giovanni and John for donations.
29 november 2008, version 2.22
Fixed message selection in SiRF, Set Message Rate.
Now suggest trying NMEA Hot Start to get safe baudrate for switching protocol.
1 november 2008, version 2.21
Fixed message rate selection for switching from SiRF to NMEA on non Smartphone devices.
27 june 2008, version 2.20
Initialize graph options dependant on screen height also for Blackjack II.
Display latitude S and longitude W also for NMEA protocol.
Calculate latitude, longitude, altitude, northing, easting from SiRF message 2 ECEF X, Y and Z for firmware versions like 2.1.0 that lacks support for message 41.
Calculate aproximate UTC second, minute and hour from week time for firmware versions like 2.31 that lacks support for UTC date and time in message 41. Should make graphs work OK.
Open com port with exclusive rights to perhaps work better with PC USB and Bluetooth ports.
Slight adjustment of spinner control sizes.
22 june 2008, version 2.19
Removed display of com errors FE, PE, OE and QOE.
Initialize graph options dependant on screen height. Hopefully more suitable for Smartphone.
Enabled parsing of NMEA latitude and longitude with more than standard decimals for Blackjack II.
Removed unintended log file open dialog for smartphone.
Fixed buggy saving of communication troubleshooting files on PC and perhaps smartphone.
Wait a bit more after opening com port to hopefully avoid error message 'GetCommProperties 1' on Blackjack II.
New error message to display when writing to com port fails.
21 june 2008, version 2.18
Changed CommState fRtsControl to RTS_CONTROL_ENABLE to help sending commands to GPS work on more devices.
16 june 2008, version 2.17
Fixed the Smartphone spinner controls so now they work as expected.
Log files and communication troubleshooting files should now be stored in Smartphone \Storage\Application Data and My Documents on other platforms.
HP iPAQ 514
Main Screen NMEA
Windows CE .NET 4.2
Windows CE 5
SiRF SBAS Dialog
Graph Options Dialog
Trying all comm ports and baudrates.
Found GPS transmitting NMEA.
Main Screen, selected NMEA data.
NMEA, Navigation Initialization.
NMEA, Set Message Rate.
NMEA, Development Data.
NMEA, Select Datum.
NMEA, Set Serial Port (Switch to SiRF).
Tap Set, wait.
NmeaTime stopped updating.
GPS switched to SiRF at 38400 baud.
Tap =Baud, wait.
Pocket PC baud also 38400.
SirfTime started updating.
Main Screen, selected SiRF data.
SiRF, Poll Software Version
SiRF, Initialize Data Source
SiRF, Mode Control
SiRF, Static Navigation
SiRF, DOP Mask
SiRF, Elevation Mask
SiRF, Power Mask
SiRF, DGPS Source
SiRF, DGPS Mode
SiRF, Trickle Power
SiRF, Low Power
SiRF, Advanced Power Management
SiRF, Set Message Rate
SiRF, Switch to NMEA Protocol.
Tap Set, wait.
SirfTime stopped updating.
GPS switched to NMEA at 4800 baud.
Tap =Baud, wait.
Pocket PC baud also 4800.
NmeaTime started updating.
17 January, version 1.02
Two users, Asimakis and Derek, have reported problems using SirfTech with Bluetooth connected Globalsat BT-338 GPS.
More debug messages.
Find GPS would hang on com ports with settable timeouts.
Verified on my Yakumo Delta 300 GPS, USB port and Asimakis' Dell Axim X50v, Native IR port.
18 January, version 1.03
Only com ports supporting all baudrates from 1200 to 115200 could be opened.
Bluetooth, I think typically supporting only 38400 obviously suffers from this.
5 February, version 1.05
Found a reason for Bluetooth problem. There is actually an error in the Bluetooth driver. It reports dwMaxBaud and dwSettableBaud as BAUD_128K. That's not helpful when I try to be nice and not use unsupported baudrates.
Coded a work-around showing a message box about the faulty driver and allow opening the port anyway.
11 March, version 1.07
SirfTech is now more tolerant to communication errors.
A status message is printed with number of received bytes and errors when manually opening a port and no protocol is detected.
Optional logging of received data to file.
Sending of freely composed NMEA messages. Can be used for tweaking NemeriX.
Additional command sent for 'Get' SBAS. May work for GSW3.
21 March, version 1.08
New 'Find Baud' function.
Improved communication multitasking.
For Bluetooth, I am now hopeful but not sure if 'Find Port & Baud', 'Find Baud', 'Get' and 'Set' commands work.
9 April, version 1.12
Display satellite signal strength and status.
Log files can now be freely named and placed.
SiRF 'Get' functions are automatically executed when property sheet page is displayed.
Improved 'NAcknowledgment' handling.
Find more comm port friendly names.
Avoid endless "Buffer Full" messages in certain conditions.
Remove PurgeComm call which caused errors on some ports.
Avoid some 'WriteFile 1' error messages.
There has been reports of problems for GlobalSat SD-502 and Asus MyPal A632/A636 using other baudrates than the default 4800.
Now when default baudrate for a port is not the usual 9600:
- 'Find Port & Baud' and 'Find Baud' will only open port at the default baudrate.
- 'Open' port and switching protocol at another baudrate gives a confirmation message box.
Might benefit Bluetooth ports aswell.
10 April, version 1.13
Now this version even works. :-)
22 April, version 1.15
Fixed mistake with com port friendly names in v1.13.
Now works with Asus MyPal A632/A636 at other baudrates than 4800.
Now when default baudrate for a port is not the usual 9600:
- 'Find Port & Baud' and 'Find Baud' will open port at any baudrate.
- 'Open' port at another baudrate gives no confirmation message box.
Remember last used NMEA and SiRF baudrate.
Now works with NMEA sentences without checksum.
Main screen shows somewhat cryptic receive time for SiRF messages.
8 June, version 1.16
Drastically improved SiRF binary message receiving when characters are lost because of bad communication.
New option to open serial port with default unspecified baudrate.
Comm dialog displays number of received messages, bytes, bad bytes, errors and effective baudrate for troubleshooting communication problems.
Corrected SiRF, Advanced Power Management, Timing Priority options.
Removed warnings for too much power saving for Advanced Power Management, Low Power and Trickle Power update intervals < 10 s. It made setting back to less power saving more difficult.
Display live On-Time, Off-Time and UTC in Trickle Power and Advanced Power Management dialogs to improve understanding of settings.
Display live UTC on Switch to NMEA dialog to see when switch has been done.
Remember last used Switch to NMEA, Message Update Rates.
New SiRF dialog Set Message Rate for setting any message's update rate, turn on/off and displaying which messages are received.
Display message id 29 Nav.Lib. Differential GPS Data in SiRF main screen if activated in Set Message Rate dialog. What is IOD = Issue Of Data?
Display fix type including DGPS in main NMEA and SiRF screens.
Display list of satellite numbers including SBAS 120-138 in SiRF main screen.
Improved handling of unknown NMEA messages and GSW3 PSRFTXT messages.
Adjusted long scroll lists to fit in landscape mode.
12 July, version 1.17
Optimised baudrate find function.
Cleaned up NMEA main screen display.
Display list of satellites in NMEA main screen.
Display message 27 DGPS Status in SiRF main screen.
Display aproximate northing and easting in meters instead of latitude and longitude in SiRF main screen.
Added SiRFstarIII Evaluation Kit User Guide to recommended reading in help screen.
Made 'Find Port & Baud', 'Find Baud' and 'Open' passive. I.e. not transmitting poll requests for quicker protocol detection. Might make SirfTech work with Nokia LD-3W. (It didn't).
29 July, version 1.18
Display DGPS corrections from message id 29 not just for one satellite but for all with available corrections. Go to 'Set Message Rate' property sheet. Disable message id 27 and enable message id 29 to display corrections for GSW3 properly.
Display live 'Time of Week' value on 'Initialize Data Source' property sheet to make it clear when a Set command has taken effect.
29 September, version 1.19
Display baudrate announced by SiRF chip at restarts in NMEA mode in the Comm dialog.
Changed from property sheet to popup menus for SiRF dialogs.
Combined About and Help dialogs and display at startup to reduce number of popup menus.
Display in SiRF main screen:
15 October, version 1.20
Adjusted some dialogs and scrollbars for Windows Mobile 2003 SE square screens and VGA screens.
Moved display of MID 27 and MID 29 DGPS status to DGPS Source dialog. Enable these messages as needed in the 'Set Message Rate' dialog.
13 November, version 1.21
New NMEA dialogs: Navigation Initialization, Set Message Rate, Development Data, Select Datum and Set Serial Port.
NMEA debug and unknown messages removed from main screen and displayed in dialogs instead.
Easier changing of Pocket PC baudrate directly in protocol change dialogs.
Automatic opening of com port on program start.
Removed dead SiRF values from main screen.
Corrected display of SBAS Get parameters.
Show live MID 50 SBAS Status and MID 4 Measured Tracking Data in SiRF SBAS dialog.
Fatal crashes after com port open on some devices. Reported for Loox N560, Loox T830, Mio P350 and Mio A201.
14 November, version 1.22
Removed automatic opening of com port on program start.
18 November, version 1.23
Made dialog handling more robust by avoiding use of invalid dialog handles.
19 November, version 1.24
Avoid concurrent write to registry from two threads.
20 November, version 1.25
Reinstalled automatic opening of com port on program start.
Disabled parsing of NMEA debug and unknown messages.
Doesn't crash anymore.
21 November, version 1.26
Reinstalled corrected parsing of NMEA debug and unknown messages into NMEA dialogs bottom grey text box.
A big thanks to everyone submitting error reports and offering debugging help. Thanks.
5 December, version 1.27
Two updates for SiRF Star IIe/LP firmware version 231.000.000ES with incomplete mid41 data:
- SiRF main screen fix data now taken from mid2 instead of mid41.
- SiRF UTC seconds faked from mid2 time of week if mid41 UTC hour is zero.
8 January 2007, version 1.28
Changed SiRF SBAS dialog live MID 4 Measured Tracking Data State from decimal to hex display as in SiRF main page.
30 January 2007, version 1.30
Ignore a number of serial port interface errors and announced missing functionality and just try and use the serial port anyway.
Introduced extra Sleep(2000). Test for HTC Artemis P3300.
Calculate sun and moon positions.
15 February 2007, version 1.31
Removed extra Sleep(2000).
Try and receive characters at any serial event except errors. Thanks to Nick Tcholakov for the programming tip. He had the same problem communicating with a HTC Artemis P3300.
20 February 2007, version 1.32
Improve sharing of comm port.
Try polling serial port for received characters instead of event driven reception.
23 March 2007, version 1.32
Replace MID 50 SBAS Status with list of SBAS SVs with azimuth and elevation in SiRF SBAS dialog.
16 November 2007, version 1.32
Display polar plot of visible SBAS SVs, sun and moon in SiRF SBAS dialog.
New dialog 'Graph' for scaling 10 data sources for graphs displayed as an alternative to main screen text output.
Help buttons in NMEA, Set Serial Port and SiRF, Switch to NMEA Protocol dialogs telling the risks of choosing unsuitable baudrates when switching protocol.
No preselection of baudrate to switch protocol to.
Removed "This baudrate might not be safe to use." message.
Eliminate 'Readfile' error message when closing program or serial port.
Added satellite elevation on SiRF main screen.
Added version information to SirfTech.exe file.
11 January 2008, version 2.0
Added Zero and Save buttons in Graph dialog.
Added text "SirfTech is no longer freeware." etc. in About dialog.
Reinstated preselection of baudrate to switch protocol to but only when previous switch was successful or a baudrate was detected from restart PSRFTXT message.
Display number of received NMEA and SiRF messages separately in comm dialog.
Removed confusing display of "bad bytes" in comm dialog.
Replaced NMEA longitude and latitude reporting with northing and easting.
Added GAGAN PRN 128 on list of possible SBAS to show on visible list.
15 January 2008, version 2.0
Selectable Time Scale for graphs.
18 January 2008, version 2.0
More Time Scales for graphs.
Corrected position of GAGAN PRN 127 for SBAS visible list.
Corrected graph grid positioning when resuming.
20 January 2008, version 2.0
Removed "Default" baudrate option.
Display polar plot of visible SBAS SVs, sun and moon in SiRF SBAS dialog also when receiving NMEA.
I will try to outline in reasonable detail how I would go about turning off static navigation on an unknown Smartphone.
At first start of SirfTech the about dialog is displayed. Close it with the OK button.
Next you need to get communication to work between the GPS chip and SirfTech.
Use menu NMEA, Communication to open the Communication dialog.
If you know which com port the GPS is connected to, select that port else use the 'Find Port & Baud' button.
If you know at which baudrate the com port can receive data from the GPS correctly select that baudrate else use the 'Find Baud' button.
If you selected the correct com port it should show by an incrementing received bytes counter.
If also the baudrate is correct you should also see the NMEA or SiRF or even both message counters incrementing.
Only now if you are receiving messages you can actually use SirfTech to do anything useful else you can only look at the menus and dialogs. Exit the communication dialog.
For starters you can observe incoming GPS data in the main screen. You can also switch to the graph screen to see trends of various data.
Next would be to try if it is possible to execute some command to the GPS in the protocol it is currently running. That is if the NMEA message counter is incrementing, only commands on the NMEA menu will work and if the SiRF message counter is incrementing, only SiRF menu commands will work. Communication and Graph dialogs are of course independent of protocol.
For now I assume the GPS is outputting data using the NMEA protocol. Most devices do so by default.
Use menu NMEA, Navigation Initialization. With the radio button 'Snap Start' marked use the Set button to send the command to the GPS chip. If successful the GPS chip will output some information text that is parsed by SirfTech to populate the empty text boxes. Executing a snap start restarts the GPS chip program in the same way as turning the power off and on. A hotstart is the same only that it is the same as having the power turned off for a longer time, I guess some minutes. If you don't get any reaction from a snap start, it might not be impemented in the chip, try a hot start. If you do get a reaction, go to the read only edit box at the bottom of the dialog. Scroll down the text to find a baudrate. This is valuable information for safely switching protocol later.
To be able to switch static navigation off on a SiRF GPS chip, it has to be using the SiRF binary protocol. Switching protocol on a SiRF GPS chip unfortunaltly means that you also have to specify a baudrate to be used by the GPS chip when restarting using the new protocol.
Even more unfortunat is that some GPS devices or rather communication channels don't support all possible baudrates that the chip can be set to use. Bluetooth devices as an example typically support only 38400 baud so switching protocol on one of these to another baudrate then 38400 will cause loss of communication. You cannot receive proper data and you cannot send any command to rectify it. All data in both directions is garbled by the incorrect baudrate. To get such a device back in working order can mean leaving it to discharge internal batteries until a reset to default settings occur after maybe weeks of waiting.
Use menu NMEA, Set Serial Port. The protocol is by default selected to SiRF protocol. If a previous snap start resulted in a text with a baudrate being output and correctly picked up by SirfTech, that baudrate should now already be selected and safe to use.
On some devices you can open the com port at any baudrate and still receive correct data. This means that you cannot trust that the baudrate selected for the com port is the same as the baudrate the GPS chip is using. If on the other hand you can receive proper data only when opening the com port at one specific baudrate that baudrate should be safe to use and probably other baudrates to but I would not bet on the others.
If you did not get an indication of a safe baudrate I recommend not going further. You would not want to be the first to find out if your device can handle only one baudrate. Search the internet to find out more.
If you are confident enough to go on, use the Set button to send the command. If successful the NMEA time should stop incrementing. If using a low baudrate like 4800 and SiRF binary protocol it could take 30 seconds before responding to commands. It works but with slow response. If the selected baudrate was the same as the com port was opened with the SiRF time should start incrementing. If not, use the =Baud button to adjust the com port baudrate.
Now assuming the GPS is already outputting data using the SiRF protocol.
Try menu SiRF, Poll Software Version. Opening a SiRF dialog actually activates the Get button automatically to send a command to the GPS chip to read the current value of settings. In case there is no response try using the Get button manually.
Having gotten this far successfully, you can go on to the SiRF, Static Navigation dialog. Uncheck the checkbox and use the Set button to send the command to turn off static navigation. Check the checkbox and use the Get button to verify.
Observing the main screen speed and direction numbers (or the bottom two graphs) after getting a fix indicates very clearly if static navigation is on or off.
For switching back to NMEA protocol using the SiRF, Switch to NMEA dialog, the same precaution regarding using a known safe baudrate applies. Don't try it if you are not sure.
If the GPS was using NMEA before it is very likely that your other programs using the GPS output must have the GPS chip back to NMEA protocol at the same baudrate as before to work.