Getting PointPerfect IP correction data for Facet (without L-band) - maybe with Android GNSS Master?

I’d like to get PointPerfect IP correction data (not the L-band service) into my Facet out in the field.

So far, it works sitting at the PC with u-center (v23.08) acting as the MQTT server over a USB cable to the Facet. The ZED-F9P firmware is updated to 1.32 version. Had to change CFG-USBINPROT-SPARTN to “1” to get this to work.

I would like to get the correction feed over Bluetooth from my Android 13 phone out in the field. I would settle for USB, though.

Purportedly the Android GNSS Master app does this. So far, the GNSS Master app on my Android 13 phone:

  • will connect to the Facet over either bluetooth or USB and get the NEMA data

  • will run NTRIP and get the Facet into an RTK-FIX using either bluetooth or USB

  • on either bluetooth or USB, will connect to the PointPerfect data stream, and indicate that the GNSS Master app is getting correction data traffic from PointPerfect, but will not send the correction data over bluetooth or USB to the Facet, leaving the Facet in a DGPS fix type.

I have set CFG-UART2INPROT-SPARTN to “1”. Also enabled CFG-MSGOUT-NMEA_ID_GST_USB, which was indicated as needed in the u-blox article that suggest GNSS Master can be used for this (https://support.thingstream.io/hc/en-gb … aster-app-).

I suspect this is just a ZED-F9P configuration problem or, more likely, a GNSS Master problem because my PointPerfect plan is not from Ardusimple. GNSS Master has not responded to my email.

Any thoughts for fixes or alternatives are welcome.

We have talked about adding the ability to connect a Facet (without L-Band) to PointPerfect using MQTT, over WiFi initially and cellular far future. See here: https://github.com/sparkfun/SparkFun_RT … issues/497

All the pieces are there from a firmware perspective, it’s just a lot of stitching together to make it work. Please add your vote, it helps us gauge future direction.

Sorry, I don’t know enough about GNSS Master app to trouble shoot how it might be getting mixed up.

I would like to able to get PointPerfect correction data to a Facet (no L band) from an Android device. Would prefer bluetooth connection, but would still be happy with USB.

I’m neither a PointPerfect nor a GNSS Master user, but I have a couple thoughts:

… on either bluetooth or USB, will connect to the PointPerfect data stream, and indicate that the GNSS Master app is getting correction data traffic from PointPerfect, but will not send the correction data over bluetooth or USB to the Facet, leaving the Facet in a DGPS fix type.

Seems like it would be helpful to know if this is a GNSS Master issue (bad/no data being sent) or a Facet config issue (data being sent but the Facet isn’t configured to receive it.

To that end, is there a way to monitor the data stream GNSS Master is sending out the USB to the Facet? Is there any chance that GNSS Master will blindly stream the PointPerfect data out the USB and can you connect something that isn’t a GNSS receiver to see what data, if any, GNSS Master is steaming out?

…or, more likely, a GNSS Master problem because my PointPerfect plan is not from Ardusimple. GNSS Master has not responded to my email.

While this idea doesn’t make me smile at all, and it might be money down the drain, apparently you can get a 1-month PointPerfect subscription from ArduSimple’s website for 55 Euros and test this theory.

I don’t know much about this subject either. But I will give a comment for what it is worth. At first I didn’t realize that GNSS Master was affiliated with ArduSimple but it apparently is based on the Google search (although the GNSS Master app on Google Play doesn’t mention this) so I believe that you may be correct regarding the device not being an ArduSimple device. However you can get a Thingstream subscription for less than 55 Euros here (they have a lot of different options) https://developer.thingstream.io/guides … ng-started. Free 30 day trial here https://www.u-blox.com/en/product/pointperfect

I now have the Facet getting SPARTN messages from my Android phone via bluetooth from GNSS master.

UBX-MON-MSGPP shows the SPARTN traffic coming into the ZED-F9P over I2C - not the UARTs.

UBX-RXM-SPARTNKEY shows my correct pointperfect keys.

UBX-RXM-COR shows the messages as “Valid (1) -Valid 1)” and “Error-fee (1)” and “Yes (1)” for “Can Handle” - some messages are “Not used (1)” but most are “Used (2)”. For “Type - Subtype” the Facet is getting an assortment of “0 - 0”, “0 -1”, “0 -2”, “0 -3”, “1 - 0”, “1 - 1”, “1 - 2”, “1 - 3”, and “2 - 0”. The u-blox configuration description shows these as valid, except there’s no info on “0-3” or “1-3”, but the ZF9P seems to no be using those.

UBX-RXM-SPARTN also shows the incoming messages, same type/subtype and whether used or not.

This all sound rosy, but the FACET will not process the corrections - it stays in a “3d/DGNSS” fix, rather than RTK-float or RTK-fixed. In contrast, using the u-center MQTT client to feed SPARTN data to the Facet over USB cable generates the same messages noted above, but gets the FACET into a 3D/FLOAT within a few seconds and 3D/FIX a bit later.

Any ideas as to why the SPARTN traffic coming in on I2C doesn’t work, but coming in on USB does?

Is there a way to configure the ESP32 to send the data received over bluetooth to one of the ZF9P UARTs?

Two tech support people from u-blox spent almost an hour with me on a MS teams conference trying to fix the problem with a PointPerfect IP feed over bluetooth to a Facet. Amazing customer service!

Unfortunately, they couldn’t resolve the issue because it does not seem to be related to the ZED-F9P or the thingstream MQTT feed of Spartn data. Something going on with the ESP32 or maybe GNSS Master.

After the call with the u-blox folks, I updated the firmware on the ESP32 controller to the latest version (v3.9). I also used u-center to reset the ZED-F9P to factory defaults.

Then booted the GNSS device and tried to run PointPerfect over USB from GNSS Master on my Android 13 phone. It didn’t work at first.

So I hooked up to u-center and set RAM, BBR, and Flash items for CFG-USBINPROT-SPARTN to 1 and reconnected to the phone/GNSS Master without rebooting. It works – took a few minutes, but got to a 1.5cm RTK-FIX, with it working with SW Maps! I had tried a USB feed from GNSS Master before without success, so I’m not sure why it works now.

Unfortunately, the CFG-USBINPROT-SPARTN setting doesn’t hold past a reboot. I tried UBX-CFG-CFG without success. I suspect the ESP32 firmware is overwriting it on bootup. Any way to keep the ZF9P overwrite of this configuration item from happening on boot?

Would still be nice to get PointPerfect running over bluetooth.

Confirmed - the RTK-Surveyor firmware is overwriting the ZED-F9P CFG-USBINPROT-SPARTN setting to 0 on each restart.

I’m over 90 miles from the nearest free NTRIP station, but I can get cell service out here. On my budget, I need PointPerfect - no pricey L band unit and data feed or the duplicate cost another Facet for a base, plus radios.

Here’s what I did:

In the source file System.ino you’ll find this:

if (commandSupported(UBLOX_CFG_USBINPROT_SPARTN) == true)

response &= theGNSS.addCfgValset(UBLOX_CFG_USBINPROT_SPARTN, 0);

Change the 0 to a 1 and compile the firmware from source with the changed System.ino file. Make sure you use ESP32 core version 2.0.2 and the library versions listed in the build file to avoid problems.

This will set the ZED-F9P setting for CFG-USBINPROT-SPARTN at 1 on each reboot or power cycle. That way, you can use GNSS Master on Android to feed PointPerfect SPARTN data to the Facet over a USB cable without using u-center each time you power up.

Bluetooth delivery would be much more elegant solution, but apparently there are RAM problems that will foreclose that option.

I’m going to submit a new feature request on the git repo for an item in the firmware configuration utility that will allow this change to be selectable.