UBX protocol help: configuring a NEO 6M Arduino GPS Module... Fletcher checksum?

I know this is way past the useful date for this thread, but this thread was the first that came up when I was googling for similar problems, so hopefully this is useful for someone else.

Took me a while to figure this out, but there is indeed an error in the fletcher checksum implementation in OP (none of the other code posted by other answer actually try to compute the checksum and is thus irrelevant).

Instead of

//Calculate checksum
  for(int i=0; i<len; i++){
    CK_A = CK_A + MSG[i];
    CK_B = CK_B + CK_A;
    Serial.println("CK_A= " + String(CK_A));
    Serial.println("CK_B= " + String(CK_B));
  }

  sum1 = CK_A &0xff;//Mask the checksums to be one byte
  sum2= CK_B &0xff;

the mask needed to be applied at each stage of the computation, so the correct code should be

//Calculate checksum
  for(int i=0; i<len; i++){
    CK_A = CK_A + MSG[i];
    CK_B = CK_B + CK_A;
    CK_A  = CK_A & 0xff;
    CK_B = CK_B & 0xff; 
    Serial.println("CK_A= " + String(CK_A));
    Serial.println("CK_B= " + String(CK_B));
  }

  sum1 = CK_A;
  sum2= CK_B;