barbeau / gpstest

The #1 open-source Android GNSS/GPS test program
Apache License 2.0
1.74k stars 361 forks source link

L1C is being labeled as L1 for GPS #690

Open barbeau opened 1 month ago

barbeau commented 1 month ago

Describe the bug

Reported in https://groups.google.com/g/gpstest_android/c/jAN2OL_KDX0/m/KxBsupWFBAAJ?utm_medium=email&utm_source=footer

image

To Reproduce Steps to reproduce the behavior:

  1. Run GPSTest on Xiaomi 14T Pro (Redmi K70 Ultra) with Mediatek 9300

Expected behavior L1C should be correctly labeled

Observed behavior L1C is being labeled as L1

App, Device and Android version:

Xiaomi 14T Pro (Redmi K70 Ultra) with Mediatek 9300

Narugakuruga commented 1 month ago

So here is a sample of GPS L1C. These 3 piece of logs are from 2 GPS block III and 1 QZSS. Apparently Mediatek is faithful to the Android API. L1C was correctly lable as "L". Which means right now the only two signals broadcast by one system sharing same frequency, can be determined now. L1C/A is "C", L1C is "L". By the way I want to mention that Mediatek also use C for Galileo E1 (C), and the P for BDS B1C (Pilot). At the end of the day, it seems that everything was within the API documentation. While older device like Qualcomm chipset usually spam code "C" for every L1C/B1C band. Which means that those manufacturer really started to care about the GNSS measurement proficiency. IMG_20240805_002648 IMG_20240805_002713 IMG_20240805_002734

Narugakuruga commented 1 month ago

There're two more signals that share the same l1 band. QZSS L1C/B and L1S. Code type E and Z We knew very little about l1cb, it is announced that the constellation will consist of l1ca and l1cb satellites. And l1cb is a PNT signal too. But whether the hardware or API will detect a code type difference is uncertain). L1S is for high accuracy ppp position service. So it might not be that important

Narugakuruga commented 1 month ago

Update: I think it's very unwise to include future signal when we cannot test and see results. And I think we could code a whitelist for every possible L1C code type, every L1CA code type for GPS and QZSS. The detailed list could be obtain from Android's document page. The philosophy is if we encounter code type we didn't know and it's 1575.4 mhz, we could label it as "L1(?)" or put the name "1575.4 MHz"