SBAS enabling on SparkFun SAM-M8Q chip

Hi Sparkfun moderators and forum community!

This is my first post so I apologise if this is not formatted properly. I am currently working on a project with the SAM M8Q receiver. In the data sheet it says that SBAS can be enabled and I want to know a few things about the structure of how this works.

  1. Can SBAS be enabled on the SAM M8Q I have seen some websites that state the receiver can only do QZSS and some that say SBAS can be enabled along with Galileo and Glonass.

  2. I tried to use the commands myGNSS.enableGNSS(true, SFE_UBLOX_GNSS_ID_SBAS); are there any other commands that I would need to include for the specific chip?

  3. I see on the data sheet (https://content.u-blox.com/sites/defaul … 003221.pdf)

On page 154, it states the message structure for GSA:

$xxGSA,opMode,navMode{,svid},PDOP,HDOP,VDOP,systemId*cs

where the svid field should be > 33 to indicate SBAS PRN number > 120. Is this correct or do the SBAS PRN come up in different NMEA?

  1. Is checkUblox() command sufficient for receiving SBAS NMEA sentences?

  2. Is SBAS enabled by default? Does it take time to initialise and if so how long in an urban environment in the UK?

  3. does high precision mode include any sort of corrections or is it just adding some decimal places?

Many thanks

Harry

SBAS is ON by default and should definitely work for US (WAAS) and EU (EGNOS) satellites.

The satellites are however further out, and have higher data rates, which makes them more of a challenge to pull in if your antenna situation and placement is poor. Within a couple of minutes at >=35 dBHz

See UBX-CFG-GNSS and UBX-CFG-SBAS using u-Center Classic (v23.08)

You aren’t going to see SBAS satellites in GxGSA sentences. It should report a DGNSS fix type if used, and a DGPS Station# of 0000 via GxGGA

You’d perhaps want to enable UBX-NAV-SAT and observe in uCenter

High-Precision isn’t supported on this receiver, but would get you extra decimal places, and finer than 2cm reporting.

The SAM-M8Q is unlikely to be a strong performer. You’re going to need to be outside, with an unobscured view of the sky. Position performance (CEP50) is unlikely to be better than 2.5 m even with DGPS or SBAS.

clive1:
SBAS is ON by default and should definitely work for US (WAAS) and EU (EGNOS) satellites.

The satellites are however further out, and have higher data rates, which makes them more of a challenge to pull in if your antenna situation and placement is poor. Within a couple of minutes at >=35 dBHz

See UBX-CFG-GNSS and UBX-CFG-SBAS using u-Center Classic (v23.08)

You aren’t going to see SBAS satellites in GxGSA sentences. It should report a DGNSS fix type if used, and a DGPS Station# of 0000 via GxGGA

You’d perhaps want to enable UBX-NAV-SAT and observe in uCenter

High-Precision isn’t supported on this receiver, but would get you extra decimal places, and finer than 2cm reporting.

Hi Clive thanks for the response, just a quick question, I Have tried using U-centre before but to no avail. I used a I2C to COM adapter which I Bought on amazon. Is this the sort of device which should be used to interface with u - centre or is it an evaluation kit?

Many thanks again

Harry Critchfield

Probably going to want to use Serial

uCenter likely wants an Aardvark I2C adapter. I made a USB-to-I2C adapter for uBlox receivers using a RPi Pico, but this could port to most 3.3V Arduino platforms, and connects as a COM port. https://github.com/cturvey/RandomNinjaC … R_MRK2.ino

Ok cool I’ll give this a try later on.

In response to your previous question (https://content.u-blox.com/sites/defaul … 619%29.pdf) [page 10] this says that D-GPS cannot be used in conjunction with SBAS. Surely then this would mean that if SBAS is enabled DGNSS will not be active and the fix type won’t show up.

Also is the function byte RTK = myGNSS.getCarrierSolutionType(); good enough to receive this fix type message?

The table on page 10 states


[msg type],[Fix]

1 Differential GPS Corrections

2 Delta Differential GPS Corrections

3 GPS Reference Station Parameters

9 GPS Partial Correction Set

This part isn’t going to give you carrier solutions. For that you’d need a NEO-M8P or ZED-F9P type part, being feed with RTCM3 data.

The M8 supports RTCM2 (Msgs 1,2, 3 and 9), but these would typically come from a Beacon, most of that infrastructure has been deprecated, and replaced with SBAS with it’s signals via L1-Band GPS, compared to using a Beacon Receiver. Both DGPS and SBAS are GPS ONLY, using one or the other isn’t going to be a hurdle here. If you have SBAS available, use that.

For DGNSS in a more subjective sense, you’d need to be using a NEO-M9N, or one of the SparkFun / Beitian M9 receivers, which you can feed with RTCM3 data, from either an NTRIP type source, or a ZED-F9P or zED-F9T acting as the source of your Base Station data stream.

Here, illustrating NEO-M9N DGNSS with data from a ZED-F9T

https://portal.u-blox.com/s/question/0D … ithout-rtk

https://portal.u-blox.com/sfc/servlet.s … 00000Y6Nze

Hello again Clive

I am now working on trying to output the UBX messages to the serial port. I am using the arduino IDE with the examples provided and I have copied my code below. I am unsure as to why I cannot get it to output just the UBX messages. Can you help me? Cheers

#include <Wire.h> //Needed for I2C to GNSS

#include <SparkFun_u-blox_GNSS_Arduino_Library.h> //Click here to get the library: http://librarymanager/All#SparkFun_u-blox_GNSS

SFE_UBLOX_GNSS myGNSS;

void setup()

{

Serial.begin(115200);

Serial.println(“SparkFun u-blox Example”);

Wire.begin();

if (myGNSS.begin() == false)

{

Serial.println(F(“u-blox GNSS not detected at default I2C address. Please check wiring. Freezing.”));

while (1);

}

myGNSS.setI2COutput(COM_TYPE_UBX); //Set the I2C port to output both NMEA and UBX messages

myGNSS.saveConfigSelective(VAL_CFG_SUBSEC_IOPORT); //Save (only) the communications port settings to flash and BBR

myGNSS.enableMessage(UBX_NAV_SAT);

//This will pipe all NMEA sentences to the serial port so we can see them

myGNSS.setOutputPort(Serial);

}

void loop()

{

myGNSS.checkUblox(); //See if new data is available. Process bytes as they come in.

delay(250); //Don’t pound too hard on the I2C bus

}

PLEASE IGNORE myGNSS.enableMessage(UBX_NAV_SAT); This is the improper usage of this command

For the M8, you’ll need to use UBX-CFG-PRT command to define supported input/output protocol(s). The GET/SET VAL methods are for Generation 9 and above receivers.