Skip to content

Global Navigation Satellite Systems (GNSS)

PX4 supports Global Navigation Satellite Systems (GNSS) such as GPS, GLONASS, Galileo, Beidou, QZSS and SBAS, etc. using receivers that communicate via the u-blox, MTK Ashtech or Emlid protocols, or via UAVCAN. A GNSS system is needed for missions, and some other automatic and manual/assisted modes.

Most GNSS modules also contain a compass/magnetometer part (see link for calibration/setup information). Because of this the GNSS module should be mounted as far away from the motor/ESC power supply lines as possible - typically on a pedestal or wing (for fixed-wing).

GPS + Compass

:::note PX4 also supports Real Time Kinematic (RTK) and Post-Processing Kinematic (PPK) GNSS Receivers, which extend GNSS systems to centimetre-level precision. :::

Supported GNSS

PX4 should work with any unit that communicates via the u-blox, MTK Ashtech or Emlid protocols, or via UAVCAN.

This table contains non-RTK GNSS units (most of which also have a compass). These have been tested by the PX4 dev team, or which are popular within the PX4 community.

DeviceGPSCompassNotes
ARK GPSM9NICM42688p
Avionics Anonymous UAVCAN GNSS/MagSAM-M8QMMC5983MA
CUAV NEO 3 GPSM9NIST8310
CUAV NEO 3 Pro GPSM9NRM3100
CUAV NEO 3X GPSM9NRM3100
CubePilot Here2 GNSS GPS (M8N)M8NICM20948
Drotek DP0804M9NLIS3MDLAlso see other Drotek u-blox GPS/Compasses
Emlid Reach M+Supports PPK. RTK expected.
Holybro DroneCAN M8N GPSM8NBMM150
Holybro Micro M8N GPSM8NIST8310
Holybro Nano Ublox M8 5883 GPSUBX-M8030QMC5883
Holybro M8N GPSM8NIST8310
Holybro M9N GPSM9NIST8310
Holybro DroneCAN M9N GPSM9NBMM150
Hobbyking u-blox Neo-M8N GPS with CompassM8N
LOCOSYS Hawk A1 GNSS receiverMC-1612-V2boptional
LOCOSYS Hawk R1MC-1612-V2b
LOCOSYS Hawk R2MC-1612-V2bIST8310
mRo GPS u-blox Neo-M8N Dual CompassM8NLIS3MDL, IST8308
Sky-Drones SmartAP GPSM8NHMC5983, IST8310, LIS3MDL
Zubax GNSS 2MAX-M8QLIS3MDL

Notes:

  • ✓ or a specific part number indicate that a features is supported, while ✗ or empty show that the feature is not supported. "?" indicates "unknown".
  • Where possible and relevant the part name is used (i.e. ✓ in the GPS column indicates that a GPS module is present but the part is not known).
  • The list may omit some discontinued hardware that is still supported. The original Here has already been removed. Check earlier versions if a discontinued module is not mentioned here.

Mounting the GNSS/Compass

Mounting the Compass explains how to mount a GNSS module that has a compass (it is the compass part that is affected by electromagnetic radiation).

Hardware Setup

Instructions for connecting the GPS (and compass, if present) are usually provided by the manufacturer (at least for more common Autopilot Hardware).

Pixhawk Series controllers typically have a clearly labeled port for connecting the GPS, and the compass is connected to either the I2C or SPI port/bus (depending on the device).

The ARK GPS, ARK RTK GPS, Zubax GNSS 2, CUAV C-RTK2, CubePilot Here3 CAN GNSS GPS (M8N), and Avionics Anonymous GNSS/Mag can also be connected via DroneCAN.

WARNING

Pay attention to pinout when connecting the GPS module. While these are all software-compatible, there are several different pin orderings.

GNSS Configuration

The "standard" GPS configuration is provided below. Additional device-specific configuration may be provided in PX4 or manufacturer device documentation (e.g. Trimble MB-Two > Configuration).

WARNING

The GPS protocol expected by PX4 defaults to u-blox (by default other GPS types like Trimble, Emlid, MTK, will not be detected) The protocol can be configured with GPS_x_PROTOCOL.

Configuring the Primary GPS

GPS configuration on Pixhawk is handled transparently for the user - simply connect the GPS module to the port labeled GPS and everything should work.

:::note The default Serial Port Configuration works for most devices. If you are using the Trimble MB-Two you will need to modify the configuration to explicitly set the rate to 115200 baud. :::

Configuring a Secondary GPS (Dual GPS System)

To use a secondary GPS, attach it to any free port, and then perform a Serial Port Configuration to assign GPS_2_CONFIG to the selected port.

The following steps show how to configure a secondary GPS on the TELEM 2 port in QGroundControl:

  1. Find and set the parameter GPS_2_CONFIG to TELEM 2.
    • Open QGroundControl and navigate to the Vehicle Setup > Parameters section.
    • Select the GPS tab (1), then open the GPS_2_CONFIG parameter (2) and select TELEM 2 from the dropdown list (3). QGC Serial Example
  2. Reboot the vehicle in order to make the other parameters visible.
  3. Select the Serial tab, and open the SER_TEL2_BAUD parameter (TELEM 2 port baud rate): set it to Auto. QGC Serial Baudrate Example

After setting up the second GPS port:

  1. Configure the ECL/EKF2 estimator to blend data from both GPS systems. For detailed instructions see: Using the ECL EKF > Dual Receivers.

Configuring GPS as Yaw/Heading Source

GPS can be used as a source for yaw fusion when using modules where yaw output is supported by the device. This is documented in RTK GPS > Configuring GPS as Yaw/Heading Source.

Compass Configuration

Compass calibration for an included compass part is covered in: Compass Configuration.

Developer Information