What is the latest ROM version for the ISM420? How do I read it?

The base part number is ISM420R1-C33. The ROM Code part number can be read from the GPS in OSP (Sirf Binary) mode only and the version is :  “GS4e -4.1.2-P1”.

The GPS will initially come up in OSP at 115200 baud, unless you change it with the strapping pins 4 and pin 5 or have a SPI or EEPROM attached and then unit will start in NMEA 4800.

OPS MID 129 routine (switch from OPS to NMEA) for ISM420-480 EVB

Function: OSPMID129

Description: Send SiRF MID 129 (Switch to NMEA Protocol) to GPS in OSP mode

// where: A0A20018 - Start sequence/Payload length
// 81020101000101010501010100010001001000012580 - Payload
// 01ABB0B3 - Checksum/End sequence
// 81 MID
// 02 Mode: 00-Enable NMEA debug msg
// 01-Disable NMEA debug msg
// 02-Don't change last set value
// 01 GGA message rate (sec)
// 01 Checksum GGA message
// 00 GLL message rate (sec)
// 01 Checksum GLL message
// 01 GSA message rate (sec)
// 01 Checksum GSA message
// 05 GSV message rate (sec)
// 01 Checksum GGA message
// 01 RMC message rate (sec)
// 01 Checksum RMC message
// 00 VTG message rate (sec)
// 01 Checksum VTG message
// 00 MSS message rate (sec)
// 01 Checksum MSS message
// 00 EPE message rate (sec)
// 01 Checksum EPE message
// 00 ZDA message rate (sec)
// 01 Checksum ZDA message
// 00 Unused
// 00 Unused
// 2580 Bit rate 0480=1200, 0960=2400, 12C0=4800, 2580=9600,
// 4B00=19200, 9600=38400, E100=57600
void OSPMID129(char mode[], char GGA[], char GLL[], char GSA[], char GSV[],
char RMC[], char VTG[], char MSS[], char EPE[], char ZDA[],
char rate[])
char msg[65] = "A0A2001881"; // OSP msg start
char bmsg[32];
char csum[6];
char tmp[2];
unsigned int checksum = 0;
int i;
int j = 0;
strcat(msg,mode); // Add mode
strcat(msg,GGA); // Rate/CS
strcat(msg,GLL); // Rate/CS
strcat(msg,GSA); // Rate/CS
strcat(msg,GSV); // Rate/CS
strcat(msg,RMC); // Rate/CS
strcat(msg,VTG); // Rate/CS
strcat(msg,MSS); // Rate/CS
strcat(msg,EPE); // Rate/CS
strcat(msg,ZDA); // Rate/CS
strcat(msg,rate); // Add bit rate
strcat(msg,"0000"); // Add unused
for (i=8;i<strlen(msg);i+=2)
checksum += axtoi(tmp); // Sum
checksum &= 0x7FFF;
sprintf(csum,"%04X",checksum); // Convert hex string
strcat(msg, csum); // Add checksum
strcat(msg,"B0B3"); // Add End sequence
strcat(msg, NULL); // Terminate
/* Convert to binary & send */
for (i=0;i<strlen(msg);i+=2)
bmsg[j] = axtoi(tmp); // Convert & store
USART_SendChar(GPS_USART, bmsg[j]); // Send byte
DPRINT(msg); // Send to console

How do I switch from NEMA to the Sirf Protocol on the ISM300?

You need to send a Carriage Return (0x0D) and Line Feed (0x0A) after the checksum (*37) for the SiRF chip to act on the message.

Ex: $PSRF100,0,57600,8,1,0*37<CR><LF>

What OSP messages is used to turn the GPS Off ?

The command to turn off the GPS in OSP is Message ID 205 (Sub ID 16). So the actual message is:


Is flash enable required on the GPS? Reset?

  • The FLASH_EN is only needed to Flash the GPS.
  • Reset is needed is you want to exit Flash mode without powering off the GPS. Otherwise not needed in normal operation
  • The ISM480 powers up in an off state. The On/Off pin needs to be toggled to turn ON the GPS.
  • Once the On/Off pin has been toggled you monitor Wake-up pin to change from low to high.
  • This indicates the GPS is running and data should start streaming out of the serial port.

What inductor do you use for the RF antenna connection?

The ISM420 requires the use of the following circuit in the front end if you plan on using an active antenna. The circuit is not required if you elect to have no power and use a passive antenna.

RFin connects to the Antenna and the input to the GPS. In the case of the ISM420 inputs are 3.3V tolerant. So no protection needed to the GPS

Antenna Global Positioning System Front-End

We use the 0603HP – 33NXGLW inductor you can find at digi-Key.

How do I set the data rate of the NEMA messages used?

Here is the function call:

/* Set the rate of the NMEA messages used */
PSRF103("00", "00", "01", "02");
// GGA at 1 sec rate
Here is the function:
// Function:    PSRF103
// Description: Send SiRF msg 103 to GPS
// where:        $PSRF103,05,00,01,01*20
//   $PSRF103
//   05         00=GGA
//              01=GLL
//              02=GSA
//              03=GSV
//              04=RMC
//              05=VTG
//   00         mode, 0=set rate, 1=query
//   01         rate in seconds, 0-255
//   01         checksum 0=no, 1=yes
//   *20        checksum
void PSRF103(char nmeamsg[], char mode[], char rate[], char chksum[])
char msg[25] = "$PSRF103";                              // NMEA msg
char csum[2];
unsigned short checksum = 0;
int i;
strcat(msg,nmeamsg);                                    // Add NMEA msg
strcat(msg,mode);                                       // Add mode
strcat(msg,rate);                                       // Add rate
strcat(msg,chksum);                                     // Add checksum mode
for (i=1;i<strlen(msg);i++)
checksum ^= msg[i];                                   // XOR
sprintf(csum,"%02X",checksum);                          // Convert hex string
strcat(msg,"*");                                        // Add checksum delimeter
strcat(msg, csum);                                      // Add checksum
strcat(msg,"\r\n");                                     // Add CR, LF
USART_SendString(GPS_USART,msg);                        // Send msg

How do you change the GPS output rate from a true 1Hz to 5Hz?

To enable the 5 Hz, use OSP MID 136.  The field “Position Calc Mode” can be interpreted this way:

Bit Mapped.  When set to 1, a bit enables the function.

Bit     Function

—-      ———–

0     Almanac Based Positioning

1     Reverse EE

2     5 Hz Navigation

3     SBAS Ranging

4     Fast time Sync

So set bit 2 to a 1 to enable 5 Hz navigation.

reference OSP document

What is the difference between the Sirf Binary and the OSP One Socket Protocol?

CSR (SirF) change the binary protocol whne they introduced the Sirf IV gps modules. The protocols are very similar but OSP has additional features.

Is you are using the ISM300x family of GPS modules use the Sirf Binary. If you are using the ISM4xx family then use OSP.

Can I flash my ISM300Fx GPS in system?

Yes, the ISM300Fx can be flashed in system by pulling pin 8 High upon power up. The module will then boot up in flash mode and you can update the firmware over the UART. This pin has a pulldown interanlly so if you do not want to flash in system you can leave this pin floating or pull to ground.

The pin is only used during initial power up.