3
$\begingroup$

I am doing a report on TLE's and I was looking up what the numbers mean. I found a very helpful site. See here:

http://spaceflight.nasa.gov/realdata/sightings/SSapplications/Post/JavaSSOP/SSOP_Help/tle_def.html

However I do not understand what the checksum is.

Can anybody help me?

$\endgroup$
0

3 Answers 3

5
$\begingroup$

A checksum is a way to verify the contents of a message. Basically, a checksum value is transmitted with the message, and you can calculate the checksum yourself when you receive the message. If the transmitted checksum and the calculated checksum don't match, there is an error in the message you received.

TLE data uses a very simple checksum algorithm - basically the sum of all the digits in the line mod 10, with minus signs counting as 1, letters and whitespace as 0, Here's the python code I use for calculating the TLE checksum:

def checksum(line):
    L = string.strip(line)
    cksum = 0
    for i in range(68):
        c = L[i]
        if c == ' ' or c == '.' or c == '+' or c in string.letters:
            continue
        elif c == '-':
            cksum = cksum + 1
        else:
            cksum = cksum + string.atoi(c)

    cksum %= 10
    
    return cksum

Here's some more info on checksums in general: http://en.wikipedia.org/wiki/Checksum

$\endgroup$
2
$\begingroup$

A Checksum in general is a way of summarizing the data such that one can figure out if the data was valid. An easy example is the even/odd parity, by which an 8 bit character was passed, with the first 7 bits containing the substance of the character, and the last declaring an even/odd number of bits.

As far as the specific example you provided, the definition can be found at Celestrak.

The last column on each line (fields 1.14 and 2.10) represents a modulo-10 checksum of the data on that line. To calculate the checksum, simply add the values of all the numbers on each line—ignoring all letters, spaces, periods, and plus signs—and assigning a value of 1 to all minus signs. The checksum is the last digit of that sum.

$\endgroup$
2
$\begingroup$

The simple rule for a Two-Line Element Set (TLE) checksum is:

Modulo 10 of a sum of all the numerals in a line (except the checksum itself, of course, but including the line number), where all the non-numerals (letters, signs and spaces) are substituted with a 0 except the minus sign (-) that is substituted with 1.

So for example, if you have a TLE:

ISS (ZARYA)
  1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927
  2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537

Then the checksum of the last line is:

(2+0+2+5+5+4+4+0+5+1+0+6+4+1+6+0+2+4+7+0+4+6+2+7+0+0+0+0+6+7+0+3+0+1+3+0+0+5+3+6+0+0+3+2+5+0+0+2+8+8+0+1+5+0+7+2+1+2+5+3+9+1+5+6+3+5+3) modulo 10

Which is in our case 7. Refer to e.g. CelesTrak-s Frequently Asked Questions: Two-Line Element Set Format for more detailed information and even an interesting read on the Two-Line Element Set Checksum Controversy.

$\endgroup$
3
  • $\begingroup$ The data available electronically today via Space-Track.org all conforms to the + sign = 0 rule, even the historical pre-1980 data. $\endgroup$ Sep 17, 2014 at 14:32
  • $\begingroup$ @EricG What did I say then? $\endgroup$
    – TildalWave
    Sep 17, 2014 at 14:32
  • $\begingroup$ Sorry - not disagreeing with your post. Was just commenting on the checksum controversy bit and thought people might read that and think that they needed to use the + sign = 2 rule for older data. $\endgroup$ Sep 17, 2014 at 14:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.