GPS/Compass

PX4 supports global navigation satellite systems (GNSS) (including GPS, GLONASS, Galileo, BeiDou, QZSS and SBAS) using receivers that communicate via the u-blox, MTK Ashtech or Emlid protocols, or via UAVCAN. It also supports Real Time Kinematic (RTK) and Post-Processing Kinematic (PPK) GPS Receivers, which extend GPS systems to centimetre-level precision.

PX4 can be used with the following compass parts (magnetometers): Bosch BMM 150 MEMS (via I2C bus), HMC5883 / HMC5983 (I2C or SPI), IST8310 (I2C) and LIS3MDL (I2C or SPI). Up to 4 internal or external magnetometers can be connected, though only one will actually be used as a heading source.

The system automatically chooses the best available compass based on their priority (external magnetometers have a higher priority than internal magnetometers). If the primary compass fails in-flight, it will failover to the next one. If it fails before flight, arming will be denied.

:::tip When using Pixhawk-series flight controllers, we recommend using a combined GPS + Compass mounted as far away from the motor/ESC power supply lines as possible - typically on a pedestal or wing (for fixed-wing). The internal compass may be useful on larger vehicles (e.g. VTOL) where it is possible to reduce electromagnetic interference by mounting the Pixhawk a long way from power supply lines. On small vehicles an external compass is almost always required. :::

Supported GNSS and/or Compass

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

GNSS & Compass

This list contains 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.

Device

GPS

Compass

PPK

M9N

ICM42688p

F9P

ICM42688p

SAM-M8Q

MMC5983MA

M8P/M8N

F9P

RM3100

F9P

RM3100

M8N

ICM20948

M8P

HMC5983

M8P

ICM20948

M9N

LIS3MDL

F9P

RM3100

Emlid Reach M+ - PX4 only supports "ordinary" GPS with this module. RTK support is expected in the near future.

FB672, FB6A0

F9P

IST8310

M8N

BMM150

M8N

IST8310

UBX-M8030

QMC5883

M8N

IST8310

M9N

IST8310

M9N

BMM150

F9P

IST8310

F9P

BMM150

F9P

IST8310

F9P

BMM150

M8P

IST8310

UM982

IST8310

M8N

MC-1612-V2b

optional

MC-1612-V2b

MC-1612-V2b

IST8310

M8N

LIS3MDL, IST8308

F9P

AsteRx

Septentrio dual antenna heading

mosaic X5 / mosaic H

Septentrio dual antenna heading

M8N

HMC5983, IST8310, LIS3MDL

F9P

F9P

MAX-M8Q

LIS3MDL

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).

  • Some RTK modules can only be used in a particular role (base or rover), while others can be used interchangeably.

  • The list may omit some discontinued hardware that is still supported. For example CubePilot Here+ RTK GPS is discontinued and may be removed from the list in a future release. The original Here has already been removed. Check earlier versions if a discontinued module is not mentioned here.

Compass/Magnetometer (Only)

This list contains compasses (magnetometers) without GNSS.

Note:

  • ✓ or a specific part number indicate that a features is supported, while ✗ or empty show that the feature is not supported. "?" indicates "unknown".

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.

  2. Reboot the vehicle in order to make the other parameters visible.

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 (e.g. Trimble MB-Two) or when using some RTK GPS Setups with Dual u-blox F9P.

When using GPS for yaw fusion you will need to configure the following parameters:

ParameterSetting

The angle made by the baseline (the line between the two GPS antennas) relative to the vehicle x-axis (front/back axis, as shown here).

Set bit position 3 "Dual antenna heading" to 1 (i.e. add 8 to the parameter value).

:::tip If using this feature, all other configuration should be setup up as normal (e.g. RTK Positioning). :::

Compass Configuration

Compass calibration is covered in: Compass Configuration. The process is straightforward and will autodetect, set default rotations, calibrate, and prioritise, all connected magnetometers.

Developer Information

Last updated