JRC GPS-Rx protocol Ver 3.0B (data format)

After getting some requests for the protocol of the JRC-GPS-Rx, I started to type in the information I got in form of paper copies. If you find this information useful, please give me a hint in my guestbook. Please concern that I did not understand everything in this description, in this case I wrote it down as printed, but in slanted letters. In other cases I changed something a little bit to make it more clear.

The used JRC-format is Ver 3.0B, the type of the rx is CCA-191P used in car navigation systems.

Last Update: 2002-09-04: Contents, missing bytes in input data, experiences

Contents

The I/O pin layout

Pins are numbered from 1 to 10, 1 is the pin nearer to the board edge. Attention, there are different boxes around the PCB, with antenna connector on different sides.

Pin Signal
1 GND
2 TX0 (data output from the unit)
3 NC - should be left open on motherboard
4 RX1 (for DGPS correction data)
5 RX0 (for initial set to the unit)
6 NC - should be left open on motherboard
7 Vcc (main, +5V)
8 NC - should be left open on motherboard
9 Vbat (back up, +2.2 to 3.6V)
10 GND

Interface at TX1 and RX1

TTL-signal direct connection, 4800 Bd asynchronous, 1start bit, 8data bits, 2stop bits, no parity.

Output interval: 1s

Data format

Output data format at TX1

If a value is represented by more than one byte, most significant byte is the first, LSB is last.

In case of no extend output (default, switched to extended by input data):

Byte

No.

MSB  LSB

76543210

Contents Example:
Contents value data value
 (hex)
1 11000110 Header (ASCII 'F' + 80H) - C6
2

3

4

5

0XXXXXXX

0XXXXXXX

0XXXXXXX

0XXXXXXX

measured latitude,
28 bit binary data,
resolution: 0.001 min,
South: 2's complement,
Datum depends on format set by input, default is WGS-84
N 35°41.286' 01

02

58

66

6

7

8

9

0XXXXXXX

0XXXXXXX

0XXXXXXX

0XXXXXXX

measured longitude,
28 bit binary data,
resolution: 0.001 min,
West: 2's complement,
Datum depends on format set by input, default is WGS-84
W139°34.286' 7C

00

6F

72

10

11

12

0XXXXXXX

0XXXXXXX

0XXXXXXX

measured sea level,
21 bit binary data,
resolution 1m,
neg. altitude:
   2's complement
1234m 00

09

52

13

14

0XXXXXXX

0XXXXXXX

measured speed,
14 bit binary data,
resolution: 0.1 m/s
12.3 m/s 00

7B

15

16

0XXXXXXX

0XXXXXXX

measured course,
14 bit binary data,
resolution: 0.1° (0..359.9°)
123.4 09

52

17

18

0XXXXXXX

0XXXXXXX

PDOP value,
14 bit binary data,
resolution: 0.1
12.3 00

7B

19

20

21

22

23

24

0XXXXXXX

0000XXXX

000XXXXX

000XXXXX

00XXXXXX

00XXXXXX

Year

Month

Day

Time

Minutes

Second

90

01

25

12

34

56

5A

01

19

0C

22

38

25 00XXXXXX Number of healthy sats 15 0F
26 00XXXXXX Number of visible sats 8 08
27

28

29

30

00XXXXXX

00XXXXXX

00XXXXXX

00XXXXXX

Satellites name (PRN) in use for fix (1..4), valid 0..32, 0:invalid sat PRN.

Used fix satellites exists except these 4 sats. note 4

Invalid satellite is not filled from satellite name 4.

14

0

23

20

0E

00

17

14

Next 6 bytes 31-36 are values for selected satellite 1
31 00XXXXXX PRN of selected sat
valid 0..32, 0:not sel.
14 0E
32

33

0XXXXXXX

0XXXXXXX

azimuth angle,
14 bits binary data,
resolution: 1°
123° 00

7B

34 0XXXXXXX elevation angle,
resolution: 1°,
valid 0..90°
23° 17
35 0FAAAASS Status satellite SS:
 00: search,
 01: tracking,
 10: tracking & collection

Used for fix F:
 0: not used
 1: used

SV acuracy AAAA: see note 2

2 02
36 0XXXXXXX Signal level,
resolution: 1, valid 1..127
65 41
Bytes 37-42 are values for selected satellite 2, format as 31-36
Bytes 43-48 are values for selected satellite 3, format as 31-36
Bytes 49-54 are values for selected satellite 4, format as 31-36
Bytes 55-60 are values for selected satellite 5, format as 31-36
Bytes 61-66 are values for selected satellite 6, format as 31-36
Bytes 67-72 are values for selected satellite 7, format as 31-36
Bytes 73-78 are values for selected satellite 8, format as 31-36
79 0XXX1XXX

Bit 0: fixing flag,
 0: fixing, 1: non fixing

Bit 1: 2D fixing flag,
 0: not 2D fixing,
 1: 2D fixing

Bit 2: 3D fixing flag,
 0: not 3D fixing,
 1: 3D fixing

Bit 3: All in view fix flag
 (always 1: all in view fix)

Bit 4: 2 Sats fixing flag,
 0: not fixing, 1: fixing

Bit 6: Cold start fix flag,
 0: not cold start fix,
 1: cold start fix

  06
80 000000PP Preamp Check PP:
 00: normal
 01: open
 10: short
Receiver without preamp check function output always 00
0 00
81 11000110 Terminator (ASCII 'Z' + 80H) - DA

In case of extend mode, byte 1..80 are the same (see note 2 for an exception), bytes 81 to 119 are as follows:

Byte

No.

MSB  LSB

76543210

Contents Example:
Contents value data value
 (hex)
81 0XXXXXXX satellite health information for PRN 1 to PRN 7,
Bit 0: PRN 1 .. Bit 6: PRN 7
 0: unhealth,
 1: health
  01
82 0XXXXXXX satellite health information for PRN 8 to PRN 14,
Bit 0: PRN 8 .. Bit 6: PRN 14
 0: unhealth,
 1: health
  01
83 0XXXXXXX satellite health information for PRN 15 to PRN 21,
Bit 0: PRN 15..Bit 6: PRN 21
 0: unhealth,
 1: health
  01
84 0XXXXXXX satellite health information for PRN 22 to PRN 28,
Bit 0: PRN 22..Bit 6: PRN 28
 0: unhealth,
 1: health
  01
85 0000XXXX satellite health information for PRN 29 to PRN 32,
Bit 0: PRN 29..Bit 3: PRN 32
 0: unhealth,
 1: health
  01
86

87

88

89

90

0XXXXXXX

0XXXXXXX

0XXXXXXX

0XXXXXXX

0XXXXXXX

Version no. (ASCII) 1

.

0

0

A

31

2E

30

30

41

91 0XXXXXXX measured speed extended data, resolution: 0.1/128 m/s 0.046 m/s 3B
92 0XXXXXXX measured delay time,
resolution 0.1s
1.5s 0F
93

94

0XXXXXXX

0XXXXXXX

long axis error,
14 bit binary data,
resolution: 2m (0..510m)
100m 00

32

95

96

0XXXXXXX

0XXXXXXX

short axis error,
14 bit binary data,
resolution: 2m (0..510m)
100m 00

32

97

98

0XXXXXXX

0XXXXXXX

slope of long axis error,
14 bit binary data,
resolution: 1° (0°..179°)
90° 00

5A

99

100

0XXXXXXX

0XXXXXXX

VDOP value,
14 bit binary data,
resolution: 0.1 (resolution of calculation is 0.2)
12.3 00

7B

101 0000000D DGPS fix status D:
 0: non DGPS fix,
 1: DGPS fix
1 01
102

103

00000XXX

0XXXXXXX

Differential reference station ID, 10 bit binary data 1023 03

7F

104 0XXXXXXX Age of differential GPS data, in seconds since last sentense of SC104 type 1, valid 0..30°. see note 1 15 0F
26 00XXXXXX Number of visible sats 8 08
105
-
118
  spare    
119 11000110 Terminator (ASCII 'Z' + 80H) - DA

note 1: if corrections cease to be received, the value in use will continue to be treated as valid for a further 30 seconds. Age of differential data is used the maximum value from among fixed satellites.

note 2: in byte 35 (and in the other 7 bytes 41, 47,... for satellites 2..8) is an additional information in extend mode: Bits 5..2 containing the SV acuracy.

note 4: perhaps it means: satellites used for fix exist except these for 4 sats

In case of extend2 mode, bytes 105..122 carry additional information:

Byte

No.

MSB  LSB

76543210

Contents Example:
Contents value data value
 (hex)
Next 4 bytes 105-108 are values for visible satellite 1
105 00XXXXXX PRN of visible sat
valid 0..32, 0: not sel.
14 0E
106

107

0XXXXXXX

0XXXXXXX

azimuth angle,
14 bits binary data,
resolution: 1° (0..359°)
123° 00

7B

108 0XXXXXXX elevation angle,
resolution: 1° (0..90°)
23° 17
Bytes 109-112 are values for visible satellite 2, format see 105-108
Bytes 113-116 are values for visible satellite 3, format see 105-108
Bytes 117-120 are values for visible satellite 4, format see 105-108
121 0XXXXXXX spare    
122 11000110 Terminator (ASCII 'Z' + 80H) - DA

Input data format at RX1

If a value is represented by more than one byte, most significant byte is the first, LSB is last. After Cold start fix is done, all setting values will be set default value and data output format is set to no extend mode.

There are two different input data formats, the type flag (bit 6 in byte 20) controls which of them is used.

In case of type flag = 0:

Byte

No.

MSB  LSB

76543210

Contents Example:
Contents value data value
 (hex)
1 11000110 Header (ASCII 'F' + 80H) - C6
2

3

4

5

0XXXXXXX

0XXXXXXX

0XXXXXXX

0XXXXXXX

estimated latitude,
28 bit binary data,
resolution: 0.001 min,
South: 2's complement,
Datum depends on format set by input
N 35°41.286' 01

02

58

66

6

7

8

9

0XXXXXXX

0XXXXXXX

0XXXXXXX

0XXXXXXX

estimated longitude,
28 bit binary data,
resolution: 0.001 min,
West: 2's complement,
Datum depends on format set by input
W139°34.286' 7C

00

6F

72

10

11

12

13

14

15

0XXXXXXX

0000XXXX

000XXXXX

000XXXXX

00XXXXXX

00XXXXXX

Year

Month

Day

Time

Minutes

Second

90

01

25

12

34

56

5A

01

19

0C

22

38

16

17

0XXXXXXX

0XXXXXXX

estimated sea level,
14 bit binary data,
resolution; 1m,
neg. altitude:
   2's complement
1234m 09

52

18

19

0XXXXXXX

0XXXXXXX

spare    
20 00XXXXXX Bit 0: Cold start fix
 0: no, 1: start

Bit 1: Initialized flag
 0: no, 1: initialize

Bit 2: Input-of-Lat/Lon flag
 0: no, 1: use

Bit 3: Input-of-Time flag
 0: no, 1: use

Bit 4: Input-of-Latitude flag
 0: no, 1: use (see note 3)

Bit 5: Master reset flag
 0: no, 1: master reset

Bit 6: Type flag
 0

   
21 11000110 Terminator (ASCII 'Z' + 80H) - DA

note 3: Input-of-altitude flag? Makes more sense...

in case of type flag = 1:

Byte

No.

MSB  LSB

76543210

Contents Example:
Contents value data value
 (hex)
1 11000110 Header (ASCII 'F' + 80H) - C6
2 000000RR receiving mode RR:
 00: 2D
 01: 3D
 10: Auto (default)
0 00
3 0XXXXXXX masked angle of elevation,
7 bit binary data,
resolution: 1° (1..89°),
default: 5°
5 05
4 0XXXXXXX spare    
5 000000PP PDOP switch 2D/3D PP:
 00: <5  / <=3
 01: <10 / <=5 (default)
 10: <20 / <=10
1 01
6 000000SS smoothing level SS:
 00: high
 01: medium (default)
 10: low
1 01
7 00XXXXXX datum (binary data):
0: WGS-84 (default)
1: WGS-72
2: Japan (Tokyo Bessel)
3: America (NAD-27)
4: Canada, Alaska (NAD-27)
5: Europe (European 1950)
6: Australia (Australian
  Geodetic 1966)
7: England (Ordance Survey of Great 1966)
8: America (NAD-83)
9, 10: spare
11: Ethopia and Sudan
12: Botswana (Arc 1950)
13: Australia (A. Geodetic 1984)
14: Bermuda Islands (Bermuda 1957)
15: Colombia (Bagoda Obs.)
16: Argentina (campo Inchauspe)
17: Chatham Island (Chatham 1971)
18: Paraguay (Chua Astro)
19: Brasil (Corrego Alegre)
20: Sumatra (Djakarta: Vatavia)
21: Europe (European 1979)
22: New Zealand (1949)
23: Guam (Guam 1963)
24: Finland (Hayford 1910)
25: Iceland (Hjorsey 1955)
26: India and Nepal (Indian)
27: Ireland (Ireland 1965)
28: West Malaysia, Singapore (1948)
29: Cayman Brac Island (L.C.5 Astro)
30: Liberia (Liberia 1964)
31: Phillipines (Luzon)
32: Morocco (Merchich)
33: Cameroon (Minna)
34: Oman (Nahrwan)
35: Trinidad, Tobago (Naparima, Bwi)
36: Egypt (Old Egyptian)
37: Hawaiian Islands (Old Hawaiian)
38: Canary Islands (Pico d L Nieves)
39: South American (1956)
40: Southern Chile (1963)
41: Puerto Rico and Virgin Islands
42: South Greenland (Qornoq)
43: Sweden (RT90)
44: Sao Maguel, Santa Maria Islands
45: South American (1969)
46: Faial, Graciosa, Pico, Sao Jorge, Terceira Island (Southwest base)
47: Bronei and East Malaysia (1948)
   
8

9

10

11

12

13

00XXXXXX

00XXXXXX

00XXXXXX

00XXXXXX

00XXXXXX

00XXXXXX

Inhibit Sat No. (PRN) 1..6,
0: no meaning, 1..32 PRN,
if the number of inhibited sats is <6, fill lower bytes first. default: all 0
6

9

0

0

0

0

06

09

00

00

00

00

14 000000DD Set output data format DD:
 00: no expand mode (81 bytes)
 01: expand mode (119 bytes)
 02: expand2 mode (122 bytes) 
1 01
15   spare    
16 0000000C Cold start fix
 0: no
 1: cold start fix
1 01
17 0000000D DGPS mode flag
 0: disable (default)
 1: enable
0 00
18

19

  spare    
20 01000000 type flag bit 6 = 1 - 40
21 11000110 Terminator (ASCII 'Z' + 80H) - DA

my experiences

It was not a big deal to start with this rx. After connecting antenna and power (backup is required!) the RX1 pin shows the no extend format with 81 bytes. And some minutes later, the output changes, sat by sat is found and tracked. The information contained in the no extended data only is enough to convert it to the NMEA-formats for position ($GPGGA) and speed/course ($GPVTG) looking like this:

$GPGGA,190655.00,4929.410,N,00949.221,E,1,05,3.60,224,M,46,M,,*52
$GPVTG,345.0,T,345.0,M,0.0,N,0.0,K*4E

Only the last distance (46m) is faked, I can't remember it's meaning, but it wasn't important. The satellite data in this data format is interesting too - and it can be displayed in a text display:

picture...

But I also tried to switch to the extended formats. I worked, but I never wrote a program to interpret the contents of the additional bytes.

Back to JRC-contents