Updated 30 June 2010


SirfTech Version 2.23, 15 november 2009, (c) Dennis Gröning

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.


17 november 2009, version 2.23
Show Windows Mobile 5+ GPSID in comm port list.
Updated SBAS satellite list.
Show sun if elevation > -10°, moon if elevation > 0° and SBAS satellites if elevation > 5° in SiRF, SBAS dialog.
Update tracked SBAS satellite in SiRF, SBAS dialog also from NMEA protocol.
Advice how to enable MID29 in menu SiRF, DGPS Source.
Probably fixed support for firmware versions like 2.1.0 that lacks support for message 41.
Fixed main screen UTC date display for SiRF protocol.
Shortened Estimated Horizontal and Vertical Precision Error text in main screen for Smartphone narrower screen.
Corrected NMEA, Navigation Initialization, Warm Start (Init), Time of Week input.
Removed automatic update of current Time of Week in SiRF, Initialize Data Source to allow free input for Warm Start (Init).

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.

Windows Smartphone

HP iPAQ 514




15 june 2008, version 2.16
Unfortunatly on the Smartphone platform most spinner controls doesn't work properly. Selected values are not recognized by the program. The most critical effect making it impossible to use the Switch to NMEA dialog. Executing a factory reset in the Initialize Data Source dialog is one alternative way of getting back to NMEA on most devices. Or use v2.16 where Switch to NMEA dialog works also for Smartphone.

23 May 2008
Even more platform support.
SirfTech v2.14 is supposed to have almost full functionality also on the Windows Smartphone platform.
List boxes are converted to spinner controls. Check boxes are never undeterminate, only checked or unchecked.
Navigate between dialog controls with joystick up and down, select control options with joystick left and right or joystick in.
Tall dialogs automatically gets a scrollbar. Scroll using joystick up and down.
As I don't have any Smartphone I cannot test it. I have only run it in an emulator.

SirfTech Smartphone About
Smartphone 2003 emulator

13 May 2008, version 2.14
Update received bytes and messages in Com dialog every second.
Improved shifting of focus in dialogs.

29 April 2008, version 2.13
Corrected bug previously preventing receiving of some SiRF Binary messages. Might explain some "should have worked" scenarios.
Display of detected protocol in Comm dialog works properly.
PC serial port COM1 to COM20 and virtual port \\.\WCEUSBSH001 supported.
Others COM0: to COM9: as before.

17 April 2008, version 2.12
Effective baudrate calculation works again.
PC version supports virtual com port \\.\WCEUSBSH001 for using ActiveSync USB cable as an ordinary serial cable connection with Pocket PC redirecting inbuilt GPS data.

28 March 2008, version 2.11
More consistent updating of live dialog data.

21 March 2008, version 2.10
More changes on exit cleanup code.

18 March 2008, version 2.09
Avoid crashing at program exit on some devices.

16 March 2008, version 2.08
Changed protocol handling from NMEA OR SiRF to NMEA AND SiRF in parallell. Makes it possible to handle NMEA frames embedded in SiRF binary protocol frames.
As a consequence all Get and Set buttons are now always enabled.
Added message ID's 172 Wheeltick, 221 and 238 to SiRF Set Message Rate listbox.
Replaced main menubar with a separate menubar containing only an OK button in Pocket PC dialogs.
Enabled caption texts at runtime for non Pocket PC dialogs.
Limit Graph options default and saved Pixel min and max values to available screen height.
Reorganised Graph options dialog for better space and visibility.

5 March 2008, version 2.07
Changed dialog window style to better suit non Pocket PC devices.
Restored Graph options dialog font size and increased text box heights.

4 March 2008, version 2.06
Changed main window style to better suit non Pocket PC devices.
Reduced Graph options dialog font for better space and visibility.

3 March 2008, version 2.05
Handle weird serial port drivers with default baudrate = 0.
Changed dialog window style to better suit non Pocket PC devices.

2 March 2008, version 2.04
Adjusted dialog caption bar for AIO systems.

27 February 2008
Main menu in one row for Vista.

26 February 2008
More platform support released.

Windows 95


Windows XP

Main Screen NMEA

Windows Vista


24 February 2008, version 2.03
Functionally v2.03 only adds back display of latitude and longitude in main screens alongside northing and easting.
Platform support, on the other hand, has improved. If aygshell.dll is missing, as it often is on systems like PNA or AIO (All In One) running Microsoft Windows CE 4.2 / 5.0 Core Version, SirfTech creates a CommandBar, which doesn't need aygshell.dll, placed at the top of the screen, instead of a MenuBar at the bottom of the screen.

Windows CE .NET 4.2

ViaMichelin X950T

Windows CE 5

Mio C230

8 February 2008, version 2.02
'Find Port & Baud' and 'Find Baud' works as expected again with no error messages "SetCommState: incorrect parameter".
Now loads with missing aygshell.dll and shows message 'Missing aygshell.dll' instead of the more cryptic "Cannot find SirfTech or one of its components. Make sure path and filename are correct and that all required libraries are available". No menus are available unfortunatly but at least you know what is missing.

6 February 2008, version 2.01
Now loads with missing commdlg.dll. Only penalty is that graph colours cannot be changed.

20 January 2008, version 2.0
Numerous changes since version 1.28 released 8 January 2007. See history at bottom of page.

SiRF SBAS Dialog

Graph Options Dialog


Information about any problem using SirfTech is gratefully received by email.


Screen Shots


Download SirfTech.2009-11-17.v2.23.zip.
Download SirfTech.2008-11-29.v2.22.zip.
Download SirfTech.2008-11-01.v2.21.zip.
Download SirfTech.2008-06-27.v2.20.zip.
Built for ARM based Pocket PC or Pocket PC 2000. Should also work on all Pocket PC 2002, Windows Mobile 2003 and later.

Probably also works on most Handheld PC 2000 running Windows CE 3.0, PNA or AIO (All In One) systems running Microsoft Windows CE 4.0 / 4.2 / 5.0 Core Version and Smartphone.

Download SirfTech.Pc.2008-06-27.v2.20.zip.
Should work on X86 Windows 95, 98, ME, NT, 2000, XP and Vista.

SirfTech may not be bundeled with other software, included on CDs etc, linked to from other web sites or made available for download elsewhere.

Link to this page instead.


Copy SirfTech.exe to \Program Files\ and make a link to it on the start menu. Or if you are lazy, just copy it to \Windows\Start Menu\Programs\.


SiRFstarIII Evaluation Kit User Guide chapter 3 and 4 gives an excellent description of navigation parameters you can set in SirfTech.
SiRF Binary Protocol Reference Manual
NMEA Reference Manual
SiRF Free Demo with:
- SiRFDemo for PC, SiRFDemo User Guide, partly valid for SirfTech.
- SiRFDemoPPC for Pocket PC, SiRFDemoPPC User Guide.
SiRFXTracDemo for Pocket PC.
GpsPasSion SiRFdemo tutorial.
Description of interface and basic functions of program "SirfTech" in Russian.


Please don't publish my email address anywhere. Link to this page instead.

Paper mail:

Dennis Gröning
Ranglebyn Berget
SE-66194 Säffle


About Dialog

Main Screen

Comm Dialog

Comm Ports


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).
NmeaTime updating.
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



On/Off-Time may need MID 255 Debug Messages.
SiRF, Trickle Power

SiRF, Low Power

On/Off-Time may need MID 255 Debug Messages.
SiRF, Advanced Power Management

SiRF, Set Message Rate

SiRF, Switch to NMEA Protocol.
SirfTime updating.
Tap Set, wait.

SirfTime stopped updating.
GPS switched to NMEA at 4800 baud.
Tap =Baud, wait.

Pocket PC baud also 4800.
NmeaTime started updating.


6 January 2006, version 1.0
First release of SirfTech version 1.0. So far only tested on my own Yakumo Delta 300 GPS.

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.
Fixed 2006-01-17.

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.
Fixed 2006-01-18.

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:

  • EstimatedVerticalPrecisionError

  • EstimatedHorizontalVelocityError

  • HeadingError

  • ClockBiasError

  • ClockDriftError

  • Distance

  • DistanceError

  • EstimatedTimeError

  • On my GPS only EstimatedVerticalPrecisionError shows live values. The others will be removed unless I get reports on them being live items on other firmware versions.
    Removed display of DGPS status in SiRF main screen. Will move it to a DGPS dialog.

    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.

    Best Regards
    Dennis Gröning