# GPS & Compass
PX4 supports global navigation satellite systems (GNSS) (including GPS, GLONASS, Galileo, BeiDou, QZSS and SBAS) using receivers that communicate via the UBlox, MTK Ashtech or Emlid protocols, or via UAVCAN. It also supports Real Time Kinematic (RTK) 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).
Note The set of supported compasses can be inferred from the magnetometer drivers (opens new window) in the source code.
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 internal priority (external magnetometers have a higher priority). 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.
# Combined GPS/Compass Options
Some popular GPS/compass options include:
- Ublox Neo-M8N GPS with Compass (opens new window) (Hobbyking)
- mRo GPS u-Blox Neo-M8N Dual Compass LIS3MDL+ IST8310 (opens new window) (mRo store)
- Drotek uBlox GPS/Compasses (opens new window) - e.g DP0804 (NEO-M9N GPS + LIS3MDL Magnetometer for Pixhawk 3 Pro) (opens new window) (drotek)
- Holybro Pix32 M8N GPS Module (opens new window) (Holybro Shop (opens new window)) (getfpv (opens new window))
- Holybro Micro M8N GPS Module (opens new window) (Holybro Shop (opens new window)) (getfpv (opens new window))
- Holybro Pixhawk 4 GPS Module (10 pin) (opens new window) (Holybro Shop (opens new window))) (getfpv (opens new window))
- Holybro Pixhawk 4 2nd GPS Module (6 pin) (opens new window) (Holybro Shop)
- Here GNSS GPS (M8N) (opens new window) (getfpv)
- Hex Here2 GNSS GPS (M8N)
- Zubax GNSS 2 (opens new window) (zubax.com)
- Avionics Anonymous UAVCAN GNSS/Mag (opens new window) (Tindie)
- 3DR uBlox GPS with Compass kit (opens new window) (getfpv) - Discontinued
Instructions for connecting the GPS and compass are usually provided by the manufacturer (at least for more common Autopilot Hardware).
Note Pixhawk Series controllers usually 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 Zubax GNSS 2 (opens new window) and Avionics Anonymous GNSS/Mag (opens new window) can also be connected via UAVCAN.
Tip Pay attention to pinout when connecting the GPS module. While these are all software-compatible, there are several different pin orderings.
# GPS (Only) Options
- Emlid Reach M+ (opens new window) (emlid.com)
Note At time of writing PX4 does not support RTK GPS with this module (only "ordinary" GPS). Support is expected in the near future.
# Compass (Only) Options
# RTK-GPS Devices
Information about supported devices and setup/configuration can be found in the sidebar under: RTK GPS.
# 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.
# Secondary GPS (Dual GPS System)
The following steps show how to configure a secondary GPS on the
TELEM 2 port in QGroundControl:
- 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).
- Reboot the vehicle in order to make the other parameters visible.
- Select the Serial tab, and open the SER_TEL2_BAUD parameter (
TELEM 2port baud rate): set it to Auto.
After setting up the second GPS port:
- Configure the ECL/EKF2 estimator to blend data from both GPS systems. For detailed instructions see: Using the ECL EKF > Dual Receivers.
Compass calibration is covered in: Compass Configuration. The process is straightforward and will calibrate all connected magnetometers.
Additional configuration can be performed using the CAL_MAGx_ parameters (where
Generally you will not need to modify these as compasses are autodetected, prioritised and are all calibrated at the same time
(a possible exception is CAL_MAGx_EN which might be used to disable an internal compass).
You may however wish to read them, as they will let you know which magnetometers are internal or external (CAL_MAGx_EN) and which is being uses as the main heading source (CAL_MAG_PRIME).