Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[GPS] Fix message rate for newer ublox devices and add some extra debugging features #10179

Merged
merged 24 commits into from
Jul 4, 2024

Conversation

mmosca
Copy link
Collaborator

@mmosca mmosca commented Jun 25, 2024

UBLOX and UBLOX7 are now the same thing.

Fix the message configuration on m10 devices.

Also, add extra gps info to status output.

GPS: HW Version: UBLOX10 Proto: 34.09 Baud: 115200
  SATS: 0
  HDOP:  99.990
  EPH :  99.990 m
  EPV :  99.990 m
  GNSS Capabilities:
    GNSS Provider active/default
    GPS 1/1
    Galileo 1/1
    BeiDou 1/1
    Glonass 0/0
    Max concurrent: 3

Add gpssats cli command

# gpssats
UBLOX Satelites
satelite: 3:20
sigId: 0 (BeiDou B1I D1)
signal strength: 0 dbHz
quality: 1 (Searching signal...)
signal flags: 0x01
signal: Healthy

TODO:

  • Check with M10 Bench
    • M10 initialization
  • Check with M9 Bench
    • M9 initialization
  • Check with M8 Bench
    • M8 initialization
  • Check with M10 with lock
  • Check with M9 with lock
  • Check with M8 with lock
  • Parse older NAV_SAT messages in addition to NAV_SIG

Bonus changes:
showdebug on cli

@mmosca
Copy link
Collaborator Author

mmosca commented Jun 25, 2024

As a bonus, also add showdebug cli command:

# showdebug
Debug fields: [GPS (23)]
debug[0] = 2119
debug[1] = 2141
debug[2] = 0
debug[3] = 0
debug[4] = 0
debug[5] = 0
debug[6] = 0
debug[7] = 42

@mmosca mmosca changed the title [GPS] Add some extra debugging features [GPS] Fix message rate for newer ublox devices and add some extra debugging features Jun 25, 2024
@mmosca mmosca added this to the 8.0 milestone Jun 25, 2024
mmosca added 3 commits June 26, 2024 00:45
Provide alternative way of setting message rates in case firmware is too
old.

Try to enable NAV_SIG but fallback to NAV_SAT.

TODO: fill nav sat info into satelites

Current status of GPS debug counters
0: NAV_SIG count
1: MSG_PVT count
2: MSG_SAT count
3:
4:
5: flags.pvt
6: flags.sat
7: flags.sig
@mmosca
Copy link
Collaborator Author

mmosca commented Jun 26, 2024

M8 does not support NAV_SIG.

So I will add NAV_SAT as a fallback and try to make the setup more resilient to random hardware / software combinations.

mmosca added 2 commits June 26, 2024 23:29
2 cases:
Firmware newer than 23.01 => has pvt and new setting message
Everything else = legacy. (Including M8)
1) New api, nav_pvt and nav_sig (m9+)
2) Old api, nav_pvt and nav_sat (m7?/m8)
3) Old api, no nav_pvt or nav_sat (time to upgrade)
@mmosca
Copy link
Collaborator Author

mmosca commented Jun 26, 2024

Current showdebug items for debug_mode = GPS

0: MSG_PVT count
1: MSG_SAT count
2: NAV_SIG count
3: NAV-SAT numSvs
4: NAV-SIG numSvs
5: flags.pvt
6: flags.sat
7: flags.sig

@stronnag
Copy link
Collaborator

stronnag commented Jun 27, 2024

Some older devices:

c. 2016/7 M8 (0.5MB, v2 firmware)

From ublox-cli

SW: [2.01 (75331)] HW: 00080000 80000
ExtVer:  PROTVER 15.00
ExtVer:  GPS;SBAS;GLO;BDS;QZSS

INAV CLI

# status
INAV/WINGFC 8.0.0 Jun 27 2024 / 08:55:04 (c9fc18f8)
GCC-14.1.0
...
GPS: HW Version: UBLOX8 Proto: 15.00 Baud: 115200
  SATS: 0
  HDOP:  99.990
  EPH :  99.990 m
  EPV :  99.990 m
  GNSS Capabilities:
    GNSS Provider active/default
    GPS 1/1
    BeiDou 0/0
    Glonass 1/1
    Max concurrent: 2

# gpssats
UBLOX Satelites
satelite[1]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 1 dbHz
quality: 1 (Searching signal...)
signal flags: 0x00
signal: Unknown

satelite[2]: 0:10
sigId: 0 (GPS L1C/A)
signal strength: 3 dbHz
quality: 3 (Signal detected but unusable)
signal flags: 0x00
signal: Unknown

satelite[3]: 0:19
sigId: 0 (GPS L1C/A)
signal strength: 1 dbHz
quality: 1 (Searching signal...)
signal flags: 0x00
signal: Unknown

satelite[5]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[6]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[7]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[8]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[9]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[10]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[11]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[12]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[13]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[14]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[15]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[16]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[17]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[18]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[19]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[20]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[21]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[22]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[23]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[24]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[25]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[26]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[27]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[28]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[29]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[30]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[31]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[32]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

c. 2013 / 2014 Neo6

ublox-cli

SW: [7.03 (45969)] HW: 00040007 40007
...
SVINFO: Channels 16
Chn	ID	used	healthy	quality
  3	G2	-	Y	1
  0	G3	-	Y	1
 14	G4	-	Y	1
 12	G5	-	Y	1
 15	G7	-	Y	1
 13	G8	-	Y	1
  8	G10	-	Y	1
  9	G13	-	Y	1
  2	G16	-	Y	1
  5	G17	-	Y	1
  1	G18	-	Y	1
 10	G25	-	Y	1
  7	G28	-	Y	1
 11	G29	-	Y	1
  6	G32	-	Y	1
  4	SBAS124	-	Y	1

Note no EXTVER etc. Not sure that it supports more than 16 channels?

INAV CLI

# status
INAV/WINGFC 8.0.0 Jun 27 2024 / 08:55:04 (c9fc18f8)
GCC-14.1.0
...
GPS: HW Version: Unknown Proto: 0.00 Baud: 115200
  SATS: 0
  HDOP:  99.990
  EPH :  99.990 m
  EPV :  99.990 m
  GNSS Capabilities:
    GNSS Provider active/default
    GPS 1/1
    Max concurrent: 0

# gpssats
UBLOX Satelites
satelite[1]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[2]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[3]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[4]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[5]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[6]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[7]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[8]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[9]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[10]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[11]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[12]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[13]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[14]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[15]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[16]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[17]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[18]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[19]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[20]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[21]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[22]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[23]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[24]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[25]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[26]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[27]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[28]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[29]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[30]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[31]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

satelite[32]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown

@mmosca
Copy link
Collaborator Author

mmosca commented Jun 27, 2024

Cool. Very useful. I will have a loot. I am not 100% sure I am parsing all the satelite fields correctly, specially coming from older messages.

The one that didn't read the version, probably needs initializing of the satelites array to get rid of false entries.

@stronnag
Copy link
Collaborator

Cool. Very useful. I will have a loot. I am not 100% sure I am parsing all the satelite fields correctly, specially coming from older messages.

The one that didn't read the version, probably needs initializing of the satelites array to get rid of false entries.

The older model only has SW and HW version strings, no extended version with the protocol version.

@mmosca
Copy link
Collaborator Author

mmosca commented Jul 3, 2024

Cool. Very useful. I will have a loot. I am not 100% sure I am parsing all the satelite fields correctly, specially coming from older messages.
The one that didn't read the version, probably needs initializing of the satelites array to get rid of false entries.

The older model only has SW and HW version strings, no extended version with the protocol version.

I should have fixed the reporting now.

Can you check if there are any regressions on m8 hardware?

I may eventually add some of this info to the configurator as well

@stronnag
Copy link
Collaborator

stronnag commented Jul 4, 2024

Old M8 (v2 firmware).

Info

gps_provider = UBLOX

# status
INAV/WINGFC 8.0.0 Jul  4 2024 / 16:45:16 (7677abeb)
GCC-14.1.0
...
GPS: HW Version: UBLOX8 Proto: 15.00 Baud: 115200
  SATS: 0
  HDOP:  99.990
  EPH :  99.990 m
  EPV :  99.990 m
  GNSS Capabilities:
    GNSS Provider active/default
    GPS 1/1
    BeiDou 0/0
    Glonass 1/1
    Max concurrent: 2

CLI

# gpssats
UBLOX Satelites
satelite[2]: 0:9
sigId: 0 (GPS L1C/A)
signal strength: 31 dbHz
quality: 3 (Signal detected but unusable)
signal flags: 0x01
signal: Healthy

satelite[3]: 1:136
sigId: 0 (SBAS L1C/A)
signal strength: 34 dbHz
quality: 2 (Signal acquired)
signal flags: 0x00
signal: Unknown (0x0)

ublox-cli --pass --no-init

SVINFO: Channels 4
Chn	ID	used	healthy	quality
  3	G6	-	-	7
  0	G9	-	-	7
  2	G20	-	Y	1
  1	SBAS136	-	-	6

Ancient Neo6M

Info

GPS: HW Version: Unknown Proto: 0.00 Baud: 115200
  SATS: 0
  HDOP:  99.990
  EPH :  99.990 m
  EPV :  99.990 m
  GNSS Capabilities:
    GNSS Provider active/default
    GPS 1/1
    Max concurrent: 0

CLI

I don't think this really works with 64 satellites ...

# gpssats
UBLOX Satelites
satelite[1]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown (0x0)

... cut for brevity ...

satelite[64]: 0:0
sigId: 0 (GPS L1C/A)
signal strength: 0 dbHz
quality: 0 (No signal)
signal flags: 0x00
signal: Unknown (0x0)

I would not oppose dropping Neo6 and earlier.

@mmosca
Copy link
Collaborator Author

mmosca commented Jul 4, 2024

I have a plan for that. the 64 is an arbitrary number I picked. Can easily be changed.

Regarding m6, I do have a plan for that.

There are currently 3 main categories of gps in the ublox code:

  1. Pre-historic things, like this m6
  2. Things with software > 15.01 and < 23.01 M8 and possibly M7
  3. Things with software >= 23.01 m10

I was planning on suggesting deprecating anything before 15.01

You may be bale to use use it, but we will drop the auto config and you need to make sure it can output NAV_PVT and NAV_SIT or NAV_SAT.

Lots of code we can remove in that case

@mmosca mmosca merged commit ca82d1c into master Jul 4, 2024
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants