Tom and I just got our uBlox5 combo, and I hooked it up to my arduino as a Serial passthru using NewSoftSerial, with the built in and software port running at 38400. At first I thought I'd go ahead and port the parsing code from the arduPilot to run on my PC so I could get a good feel for what was going on.
First - in the version of arduPilot I downloaded (2.31 I think), I think there may be a bug. The checksum seems to have an odd condition check on line 86:
if((ck_a=UBX_ck_a)&&(ck_b=UBX_ck_a)) //Verify the received checksum with the generated checksum..
I assume these should be using the comparison operator (==) not the assignment operator (=). As it stands, the if-statement always evaluates true (blowing away ck_a and ck_b in the process), and the checksums aren't actually doing any checking! I may be smoking something here, but it sure seemed that way to me.
Next, when I changed that in the code, I noticed I was getting ALL sorts of invalid packets mixed in with valid ones. Upon debugging/investigation (and later, some time spent in the uBlox u-Center program), I found that my chip was spitting out the following:
B5 62 1 3 10 0 1E 45 BE 1 3 DD 0 0 30 CC 0 0 D8 4 1 0 EF EE VALID NAV-STATUS message
B5 62 1 2 1C 0 1E 45 BE 1 XX XX XX XX XX XX XX XX F1 3 1 0 B5 4C 1 0 CE 28 0 0 2
4 2A 0 0 A2 CF VALID NAV-POSLLH message - with my lat/lon masked :)
B5 62 1 HUH??? This isn't even a full valid message header!
B5 62 1 3 10 0 18 46 BE 1 3 DD 0 0 30 CC 0 0 D2 5 1 0 E5 88 VALID NAV-STATUS message
B5 62 1 2 1C 0 18 46 BE 1 XX XX XX XX XX XX XX XX 54 3 1 0 18 4C 1 0 C8 28 0 0 1
F 2A 0 0 4F 16 VALID NAV-POSLLH message - with my lat/lon masked :)
The pattern repeats like that. Effectively, I'm getting a nice NAV-STATUS and a nice NAV-POSLLH. I know the chip was supposed to be set up to also send NAV-VELNED. But when I look at the message viewer in the ublox software, it just categorizes this short message as UNKNOWN, which is what I would expect.
My first assumption was that this was a problem with serial communication, but honestly, I get beautiful data for the other messages, and these short goofy B5 62 1 messages are VERY consistent. I also went ahead and did a raw binary to HEX conversion on the Arduino side and sent that over to a terminal program and verified that I was getting the same data that way.
I've tried all sorts of things in the ublox software (changing speed from 38400 to 57600 on the Arduino, uBlox and ublox software, although I haven't tried lowering it). I turned on NMEA messages, and those worked fine, but after turning on a combination of NAV-VELNED and any other messages, this weird UNKNOWN message starts showing up in place of the NAV-VELNED.
Has anyone dealt with strange behavior like this? I tried to do a brief web/forum search, but details seem to be pretty scarce in this area.
I'm kind of out of ideas at the moment, so I'd appreciate any fresh ones you all may have.