Quectel LG290P not tracking L2/L5 on G20 and G21

If you modify a default firmware setting you can get a couple more dual/triple frequency GPS sats.

There are 32 active GPS sats right now, but only 27 have the L2C signal and 20 the L5 signal. The LG290P is a L2C only receiver so it should be tracking 27 dual frequency GPS sats, but it tracks only 25. Why?

The $PQTMCFGSAT command allows you to change what signals are tracked on each satellite. L1 (C/A) tracking is enabled on all 32 possible GPS sats, but L2C and L5 have limiting masks. The masks haven’t been updated to include G20 and G21 which are newer sats replacing older ones.

The default tracking mask for L2C in hexadecimal is: FFC36FFD

Written in binary: 1111 1111 1100 0011 0110 1111 1111 1101

Reading this right to left a 1 means enabled, a zero means disabled so GPS sats 2, 13, 16, 19, 20, 21, 22 are disabled for L2C tracking.

Creating a new mask with 1 in positions 20 and 21 should allow L2C tracking on those sats. I haven’t actually tried that, but did set all positions to 1 (FFFFFFFF) and that worked. If this wastes significant resources I don’t know.

Two more GPS sats isn’t a lot, but it could help with services like OPUS and AUSPOS which are dual frequency GPS only. Also two more sats for Galileo HAS, etc.

Turning on L5Q tracking for GPS sats 20 and 21 is similar. See the $PQTMCFGSAT command.

1 Like

This is very interesting. Thanks for posting !

I queried a LG290P running V2.01 FW with the following :

$PQTMCFGSAT,R,1,1*
$PQTMCFGSAT,R,1,2*
$PQTMCFGSAT,R,1,3*

Results were :

GPS L1 C/A - Mask: FFFFFFFF
Included all PRNs

GPS L2C — Excluded PRNs - Mask: FFC36FFD
Assumption of Disabled PRNs:

  • 2
  • 13
  • 16
  • 19
  • 20
  • 21
  • 22

GPS L5 — Excluded PRNs - Mask: AFC227AD
Assumption of Disabled PRNs:

  • 2
  • 5
  • 7
  • 12
  • 13
  • 15
  • 16
  • 17
  • 19
  • 20
  • 21
  • 22
  • 29
  • 31

I used the following to Set all GPS PRNs ON (L2C + L5)

GPS L2C (signal ID = 2) => $PQTMCFGSAT,W,1,2,FFFFFFFF*

GPS L5 (signal ID = 3) => $PQTMCFGSAT,W,1,3,FFFFFFFF*

I’m not sure if this is a good idea or not. Quectel likely had a reason to exclude those PRNs. But it could also be that Quectel had validated the rest for reliable L2C/L5 tracking at some point in the past, and never updated the test & Mask?

I would think those L2C and L5 Exclusions would have a huge impact on PPP performance, such as CSRS-PPP. @sparky, Remember the PPP-AR testing (aggressive, short occupation times) we worked on last year? It might be time to revisit that testing on the LG290P :slight_smile: This could be a tremendous improvement for short mission PPP-AR.

Now I’m interested in looking for other “advanced” Signal Masks for the other Constellations, in the latest LG290P FW V2.01.

Thanks again @jpb !!

I’ll document the commands/results here, incase I’m doing something wrong.

Galileo, Query used:

  • PQTMCFGSAT,R,3,1* → Galileo E1
  • PQTMCFGSAT,R,3,2* → Galileo E5a
  • PQTMCFGSAT,R,3,3* → Galileo E5b
  • PQTMCFGSAT,R,3,4* → Galileo E6

Galileo E1 Excluded PRNs:
1, 14, 17, 18, 20, 22, 28, 32, 35

Galileo E5a Excluded PRNs:
1, 14, 17, 18, 20, 22, 28, 32, 35

Galileo E5b Excluded PRNs:
1, 14, 17, 18, 20, 22, 28, 32, 35

Galileo E6 Excluded PRNs:
1, 14, 17, 18, 20, 22, 28, 32, 35

NOTE for HAS/E6 -
Those excluded PRNs are also excluded from Galileo ranging on E6/E1/E5a/E5b on the LG290P. That means fewer Galileo satellites contribute measurements for HAS solution, which can weaken PPP geometry. The older birds being excluded probably don’t have much impact, but PRN 32 and 35 would.

To Enable all PRN’s on Galileo I used :

$PQTMCFGSAT,W,3,1,FFFFFFFF,0000000F*
$PQTMCFGSAT,W,3,2,FFFFFFFF,0000000F*
$PQTMCFGSAT,W,3,3,FFFFFFFF,0000000F*
$PQTMCFGSAT,W,3,4,FFFFFFFF,0000000F*

Again, I’m not sure if this is wise or not.

GLONASS, Query used :

$PQTMCFGSAT,R,2,1*
$PQTMCFGSAT,R,2,2*

Instead of PRN’s, GLONASS uses Slots. The LG290P returned the max allowable bitmask for the GLONASS Constellation.

Results:

  • GLONASS G1 C/A: 00003FFF
  • GLONASS G2 C/A: 00003FFF

Nothing to do here, for GLONASS.

BeiDou (BDS), Query used :

$PQTMCFGSAT,R,4,1*
$PQTMCFGSAT,R,4,2*
$PQTMCFGSAT,R,4,3*
$PQTMCFGSAT,R,4,4*
$PQTMCFGSAT,R,4,5*
$PQTMCFGSAT,R,4,6*

BeiDou exclusions by signal :

BeiDou B1I — excluded PRNs:
15, 17, 18, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 62, 63, 64

BeiDou B2I — excluded PRNs:
15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64

BeiDou B3I — excluded PRNs:
15, 17, 18, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 62, 63, 64

BeiDou B1C — excluded PRNs:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64

BeiDou B2a — excluded PRNs:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64

BeiDou B2b — excluded PRNs:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 62, 63, 64


I know almost Nothing about the BeiDou constellation. I have no idea if these PRN exclusions are important or not :frowning:

I’m fairly sure that BeiDou does not contribute to a RTK solution when using PointPerfect Flex RTCM corrections. Sure the additional birds improves geometry - but the RTK engine weights GPS & Galileo corrected signals over BeiDou. I don’t see how BeiDou would provide any help with a CSRS-PPP solution either.
Again, I know/understand very little about the BeiDou System.


To Enable all PRN’s and Signals on BeiDou I used :

$PQTMCFGSAT,W,4,1,FFFFFFFF,FFFFFFFF*
$PQTMCFGSAT,W,4,2,FFFFFFFF,FFFFFFFF*
$PQTMCFGSAT,W,4,3,FFFFFFFF,FFFFFFFF*
$PQTMCFGSAT,W,4,4,FFFFFFFF,FFFFFFFF*
$PQTMCFGSAT,W,4,5,FFFFFFFF,FFFFFFFF*
$PQTMCFGSAT,W,4,6,FFFFFFFF,FFFFFFFF*


No Magic Smoke came out, thankfully.

1 Like

I also checked the Galileo section,there are 25 active according to GSC
so I configured only galileo and the improvement was fine for HAS_PPP, considring before the module track 5/6 sats now there are 9 …

0x77D4DFFE  def
0x6754DFFE  usable
0x0000000b  33,34,36  def & usable
$PQTMCFGSAT,R,3,1*60      $PQTMCFGSAT,OK,3,01,77D4DFFE,0000000B*05
$PQTMCFGSAT,R,3,2*63    $PQTMCFGSAT,OK,3,02,77D4DFFE,0000000B*06
$PQTMCFGSAT,R,3,3*62     $PQTMCFGSAT,OK,3,03,77D4DFFE,0000000B*07
$PQTMCFGSAT,R,3,4*65     $PQTMCFGSAT,OK,3,04,77D4DFFE,0000000B*00
$PQTMCFGSAT,W,3,1,6754DFFE,0000000B*16
$PQTMCFGSAT,W,3,2,6754DFFE,0000000B*15
$PQTMCFGSAT,W,3,3,6754DFFE,0000000B*14
$PQTMCFGSAT,W,3,4,6754DFFE,0000000B*13

Regards

1 Like

I had some great results with HAS after unlocking everything, Converged solution was on top of the PP Flex Solution. It looked too good to be true, so I think it was a coincidence. Running more tests now.

1 Like

@JPB got it right.
For now I’m focusing on Galileo…
please, can U publish the birds (sats) in use on GPS const. for refining the mask for later?
Regards

1 Like

For HAS/E6 corrections for GPS constellation, we want L1 C/A + L2C + L5, or any bird with a dual frequency combo at the minimum.
The default for the LG290P already included all GPS PRN’s for L1 C/A -

Everything else is unlocked with these :
GPS L2C (signal ID = 2) => $PQTMCFGSAT,W,1,2,FFFFFFFF*
GPS L5 (signal ID = 3) => $PQTMCFGSAT,W,1,3,FFFFFFFF*


Here my search

link to GPS

so G20 is out but G21 ok…the masks are thoose IMHO.

Yes, I agree with you. It appears PRN 21 is the GPS improvement for HAS.

Unlocking the L2C and L5 on all the birds will help PPP.

But it looks like I might have added the following Galileo for HAS, along with several E6 Signals for redundancy.

[By removing the Galileo Exclusions]

PRN SVN Satellite Why it matters
E32 E234 FOC-34 (2025) :star::star::star: newest, full signal
E28 E233 FOC-33 (2025) :star::star::star: newest, full signal
E14 E202 FOC-2 :star::star: solid
E18 E201 FOC-1 :star::star: solid
E22 E204 FOC-4 :star::star: solid
E01 E210 FOC-10 :star::star: solid

HAS positioning does seem to be better for me today, after a long convergence time. But I haven’t tested it enough to draw any real conclusions.

1 Like

Here’s a Script File that anyone can use with QGNSS to help test all the changes I listed.

Enable All PRNs_Ryan.json.txt (5.6 KB)

In the Console Window of QGNSS,

  1. Press the “Show Script” Button
  2. Import the attached .json file (rename it to remove the .txt extension)
  3. Change to Run 1 Time.
  4. Press RUN

I had a feeling some people would run with this info …

I’ve really only looked at GPS so far, but the two newer sats are G20 and G21.

To add (L2 and L5) for those two the commands would be:

$PQTMCFGSAT,W,1,2,FFDB6FFD* (check sum 3C)
$PQTMCFGSAT,W,1,3,AFDA27AD* (check sum 4B)
$PQTMSAVEPAR*5A
(restart receiver)

I did a 24 hour static test and the raw data looks good. The G20 and G21
L1/L2/L5 signals are good. The Galileo HAS performance was good - about
15 cm horizontal 95%. Right now G20 and G21 are tracking fairly close to
each other so for a time they are both visible in the sky. If you just
happen to be out collecting data when one or both are up you might get a
little help, but in general it’s not a game changer.

1 Like