# Serial Port Configuration
Many serial (UART) ports on a Pixhawk board can be fully configured via parameters: e.g.:
The configuration makes it easy to (for example):
- change the baudrate on a port.
- run MAVLink on a different port, or change the streamed messages.
- setup dual GPS.
- enable sensors that run on a serial port, such as some distance sensors.
Some ports cannot be configured because they are used for a very specific purpose like RC input or the system console (
# Pre-configured Ports
The following functions are typically mapped to the same specific serial ports on all boards, and are hence mapped by default:
- MAVLink is mapped to the
TELEM 1port with baudrate 57600 (for a telemetry module).
- GPS 1 (gps driver) is mapped to the
GPS 1port with a baudrate Auto (with this setting a GPS will automatically detect the baudrate - except for the Trimble MB-Two, which requires 115200 baudrate).
- MAVLink is mapped to the Ethernet port using
MAV_2_CONFIGon Pixhawk devices that have an Ethernet port.
All other ports have no assigned functions by default (are disabled).
The port mappings above can be disabled by setting MAV_0_CONFIG, GPS_1_CONFIG, and MAV_2_CONFIG to Disabled, respectively.
# How to Configure a Port
All the serial drivers/ports are configured in the same way:
Set the configuration parameter for the service/peripheral to the port it will use.
Configuration parameter names follow the pattern
*_CFG(QGroundControl only displays the parameters for services/drivers that are present in firmware).
At time of writing the current set is: GPS_1_CONFIG, GPS_2_CONFIG, ISBD_CONFIG, MAV_0_CONFIG, MAV_1_CONFIG, MAV_2_CONFIG, MODAL_IO_CONFIG, MSP_OSD_CONFIG, RC_PORT_CONFIG, TEL_FRSKY_CONFIG, TEL_HOTT_CONFIG, XRCE_DDS_0_CFG, SENS_CM8JL65_CFG, SENS_LEDDAR1_CFG, SENS_SF0X_CFG, SENS_TFLOW_CFG, SENS_TFMINI_CFG, SENS_ULAND_CFG, SENS_VN_CFG, RC_CRSF_PRT_CFG, MXS_SER_CFG, UWB_PORT_CFG, DSHOT_TEL_CFG
Reboot the vehicle in order to make the additional configuration parameters visible.
Set the baud rate parameter for the selected port to the desired value.
Configure module-specific parameters (i.e. MAVLink streams and data rate configuration).
The GPS/Compass > Secondary GPS section provides a practical example of how to configure a port in QGroundControl (it shows how to use
GPS_2_CONFIG to run a secondary GPS on the
TELEM 2 port).
# Deconflicting Ports
Port conflicts are handled by system startup, which ensures that at most one service is run on a specific port. For example, it is not possible to start a MAVLink instance on a specific serial device, and then launch a driver that uses the same serial device.
At time of writing there is no user feedback about conflicting ports.
# Configuration Parameter Missing from QGroundControl
QGroundControl only displays the parameters for services/drivers that are present in firmware. If a parameter is missing, then you may need to add it in firmware.
PX4 firmware includes most drivers by default on Pixhawk-series boards. Flash-limited boards may comment out/omit the driver (at time of writing this only affects boards based on FMUv2).
You can include the missing driver in firmware by enabling the driver in the default.px4board config file that corresponds to the board (opens new window) you want to build for. For example, to enable the SRF02 driver, you would a the following line to the px4board.
An easier method would be using boardconfig which launches a GUI where you can easily search, disable and enable modules.
To launch boardconfig type
make <vendor>_<board>_<label> boardconfig
You will then need to build the firmware for your platform, as described in Building PX4 Software.