Die Funkstrecke ist der Teil am Quad, der einen am wenigsten spektakulär, aber am hartnäckigsten ärgert. Ein Empfänger, ein Sender, ein serielles Protokoll — und trotzdem saß ich mehr als einmal vor einem Modell, das auf dem Schreibtisch piepte und in Mission Planner keinen einzigen Stick-Ausschlag zeigte.

Dieser Erfahrungsbericht dokumentiert die Umstellung von einem alten IBUS-Empfänger auf ELRS (ExpressLRS) mit CRSF und bidirektionaler Telemetrie: Aufbau, Sender-Seite, ArduPilot-Parameter und die Stolpersteine.

Aufbau

Vier Dinge sind beteiligt: der Sender RadioMaster TX16S mit einem ELRS-Sendemodul in der JR-Bay (bei mir ein Ranger Micro), der Empfänger RadioMaster RP3 (2,4 GHz ELRS) und der Flugcontroller Pixhawk 6C Mini mit ArduPilot Copter. Verbunden werden sie über CRSF (Crossfire) — ein bidirektionales serielles Protokoll, das Steuerbefehle und Telemetrie in einem UART bündelt.

Der entscheidende Unterschied zu IBUS/SBUS: CRSF braucht nur eine serielle Leitung, dafür einen echten UART mit Bandbreite. Er hängt an einem TELEM-Port des FCs — nicht am RC-IN-Port.

Verkabelung (JST-GH am TELEM-Port)

Der RP3 hat vier verlötete Pads. Sie gehen über ein 6-poliges JST-GH-Kabel an TELEM2; die Adern sind gekreuzt (TX des Pixhawk redet in den RX des Empfängers):

RP3-PadKabelfarbeSignalTELEM2-Pin
-SchwarzGNDPin 6 (GND)
5VRotVCCPin 1 (VCC)
TWeißTX → PixhawkPin 3 (RX)
RGrünRX ← PixhawkPin 2 (TX)

Aus einem 6-poligen Holybro-JST-GH-Kabel (Pin 1 = Rot/VCC, Pin 6 = Schwarz/GND) werden drei Adern genutzt und an den Stecker gelötet: Pin 1 → RP3-Rot, Pin 2 → RP3-Grün (R), Pin 3 → RP3-Weiß (T), Pin 6 → RP3-Schwarz. Pin 4 + 5 (CTS/RTS) bleiben frei und einzeln isoliert.

Zwei Fehler lassen den Port stumm: den Empfänger an RC IN stecken statt an TELEM, und die CTS/RTS-Adern mitbelegen. CRSF läuft ohne Hardware-Flusskontrolle, und RC IN ist kein frei konfigurierbarer UART.

Die Spannung kommt aus dem TELEM-Port selbst (5 V) — kein separates BEC nötig.

Sender-Seite (EdgeTX)

Auf der TX16S: MDL → Model Setup → External RF, dort Mode CRSF, Baud 400000, Channel Range CH1-16, Receiver 1 und Internal RF → Off (der alte Empfänger wird nicht mehr gebraucht). ELRS selbst steckt im Lua-Menü unter SYS → Tools → ExpressLRS — dort stehen Packet Rate, Telem Ratio, TX Power und Switch Mode, und unten die Firmware-Version (z. B. LBT_3.3.1).

Sender und Empfänger müssen dieselbe Major-Version haben. Gebunden wird über eine Bind-Phrase (beide Seiten bekommen dieselbe Zeichenkette und binden sich automatisch, sobald sie sich sehen) oder über den Knopf-/Power-Cycle-Weg: SYS → Tools → ExpressLRS → [Bind] drücken und das Menü offen lassen, dann am RP3 dreimal schnell hintereinander Strom anlegen → LED blinkt schnell (Bind-Mode), warten bis Dauerlicht = gebunden.

Der kleine Knopf am RP3 ist nicht der zuverlässige Weg. Der Dreifach-Power-Cycle hat bei mir reproduzierbar funktioniert, der Knopf nicht.

ArduPilot-Seite

Der TELEM2-UART wird auf das RC-Eingangsprotokoll gestellt; der alte IBUS-Port wird abgeschaltet:

SERIAL2_PROTOCOL = 23    # RCIN — CRSF/ELRS am TELEM2
SERIAL2_BAUD     = 460   # 460800 bps
RC_PROTOCOLS     = 536   # CRSF-Bit
RSSI_TYPE        = 3     # ReceiverProtocol (RSSI/LQ aus CRSF)
SERIAL5_PROTOCOL = -1    # deaktiviert (war der alte IBUS-Empfänger)

Nach dem Schreiben den FC neu starten (USB ab/ab oder MAVLink-Reboot) — ArduPilot zieht serielle Protokolle nicht immer zur Laufzeit um. Verifiziert wird nicht im Parameter-Dialog, sondern live: Radio Calibration öffnen und Sticks bewegen — die Balken müssen ausschlagen.

Telemetrie-Rückkanal

Auf der TX16S TELE lange drücken und Discover new sensors wählen. Es erscheinen RxBt (Empfänger-/Akku-Spannung), Curr (Strom), Capa (verbrauchte Kapazität in mAh), Bat% (Restkapazität) und RQly (Link Quality).

Sensoren erst entdecken, wenn sie da sind. GPS, Höhe und Satelliten liefern intermittierend und lösen sonst dauernd „Sensor verloren" aus. Wer die Meldung loswerden will, setzt disableTelemetryWarning: 1 in der Modell-YAML oder löscht die nicht vorhandenen Sensoren im Telemetrie-Menü.

Fallstricke

ELRS-WLAN-Overlay. Ein Empfänger ohne Verbindung öffnet nach rund 60 Sekunden einen eigenen WLAN-Zugangspunkt („ExpressLRS RX") mit einem kleinen Webinterface — dort prüft man etwa das Feld serial-protocol (für MAVLink muss es 7 sein). Beim Ändern des ELRS-Switch-Mode (Wide/Hybrid) muss der FC vorher stromlos sein, sonst antwortet das Modul mit „not while connected".

MAVLink-over-ELRS (der Rückstell-Parameter). Ab ELRS 3.5 kann derselbe 2,4-GHz-Link RC und MAVLink zusammen tragen, sodass eine Bodenstation kabellos mitfliegt. Das ist ein bewusster Umbau mit einem FC-Overlay — SERIAL2_PROTOCOL von 23 auf 2 (MAVLink2), RSSI_TYPE von 3 auf 5 (MAVLink RADIO_STATUS) und die SR2_*-Stream-Rates auf 1 (außer ADSB/PARAMS/RAW_CTRL bleiben 0) — plus zwei Schalter am Sender: Link Mode von Normal auf MAVLink und — der Schalter, der mich am längsten gekostet hat — Backpack → Telemetry von AUTO/ESPNOW auf WiFi. Erst dann leitet der Backpack MAVLink per UDP weiter, und die SSID bekommt ein Suffix.

SERIAL2_BAUD nicht auf 420 stellen. 460800 ist der Wert, den die Kette erwartet; ein abweichender Baud bricht den Link stumm. RC_PROTOCOLS bleibt auf 536 — ArduPilot zieht die RC-Kanäle aus dem MAVLink-Stream, solange der UART auf Protokoll 2 steht — und der Passthrough-Bit in RC_OPTIONS = 288 (256er-Bit) bleibt für die Sender-Telemetrie kompatibel. Der definierte Rückweg bei Problemen: SERIAL2_PROTOCOL zurück auf 23, RSSI_TYPE auf 3, alle SR2_* auf 0, dazu am Sender Link Mode Normal und Backpack-Telemetrie AUTO/ESPNOW.

2-Positions-Flugmodus-Workaround. ELRS sendet bei einem 3-Positions-Schalter im Wide-/Hybrid-Mode nur zwei Werte (~999 und ~2000); die Mittelstellung kommt nicht durch und trifft den eingestellten Flugmodus nie. Ausweg: nur FLTMODE1 und FLTMODE6 belegen.

FLTMODE_CH = 5     # Flight Mode auf Kanal 5
FLTMODE1   = 2     # Schalter oben  (PWM ~999):  AltHold
FLTMODE6   = 5     # Schalter unten (PWM ~2000): Loiter

Hintergrund ist die PWM-Zuordnung von ArduPilot: 0–1230 → FLTMODE1, 1231–1360 → FLTMODE2, 1361–1490 → FLTMODE3, 1491–1620 → FLTMODE4, 1621–1749 → FLTMODE5, 1750+ → FLTMODE6. Ein 3-Pos-Schalter sendet ~988/1500/2012 und träfe FLTMODE1/4/6; ELRS liefert nur ~999/~2000 → nur FLTMODE1 und FLTMODE6 werden je erreicht. Auch der Mode-Wechsel braucht danach einen FC-Reboot.

Troubleshooting in Kurzform. Sticks bewegen sich, Schalter nicht: Switch-Mode-Thema — prüfen, ob der Sender auf CH5 −100/0/+100 zeigt (MDL → Outputs), sonst Switch Mode wechseln (Wide ↔ Hybrid) und Power-Cycle, zuletzt der FLTMODE1/FLTMODE6-Workaround. RP3 blinkt schnell, Binding klappt nicht: Firmware-Mismatch, beide Seiten müssen dieselbe Major-Version haben. Gar kein RC: Kalibrierung, TELEM-Port, Protokoll/Baud auf SERIAL2 und Reboot prüfen. Keine Telemetrie: Sensoren neu entdecken, Warnung abschalten, RSSI_TYPE prüfen.

Lessons Learned

  • CRSF gehört an einen TELEM-Port, nicht an RC IN — und CTS/RTS bleiben frei. Beide Fehler sieht man nur im Calibration-Bild, nicht am Piepen.
  • Verifizierungspunkt ist Radio Calibration, nicht der Parameter-Dialog. Erst wenn Sticks und Schalter live ausschlagen, ist der Link fertig.
  • Der Dreifach-Power-Cycle bindet zuverlässiger als der Knopf am Empfänger.
  • ELRS-Switch-Mode nie am verbundenen FC umstellen — FC vorher stromlos.
  • Bei MAVLink-over-ELRS sind es drei Schalter, nicht einer: Overlay am FC, Link Mode am Sender, Backpack-Telemetrie auf WiFi. Der letzte war der teuerste.
  • SERIAL2_BAUD = 460 nie anfassen — ein „runderer" Wert wie 420 ist kein ArduPilot-Standard und tötet den Link ohne Fehlermeldung.

Checkliste

  • RP3 an TELEM2 (nicht RC IN), TX/RX gekreuzt, Pin 4+5 isoliert
  • Spannung aus dem TELEM-Port (5 V), Empfänger-LED leuchtet
  • EdgeTX: External RF = CRSF, Baud 400000, CH1-16, Internal RF aus
  • TX- und RX-Firmware gleiche Major-Version
  • Binding über Bind-Phrase oder Power-Cycle, LED auf Dauerlicht
  • SERIAL2_PROTOCOL=23, SERIAL2_BAUD=460, RC_PROTOCOLS=536, RSSI_TYPE=3, alter IBUS-Port deaktiviert, FC rebootet
  • Radio Calibration: Sticks und Schalter schlagen aus
  • Sensoren entdeckt (RxBt, Curr, Capa, Bat%, RQly)
  • Flugmodi auf FLTMODE1/FLTMODE6, beide Anschläge getestet
  • Bei MAVLink-Modus: Overlay + Link Mode + Backpack-Telemetrie gesetzt, Rollback-Parameter bereit

Hardware

Der Flugcontroller (Pixhawk 6C Mini) läuft hier nur als Gegenstelle mit — er steht schon am Frame und ist ohnehin nicht der Teil, den man für die Funkstrecke tauscht.