You wired everything correctly but nothing works — GPS has no satellites, VTX won’t change channels, and the receiver won’t bind. The Ports tab is where those problems live. One wrong slider and your GPS talks to a dead UART while the receiver steals the port that should run your VTX control. Here’s how to get every peripheral mapped correctly the first time.
Understanding UARTs: The Hardware Reality
UART stands for Universal Asynchronous Receiver/Transmitter. Each UART on your flight controller is a pair of pins — TX (transmit) and RX (receive) — that talk to exactly one peripheral at a time. A UART can run one protocol. Not two. Trying to run GPS on the same UART as SmartAudio will crash both.
Your flight controller has 3-8 UARTs depending on the model. UART1 is often hard-wired to the USB port for MSP communication with Betaflight Configurator, but some F4/F7 boards expose it on pads as well. UART2 through UART6+ are available for peripherals. The key rule: one UART, one function. Here’s what each function actually means in the Ports tab.
MSP (MultiWii Serial Protocol) — Used by Betaflight Configurator to read and write settings over USB (UART1). Also used at lower baud rates for OSD communication with external modules like the MinimOSD (mostly obsolete now that Betaflight OSD is built-in). Never enable MSP on a UART that’s also running a receiver or GPS — MSP polling interrupts the data stream.
Serial RX — The receiver protocol input. This is where your ExpressLRS, Crossfire, or FrSky receiver talks to the flight controller. The serial protocol (CRSF, SBUS inverted/uninverted) is set in the Receiver tab; the Ports tab just tells Betaflight which UART to listen on. If you’re using ELRS with CRSF, you need both TX and RX connected — CRSF is bidirectional and sends telemetry back to the radio.
GPS — Enables NMEA or UBLOX GPS protocol on the selected UART. Requires both TX and RX. The GPS transmits position data on its TX line, and the FC can send configuration commands on the RX line. With only one wire connected (GPS TX to FC RX), you get position data but no satellite count or HDOP — because the FC can’t request the right NMEA sentences from the module.
VTX (SmartAudio / Tramp) — VTX control protocol. Uses only the TX line from the FC to the VTX’s data pad. This is a unidirectional command path. SmartAudio is bidirectional at the protocol level, but the physical connection is one wire — the FC talks, the VTX listens.
ESC Telemetry — Bidirectional DShot telemetry on a UART RX pin. The ESCs report RPM and temperature data back to the FC on a dedicated wire. This is separate from the motor signal wires — the ESC telemetry wire connects to a UART RX pad on the FC.
Step-by-Step Ports Tab Configuration
Step 1: Draw Your Wiring Map First
Before opening the Ports tab, draw a table on paper or in a text file listing which peripheral is connected to which UART pads. Every wire must be accounted for:
| Peripheral | Connected To | Protocol | Needs TX? | Needs RX? |
|---|---|---|---|---|
| Receiver | UART2 | CRSF | Yes | Yes |
| GPS | UART3 | UBLOX | No (GPS TX only to FC) | Yes (FC RX) |
| VTX | UART4 | SmartAudio | Yes | No |
| ESC Telemetry | UART5 | ESC Sensor | No | Yes |
Step 2: Verify No Conflicts
Each UART can have exactly one active function. If you enable Serial RX on UART2 and also enable GPS on UART2, both will malfunction. Betaflight won’t warn you — it’ll just silently fail. Check for:
– Two functions sharing the same UART
– MSP enabled on a UART that’s also running a peripheral
– A peripheral enabled on a UART with no physical connection
Step 3: Configure in the Ports Tab
In the Ports tab, each UART has its own column. The rows list available functions. For the UART connected to your receiver, enable the “Serial RX” slider. For GPS, enable the “Sensor Input” slider and set it to GPS at 115200 baud (UBLOX default). For SmartAudio, set the Peripherals dropdown to “TBS SmartAudio.” For ESC telemetry, enable “Sensor Input” at Auto baud.
Step 4: Set Baud Rates
GPS defaults to 115200 (UBLOX) or 9600 (older NMEA modules). If your GPS doesn’t lock, the baud rate is the first thing to check. SmartAudio auto-negotiates at 2400 baud — don’t change it. CRSF on ELRS runs at 400k or 1.87M baud automatically — set it to Auto.
Step 5: Save and Reboot
Click “Save and Reboot” at the bottom right. This writes the port configuration to flash. Without this step, nothing you’ve set takes effect. After reboot, reconnect and verify the Configuration tab shows the correct receiver protocol, and the GPS icon in the top bar turns green when satellites are acquired.
Peripheral Baud Rate Quick Reference
| Peripheral | Protocol | Baud Rate | Notes |
|---|---|---|---|
| Receiver (ELRS CRSF) | Serial RX | Auto (400K-5.25M) | Higher = lower latency |
| Receiver (Crossfire) | Serial RX | Auto (400K) | Fixed by TBS hardware |
| GPS (UBLOX) | Sensor Input | 115200 | Most common; M10 modules default |
| GPS (NMEA) | Sensor Input | 9600 | Older/cheap modules |
| VTX (SmartAudio) | Peripheral | 2400 | Auto-negotiated |
| VTX (Tramp) | Peripheral | 9600 | Auto-negotiated |
| ESC Telemetry | Sensor Input | Auto (115200) | Bidirectional DShot |
Common Mistakes & How to Avoid Them
Mistake 1: Enabling Serial RX on the wrong UART.
The consequence: the receiver shows no signal in the Receiver tab, and you spend an hour re-binding and checking wiring that’s actually fine. The fix: trace the receiver’s TX wire to the FC pad, identify the UART number, and enable Serial RX only on that UART. Nothing else enabled on that UART column. If the receiver uses CRSF, both TX and RX must be connected and no other function conflicts.
Mistake 2: GPS connected to the wrong UART or baud rate mismatch.
The consequence: the GPS icon stays red, or you get position data but zero satellites. The fix: GPS must be connected to a UART with both TX and RX available. Set 115200 baud for modern UBLOX modules (M8, M10). If the module is an older NMEA-only unit, try 9600. Check that “GPS” is selected under Sensor Input and that no other function (MSP, Serial RX) is enabled on the same UART.
Mistake 3: MSP enabled unnecessarily on multiple UARTs.
The consequence: MSP polling on multiple ports creates data collisions that slow down the main loop and can cause random disconnects from Betaflight Configurator. The fix: MSP should be enabled only on UART1 (USB virtual COM port) at 115200. Disable it on every other UART unless you have a specific external module that uses it (WTFOS configurator on DJI air units, for example).
Mistake 4: Not saving after Ports tab changes.
The consequence: Betaflight ignores your changes and reverts to the previous configuration on reboot. The fix: always click “Save and Reboot.” Always. Verify that your changes persisted by reconnecting and checking the Ports tab again.
Mistake 5: Forgetting that F4 flight controllers have inverted/uninverted UART limitations.
The consequence: on F4 processors, not all UARTs support inverted serial signals (SBUS uses inverted signaling). If your receiver outputs SBUS and you connect it to a UART that doesn’t support inversion (UART1 or UART3 on many F4 boards), it won’t work. The fix: check your FC’s documentation for inverted-capable UARTs. F7 and H7 processors handle inversion on all UARTs natively — this is one reason to prefer F7/H7 for new builds.
⚠️ Regulatory Notice: The flight recommendations in this article should be followed in accordance with the latest 2026 drone regulations in your country or region. Always verify local laws regarding flight altitude, no-fly zones, remote ID requirements, and registration before flying. Regulations vary significantly between the FAA (US), EASA (EU), CAA (UK), CAAC (China), and other authorities.
Getting your receiver talking is the first step — our Betaflight Receiver Tab guide covers channel mapping, RSSI setup, and failsafe configuration once the Ports tab is correct. For pilots running GPS rescue, our Betaflight GPS Rescue setup guide completes the GPS pipeline from port assignment through flight testing.
The JHEMCU GHF722 AIO packs six hardware UARTs on a 20×20mm board — enough for receiver, GPS, VTX control, ESC telemetry, and a spare for camera control. For builds that need every peripheral mapped, the extra UARTs eliminate the port-sharing compromises that plague F4 and budget F7 boards.
