mavlink / qgroundcontrol

Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)
http://qgroundcontrol.io
3.28k stars 3.6k forks source link

Holybro H-RTK F9P RTK module causing crash on current master Android build #11728

Open hitagisol opened 2 months ago

hitagisol commented 2 months ago

I'm using the SIYI MK32 GCS and building the current master using Android arm64_v8a as the target. Currently when I connect the F9P RTK base module to the GCS, the RTK icon is showing up but seems the GCS is not really talking with the RTK module, in both survey-in or fixed base position mode (at least in the console log nothing is showing up when enabled the RTKGPS log catalog. Seems the module is detected because it is showing the correct module as u-blox F9P). Then if I detach the module the application crashed.

System Information

HTRamsey commented 2 months ago

RTK on mobile was disabled up until recently. I've just recently updated the serial drivers so that RTK modules can actually connect but haven't finished fixing the actual GPS communication portion for android yet.

Edit: Found possible solution, adding to #11714

hitagisol commented 2 months ago

Hi. I just tried on v4.4.0 and yes I'm getting the "internal error" on LinkManager too. I noticed that in the past the RTK GPS is disabled by that mobile guard and I saw it has been reenabled in the current master, so I'm giving it a try.

Holden @.***> 于2024年7月30日周二 18:42写道:

Could you look at #11677 https://github.com/mavlink/qgroundcontrol/issues/11677 and see if this is what happen on v4.4.0 for you?

— Reply to this email directly, view it on GitHub https://github.com/mavlink/qgroundcontrol/issues/11728#issuecomment-2258776326, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJIFLS3D4MVCUTVXLZOOH7DZO67ALAVCNFSM6AAAAABLWXGBMKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENJYG43TMMZSGY . You are receiving this because you authored the thread.Message ID: @.***>

HTRamsey commented 2 months ago

If you get the chance I would appreciate your help to try a couple of things and see what happens

hitagisol commented 2 months ago

If you get the chance I would appreciate your help to try a couple of things and see what happens

Yes I could give a try. Any how I only have the SIYI MK32 at my hand as the testing device which is running an Android 9.0. If that is find for the test please let me know.

HTRamsey commented 2 months ago

Should be fine. The first thing, can you change the line 297 in AndroidSerial.cc like this? A timeout of -1 is being sent when the serial library is expecting a 0. image

hitagisol commented 2 months ago

AndroidSerial.cc

It's performing the same as before the modification. Just in case we are aligned I'm doing the modification on commit 34516a7d34b0d7ceab62100cc22ec78264d024a3. Another thing I'm not sure if causing trouble is in the qserialport_android.cpp, line 138 bool QSerialPortPrivate::_writeDataOneShot() is using the writeBuffer, but I'm not able to find where this buffer is appended. I'm not diving deep in the qiodevice yet so probably I'm missing some points.

HTRamsey commented 2 months ago

Something else you can try is to look at this PR #10250 and try the change in GPSProvider.cc, except use Q_OS_ANDROID instead of android

hitagisol commented 2 months ago

Q_OS_ANDROID After I add the define guard with Q_OS_ANDROID to remove the if (_serial->waitForBytesWritten(-1)) line in GPSProvider.cc, the behavior changes. Now sometimes the RTK module goes into the survey-in mode (not always). And when it's doing the survey-in, seems the communication stops after random time (around 5 to 10 seconds) and the "Duration" and "Current Accuracy" do not update anymore. Then if I detach the RTK module it causing the application to crash.