Generating Hexadecimal checksum for a NMEA (PMTK) message
You just exclusive-or all the characters between the '$' and the '*' (including commas) and use the two-character hex representation of that byte (leading 0 if required to pad to two characters). Here's an example code fragment in Python: 

st = "PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"
i = 0
checksum = 0
while i &lt; len(st):
   checksum ^= ord(st[i])
   i+= 1
print "%02X"%checksum


Result is 29

For "GPGSA,A,3,10,07,05,02,29,04,08,13,,,,,1.72,1.03,1.38", the result is 0A