Arducopter 4.1.0 setup with ExpressLRS on Omnibus F4 NanoV6 FC

Having difficulty with first time setup of Arducopter. Been working on it for a few days now, reading through Ardupilot site, etc. Trying out different options to make it work. No joy so far. I’d appreciate any help/insight from those more experienced than I. I’m guessing I have an issue with Serial / UART settings based on my physical connections. Below are the issues I am having along with my current configuration. Thanks for any assistance offered.

Issues:

  1. Not seeing any green bars at all in Radio Calibration
  2. Not seeing any GPS info on Mission Planner Data Tab nor am I receiving any GPS telemetry in transmitter although the GPS module itself (Matek M8Q) has LEDs indicating GPS lock

Flight Controller (FC) = Airbot Omnibus F4 Nano V6 with STM32F405RG which has 1.024MB Flash

Arducopter firmware Stable 4.1.0 for Omnibus NanoV6 loaded onto FC

Transmitter Module is ExpressLRS 915Mhz TX (R9M Module) that does work with other ExpressLRS RC aircraft

Receiver is HappyModel ES900 RX flashed with firmware using ExpressLRS Configurator with same parameters as transmitter module

ES900 Receiver is bound to ExpressLRS Module

Receiver connectivity setup as follows

Receiver Gnd to FC Gnd
Receiver VCC to FC 5V pad (Receiver operating voltage = 5V
Receiver TX pad to FC RX6 UART
Receiver RX pad to FC TX6 UART

GPS connected to UART 1 RX & TX pads with SDA on RX3 pad and SCL on TX3 pad

The following parameters have been set

SERIAL3_PROTOCOL = 23 (RCIN)
SERIAL3_BAUDRATE = 115
SERIAL1_PROTOCOL = 5 (GPS)
RSSI_TYPE = 3 (Receiver Protocol)
RC_OPTIONS = 9
RC_PROTOCOLS = 9 (CRSF)
SERIAL3_BAUDRATE = 115

DEFAULT UART ORDER from ArduPilot site’s OmnibusNanoV6 Description Page is:
SERIAL0 = console = USB
SERIAL1 = Telemetry1 = USART1 (only available on original V6 version)
SERIAL2 = Telemetry2 = USART4 (RX only for ESC telemetry)
SERIAL3 = GPS1 = USART6
SERIAL4 = USART3 available in BRD_ALT_CONFIG = 1 (firmware 4.1 or later)
SERIAL5 = not assigned
SERIAL6 = not assigned

RC_PROTOCOLS is a bitmask so bit 9 = 512

According to the hwdef:

# USART1 = SERIAL1 on original V6 revision only
# not available on V6.x revisions due to altered inverter layout

Thanks @andyp1per ! I don’t understand what RC_PROTOCOLS is a bitmask so bit 9 = 512 means . I’m guessing you’re saying not to do that. the only reason why I set it to 9 is because of the ExpressLRS site states:
" Once you have set the parameter above, power-cycle the flight controller by disconnecting and reconnecting your battery and USB. Ardupilot should automatically run with ELRS, but if it fails, set the other parameter as below:
SERIALx_PROTOCOL = 23 (RCIN)
SERIALx_BAUDRATE = 115
RC_PROTOCOL = 9 (CRSF)
RSSI_TYPE = 3 (ReceiverProtocol)

Also, regarding your second comment on the hwdef UART #1 not available on V6.x revisions, the Omnibus F4 Nano V6 FC is the “original” V6 Nano and not a V6.x version. I believe (if I’m not mistaken) that the comment on the AP site pertains to the V6.x diagram below the statement.
However, there does seem to be some “issue” with the UART1 TX & Rx on this V6 Nano (on this board it has an SBUS pad that is the inverted pad, the TX1 and RX1 are separate pads from he SBUS pad). When I originally had the GPS connected to the RX6/TX6 pads (Serial 3) and the receiver connected to RX1/TX1 the GPS worked in Mission Planner, however, the receiver channels did not. So, I swapped the GPS and receiver pad connections (receiver on RX6/TX6 and GPS on RX1/TX1). That’s the current configuration and neither works in Mission Planner. I think somethings goin on with UART1 (RX1/TX1) that i am unable to use it for the ExpressLRS (CRSF protocol) receiver.

I’m new top AP so I really do not know what options to setup in “Full Parameter List” other than what I am reading on the AP Site and the ExpressLRS site. Just have a “gut feeling” I ought to be able to set a parameter for UART1 (Serial 1) for the receiver. I also have in the back of my mind that according to the ExpressLRS site, AP 4.1 (this latest version) is the first version that supports ExpressLRS. So, I’m wondering if there’s a “bug” in the first implementation.

Google bitmask or use mission planner to set the CRSF bit - you will see that the actual value turns out to be 512 rather than 9

1 Like