NMEA GPS modules and alternatives to U-blox | LC86G & LIV4F

Hi all, first post here so hope I’m in the right place.

I’ve been doing some experimentation with some GNSS modules that use NMEA protocol. I’m having trouble getting stable flight performance compared to the same aircraft using U-blox modules (M9- and M10-based).

I have built up two GPS/Compass boards using a Quectel LC86G on one board, and an ST LIV4F on the other. Both boards use a QMC5883 magnetometer.

I have both configured to output the standard NMEA messaging (GGA, RMC, VTG messages at minimum) at 5Hz.

I have the LC86G configured for all constellations, and it picks up up to 30 satellites very quickly even from a cold start. Reported HDOP is typically between 0.5 and 0.7. The LIV4F-based module has a less-ideal antenna configuration and gets lower sat count and higher HDOP, typically sitting around 10-12 sats and around 1.0 HDOP.

In short; I’ve been able to get quadcopters with both systems flying, but with some issues. The aircraft fishbowl around in the horizontal to a slight degree when put in a hover. Vertical stability is more of an issue, but I’ve been able to get better performance by setting EK3_SRC2_POSZ to 3 for GPS (SRC1_POSZ is baro). I note that the default setup is for GPS to be used for VELZ, but we are missing VZ from the NMEA GPS modules.

I’m happy to provide more information about the other system hardware as required.

I’ve seen that within the NMEA driver code there is support for some non-standard NMEA messages from Allystar and Unicore ($PHD and $KSXT etc.) that provide VZ and some of the other data we would see from U-blox modules.

I am wondering what data is specifically required from the GNSS module? Is it possible to get reasonable stable flight behaviour with standard NMEA data only? If so, is there any guidelines or advice on how to approach tuning with these modules?

Thanks for any help.