Mismatched UART assignments are the #1 reason new builds fail to connect receivers, GPS modules, or VTX control. You wired everything right, but the FC ignores your receiver because the serial port isn’t told what to do with it. Here’s how to fix every port assignment in the Betaflight Ports tab without guessing.
Understanding the Betaflight Ports Tab
Every UART on your flight controller can serve exactly ONE primary function at a time. The Ports tab maps physical UART pins to logical peripherals: Serial RX, MSP, GPS, telemetry, ESC telemetry, and VTX control. Get this wrong and your receiver won’t talk, your OSD won’t update, or your GPS will sit in the corner doing nothing.
The tab lists UARTs by number, left to right. Each row has a toggle column plus checkboxes for every peripheral type. Betaflight 4.5 enforces conflict detection — if you try to assign MSP and Serial RX to the same UART, the Configurator blocks it with a red warning bar.
How to Read the Ports Tab
A UART with Configuration/MSP enabled (the slider in the leftmost column) with baud rate 115200 is the USB VCP or a dedicated MSP link for your external module. Don’t touch these unless you know what you’re breaking. A UART with Serial RX enabled is your receiver port. A UART with Sensor Input → GPS at 115200 or 38400 baud talks to a GPS module. A UART with Peripherals → VTX (TBS SmartAudio / IRC Tramp) drives your VTX.
The Telemetry Output column is for FrSky SmartPort or similar — you almost never need this on modern ELRS/Crossfire builds. Leave it off.
Step-by-Step Port Assignment
Step 1: Identify your actual wired UART. Open the FC manual or look at the silkscreen on the board. Find which UART pads you soldered your receiver to. Example: “RX6/TX6” means UART6.
Step 2: Assign Serial RX. On the row for that UART, enable the Serial RX slider. Leave everything else off on that row. If your receiver is ELRS via CRSF, your work here is done — ELRS talks CRSF natively.
Step 3: Assign VTX control if applicable. If you wired SmartAudio to a specific UART TX pad (say TX3), find UART3 in the Ports tab. Under Peripherals, select VTX (TBS SmartAudio) or VTX (IRC Tramp). Set baud rate to the default (usually auto-negotiated). Do NOT enable Serial RX or MSP on this UART.
Step 4: Assign GPS. If you have a GPS wired to a UART, enable Sensor Input on that row and select GPS from the dropdown. Set baud rate: 115200 for M10/M8 modules, 38400 for older BN-220 units. Verify in the GPS tab that 3D fix appears within 60 seconds outdoors.
Step 5: Verify in the Receiver tab. After saving, go to the Receiver tab. If Serial RX is correctly assigned, you’ll see channel bars moving when you wiggle the sticks. No movement? Double-check the UART number, then check your receiver protocol (CRSF for ELRS/Crossfire, SBUS for FrSky/older).
What Happens When You Get It Wrong
Enable Serial RX on the wrong UART: receiver tab shows nothing. Receiver is dead in the water.
Enable MSP on the receiver’s UART: Configurator disconnects randomly because MSP packets collide with RC data.
Enable two peripherals on one UART: Betaflight 4.5 blocks this, but older versions let you save it and then nothing works.
VTX control on wrong UART: OSD shows “VTX: DEVICE NOT READY” and SmartAudio never negotiates.
GPS on wrong baud rate: module powers on but never acquires fix. The GPS tab shows zero satellites and the icon stays red.
UART Peripheral Conflict Table
| Peripheral | UART Requirement | Conflicts With | Baud Rate | Notes |
|---|---|---|---|---|
| Serial RX | Any free UART | MSP, GPS, VTX | Auto (protocol) | One UART only |
| MSP (external) | Dedicated UART | Serial RX, GPS | 115200 | For external BT/WiFi only |
| GPS | Any free UART | Serial RX, MSP | 115200 (M10) / 38400 | Needs TX+RX |
| VTX SmartAudio | TX-only UART | Serial RX, MSP | Auto | Needs only TX pad |
| ESC Telemetry | Dedicated UART | All above | 115200 | Rarely used now |
| FrSky Telemetry | TX-only UART | Serial RX, MSP | Auto | Legacy FrSky only |
Common Mistakes & What Most Pilots Get Wrong
Mistake 1: Confusing UART numbers with physical pin labels. The silkscreen “RX3” on your board means “UART3 Receive” — not “connect receiver here.” It’s the RX pin of UART3. Your receiver’s TX wire goes to this pad because TX→RX. If you wire receiver TX to FC TX, you have two transmitters shouting at each other. Nothing works. Always connect TX→RX and RX→TX across devices.
Consequence: Receiver powers on but no signal in Betaflight. You spend 45 minutes reflashing firmware when the issue is a crossed wire or wrong UART checkbox.
Fix: Look at the wiring diagram. Wire the receiver’s TX pad to the FC’s RX pad of the chosen UART. If using only a receiver (no telemetry back from FC to radio), only the TX→RX connection is needed — leave the return wire disconnected.
Mistake 2: Forgetting to save before leaving the tab. You click through checkboxes, switch to the Receiver tab to test, and everything’s still dead. Betaflight doesn’t auto-save — you must click the “Save and Reboot” button in the bottom right. The Configurator gives no warning when you navigate away without saving.
Consequence: You keep testing the wrong configuration and assume the hardware is broken. Components get desoldered and re-soldered for no reason.
Fix: Make “Save and Reboot” a muscle-memory step before leaving the Ports tab for any reason. The FC reboots in ~3 seconds. Test immediately after.
Mistake 3: Leaving MSP enabled on the USB VCP UART and then wondering why the Configurator disconnects every 30 seconds. This is a specific variant of the “too many things on one UART” problem. The USB VCP already uses MSP internally. Enabling the MSP checkbox on UART1 (which maps to VCP on many F4/F7 boards) creates a second MSP channel that fights with the primary one.
Consequence: Random disconnects during configuration. You can’t reliably change settings because the Configurator keeps dropping.
Fix: On the USB VCP row, leave MSP disabled. The Configurator handles VCP MSP automatically — you don’t need to check any box for USB to work.
Mistake 4: Setting GPS baud rate to AUTO. Some GPS modules support auto-baud but most don’t. The BN-220 in particular needs exactly 38400 baud — AUTO on Betaflight 4.4+ defaults to 115200 and the module never syncs.
Consequence: GPS powers on, LED blinks, but Betaflight GPS tab shows “–” for lat/lon. You assume the module is broken.
Fix: Set baud rate explicitly. 115200 for M10 (BN-880Q, HGLRC M100), 38400 for older M8 (BN-220, BN-880). If unsure, try both — a wrong baud rate won’t damage anything.
⚠️ Regulatory Notice: The configuration guidance in this article should be followed in accordance with the latest 2026 drone regulations in your country or region. Port assignments that enable GPS Rescue and return-to-home features must comply with local autonomous flight restrictions. Some regions limit automated RTH altitude and flight path behavior. Always verify local laws regarding autonomous drone features, remote ID requirements, and registration before flying. Regulations vary significantly between the FAA (US), EASA (EU), CAA (UK), CAAC (China), and other authorities.
Once your Ports tab is squared away, the next layer is making sure your receiver’s channel map lines up correctly — we covered that in detail in our guide to Betaflight Receiver Tab configuration. And if you’re running an ELRS setup, make sure the serial protocol is set to CRSF, which we walk through in the ExpressLRS binding and registration guide.
If you’re rebuilding a stack and need a reliable flight controller with clearly labeled UART pads and solid port mapping, the SpeedyBee F405 V4 is my go-to for mid-range builds. Every UART is broken out with clean silkscreen, and the Bluetooth MSP port makes field tuning painless. Available at uavmodel.com.

Pingback: FPV LED and WS2812 Strip Setup: Betaflight LED Tab, Color Programming, and Orientation Indicators — 2026 Guide – UAVMODEL Insights