GSV slows RTK2B messages view to a crawl

Q&A forumCategory: QuestionsGSV slows RTK2B messages view to a crawl
pigosso asked 5 months ago
Let alone firmware updating or settings file upload, which can take even a dozen attempts before getting through.
But disable NMEA GxGSV over USB inside of UBX-CFG-MSG, and everything becomes instant flawlessly smooth.
I think you should really check into this, because you are shipping the thing in your default configuration (idk if this couldn’t be different on older firmwares, but it’s definitively a problem on 1.32)

2 Answers
Ardusimple Staff answered 5 months ago
Dear pigosso,
What you are describing is not normal, maybe you can share more details with us?
1. Which product do you have?
2. Which software and configuration are you trying to upload?
pigosso
replied 5 months ago

Even just your normal rover 10Hz 1.32 cfg.
Both on my older simpleRTK2B-F9P V3 and simpleRTK2B.

After painstakingly comparing that with another cfg I had lying around that didn’t exhibit the issue, I found that was the killer feature.

Ardusimple
Staff replied 5 months ago

1.32cfg doesn’t have 10Hz configuration file, because 1.32 doesn’t support 10Hz with full constellation.

pigosso
replied 5 months ago

https://www.ardusimple.com/wp-content/uploads/2022/09/simpleRTK2B_FW132_Rover_10Hz-00.txt
I meant this file, which you are officially providing in your support page.

clive1
replied 5 months ago

Yeah, I think fire hosing GSV at 10 Hz is inadvisable, and of little use/merit.
Does it work if you decimate the GSV output rates?

Ardusimple
Staff replied 5 months ago

GSV is disabled on UART, but not on USB: You can reduce GSV output with UBX-CFG-MSG.

pigosso
replied 4 months ago

UBX-CFG-MSG only has you enable/disable GSV (which is what I already toggled in the OP). Where can I lower just its rate?
And.. besides that, if nothing is seemingly eluding me then, how could this fly undetected for so long?

clive1
replied 4 months ago

Setting it to 10 literally decimates the output
0=DISABLE
1=EVERY EPOCH
2=EVERY OTHER EPOCH (1/2 Hz for 1 Hz solution rate)
..

pigosso
replied 4 months ago

I see, thanks. 10 seems more or less the neighbourhood everything isn’t just super sluggish (though it’s so awful in u-center flashing rapidly, that I’m not even sure how useful it could be at this point).

Is anybody going to correct the configuration files?

Ardusimple
Staff replied 4 months ago

Hi, we are following this thread and currently is in the to-do list for testing. What we see is that USB interface has enough bandwidth for all this data and some users want this data, and is u-center which is not able to process all this data when run on not super fast PCs. For your case I think you found already a workaround.

pigosso
replied 4 months ago

To be honest, GSV (and to a lesser extent GSA and GLL) are also causing extreme stuttering even in another program I have here.

And yes, the tablet I was trying this is far to be high-end but the crazy thing is that cpu usage was *not* maximized (not even on a single core!).

Maybe you should get in touch with u-blox, I don’t know?

clive1
replied 4 months ago

Ok, so what’s being reported is that uCenter Classic is not able to sink data and the host side system gets hot due to high CPU load or disk/swap activity?

If you connect with a simple serial terminal application does the serial data flow continuously?

uCenter Classic does have issues with high data volume and long-term running. It’s considered obsolete and I’ve not got them to fix it in years of trying.

Is there some other application you can use form data collection or viewing?

pigosso
replied 4 months ago

Well, you actually seem right.
I just checked cpu usage in u-center, and that does skyrocket once I enable GSV (it goes from around 15% to 25%, which is kinda the maximum you can get on my quad core Atom while only using a single thread).

If I try with QtSerialMonitor instead, there’s barely a difference and values seem to be coming pretty smooth (even though I couldn’t precisely confirm if the output rate was 100% obeyed or if something couldn’t have been dropped here and there).

Anyway, what I would really care for eventually was AOG, where I have this crazy bug. https://github.com/farmerbriantee/AgOpenGPS/pull/303
When GSV (or GSA/GLL) are enabled, if you then drop their message you have extreme stutter. If you do *not* drop them, everything is good.
All of this while the CPU is almost completely idle (and I could reproduce this even on a beefy desktop).

clive1
replied 4 months ago

Couple of things going on here.

Any computer from the last 30-years should be able to sink serial data at 115200 baud. And most any 32-bit MCU for that matter, should be fine.
If the application can’t sink the data there’s either an issue with the app or the OS ignores the serial ports. uCenter is doing some logging/database work, and that’s historically been an issue, with it flooding SQLite or whatever it does in the background allowing you to plot paths and signal strengths, deviation plots, etc. This is aggravated by high update rates and long term running. It’s primarily with how it archives this data, sorts it, etc and not the flow from the receiver specifically. It wants to retain all the data in a session, and doesn't have a strategy to shed data as that accumulates uncontrollably.

The receiver has a finite pool of buffers, they retire as the messages leave all the interfaces they’ve been enabled on. Slow baud rates, if left on UART1 or UART2 with NMEA can cause a log-jam.If this is occurring you’ll get a “$GxTXT txbuf,alloc” warning and it will dump packets. You really need to cull all messages, and interfaces you are not using. This will solve the majority of issues. Application software should recognize the “txbuf,alloc” messages, ideally counting and alerting the users. As more satellites are tracked the more data volume NMEA will generate, issues may appear to come and go.

Getting satellite lists for user interface really doesn’t need to be faster than 1 Hz.

On vehicles, 5 – 8 Hz data rates should be sufficient for the kind of dynamics we’re dealing with mowers, tractors, and cars.

People like DJI use 5 Hz and 921600 baud, with lots of messages. Not NMEA, but UBX.

In apps check for data flow and things that might wait or block. Watch for dependency on message ordering.

pigosso
replied 4 months ago

I see thank you. So it was technically two separate bugs that I was experiencing (even though there’s not much of a reason for GSV to be high frequency).

Btw I found that if you set the dwords in HKCU\SOFTWARE\u-blox\u-center3\Database\Completer to 0, then the disk activity stops.

clive1 answered 5 months ago
01 209100C4 CFG-MSGOUT-NMEA_ID_GSV_I2C 01 1
00 209100C5 CFG-MSGOUT-NMEA_ID_GSV_UART1 00 0
00 209100C6 CFG-MSGOUT-NMEA_ID_GSV_UART2 00 0
01 209100C7 CFG-MSGOUT-NMEA_ID_GSV_USB 01 1
01 209100C8 CFG-MSGOUT-NMEA_ID_GSV_SPI 01 1

Want to learn more about GPS/RTK?

1. Our engineering team will contact you to solve any questions
2. We will keep you updated about promotions and new product releases
3.You will only hear from us when we have important news, we won’t spam your email