Talking to the Magnavox
NMEA strings are pouring in at 9600 bps on the serial port; I can see them in a minicom window. It looks like a NMEA message comes in once per second.
I installed a copy of gpsd, a dandy program no doubt, but the Magnavox is sending strings it does not understand. Alas, I will have to READ THE MANUAL.
Each of the strings is prefixed with $PMVXG,code, where code is a 3-digit integer padded leading zeroes. There are about 50 codes defined. Here is a sample of the output.
$PMVXG,015,0000000,0000,1,,*61
$PMVXG,052, 3.4515,*57 $PMVXG,100,05,10,052,38,47,,,,D5, + ,-000.871,,,*05 $PMVXG,100,06,29,103,19,45,,,,71, + ,0003.445,,,*6A $PMVXG,100,07,30,190,25,45,,,,92, + ,0000.011,,,*6D $PMVXG,100,08,00,,,,,,,*6D $PMVXG,000,NAV,11,9,0000,0*34 $PMVXG,036,032708,5539.86934,N,10942.90202,W,????????,000000,343634,0*7E $PMVXG,023,032709,4432.72623,N,12315.75804,W,00055.40,333.0,000.0,03,032708,03,C $PMVXG,022,098828.00,00.5,00.7,01.5,15,00,21,06,10,29,30,00,26,00,16,18*7F
$PMVXG,052, 3.4514,*56 $PMVXG,100,09,26,118,13,42,,,,77, + ,0003.917,,,*61 $PMVXG,100,10,02,072,00,00,,,,82,SRCH,,,,*7F $PMVXG,100,11,16,315,21,44,,,,03, + ,0000.257,,,*6C $PMVXG,100,12,18,197,23,46,,,,A3, + ,0002.088,,,*1A $PMVXG,000,NAV,11,9,0000,0*34 $PMVXG,023,032710,4432.72623,N,12315.75805,W,00055.40,002.5,000.0,03,032709,03,0
$PMVXG,052, 3.4513,*51 $PMVXG,000,NAV,11,9,0000,0*34 $PMVXG,023,032711,4432.72623,N,12315.75805,W,00055.39,202.4,000.0,03,032710,03,4
$PMVXG,052, 3.4512,*50 $PMVXG,533,14,11,2005,,,*4F
Fields are comma-separated, and the last part (eg *4f) is a checksum field. You don't have to send checksum, it's optional, just leave it off when sending commands.
000 Receiver status: It's in Navigation mode, 11 satellites should be visible, it's tracking 9, time since last navigation: 0, and its wating for initialization. 022 Nav constellation 023 Position, height, COG and SOG 036 Self survey results 052 Oscillator offset (?) (something I have been longing to know...) 100 GPS Channel status 533 GPS date
I think the 000 message means that I need to send it an initialization command to make it happy. The 000 command sets its known position, and the 001 command sets some constants and limits. Since I am in navigation mode, I don't need to give it position.
To get GGA/GLL strings though, I think I need to issue a control port output command: $PMVXG,007,,1,,1,4,1,
A few resources
gpsd a daemon that reads nmea data
Python GPS project
Python serial library