# 3. Flight Controller Reference

### 3.1 Pilot\_PX Board — Signal Availability

Several documentation errors and omissions have been identified in the Pilot\_PX peripherals page. The table below reflects confirmed hardware reality:

<table><thead><tr><th width="161.85693359375">Signal</th><th width="127.4285888671875">Status</th><th width="102.571044921875">Source</th><th width="351.571533203125">Notes</th></tr></thead><tbody><tr><td><strong>SBUS OUT</strong></td><td><mark style="color:orange;background-color:orange;"><strong>Not available</strong></mark></td><td>Pilot_PX</td><td>SBUS OUT pin shown in peripheral diagram is incorrect - diagram has an error</td></tr><tr><td><strong>SBUS IN</strong></td><td><mark style="color:orange;background-color:orange;"><strong>Not available</strong></mark></td><td>Pilot_PX</td><td>Only PPM peripheral is connected to the Pixhawk FMU on Pilot_PX</td></tr><tr><td><strong>PPM IN</strong></td><td><mark style="color:green;background-color:$success;"><strong>Available</strong></mark></td><td>SERIAL5 connector</td><td>Shared with the label 'PPM' on the adapter board</td></tr><tr><td><strong>SBUS-Servo OUT (ArduPilot)</strong></td><td><mark style="color:green;background-color:green;"><strong>Available</strong></mark></td><td>SERIAL5 connector</td><td>Exposed pin - ArduPilot only; configure SERIALX_PROTOCOL=15 for other serial ports</td></tr><tr><td><strong>FMU_DBG (JTAG)</strong></td><td><mark style="color:green;background-color:green;"><strong>Available</strong></mark></td><td>Pilot_PX board</td><td>Pinout in docs under Pilot_PX connectors - compatible standard Pixhawk JTAG tools</td></tr><tr><td><strong>I2S Audio</strong></td><td><mark style="color:orange;background-color:orange;"><strong>Not available</strong></mark></td><td>Adapter Default</td><td>Not routed to any connector on the default adapter board</td></tr></tbody></table>

***

### 3.2 PWM Output Access

A recurring source of confusion is how many PWM outputs are accessible and from which port.

<table><thead><tr><th width="221.427978515625">Source</th><th width="156.998779296875">Count</th><th width="365.5732421875">How to access</th></tr></thead><tbody><tr><td><strong>Cube MAIN outputs</strong></td><td>7</td><td><p>PWM1 connector on Adapter Default</p><p>(JST GH to JR adapter)</p></td></tr><tr><td><strong>Cube AUX outputs</strong></td><td>Not on Adapter Default</td><td>Available on B2B connector - requires custom adapter board or DCS2.VTOL board</td></tr><tr><td><strong>Secondary FMU PWM</strong></td><td>4</td><td>FMU_SEC connector on Pilot board - for secondary FMU only, not routed to Cube</td></tr><tr><td><strong>Orin GPIO (I2C expander)</strong></td><td>2 (GPIO_EXP4/5)</td><td>GPIO connector on Adapter Default - 3.3 V, not PWM-capable</td></tr></tbody></table>

{% hint style="info" %}
**Note:**

The DCS2.VTOL board (see docs.airvolute.com/autopilots/dcs2/.vtol-board) combines adapter and PDB functionality and exposes the full set of MAIN and AUX PWM outputs. It supports up to 14S battery input and is optimised for VTOL airframes. A new Adapter Default revision adding AUX support is also in development.
{% endhint %}

***

### 3.3 Serial / UART Port Reference

The following ports are physically accessible on the DCS2 Adapter Default board and can be configured in ArduPilot as telemetry, GPS, RCIN, or SBUS-Servo out:

<table><thead><tr><th width="124.14306640625">Connector</th><th width="148.5709228515625">ArduPilot Serial</th><th width="170.8570556640625">Default use</th><th width="294.71435546875">Notes</th></tr></thead><tbody><tr><td>SERIAL1</td><td>SERIAL1</td><td>Telemetry 1</td><td>Routed to Jetson — primary MAVLink endpoint</td></tr><tr><td>SERIAL5</td><td>SERIAL5</td><td>Telemetry 5 / SBUS</td><td>Contains UART + SBUS_OUT pin; SBUS-Servo out is ArduPilot-only</td></tr><tr><td>GPS1</td><td>SERIAL3</td><td>GPS</td><td>Standard JST GH GPS connector</td></tr><tr><td>GPS2</td><td>SERIAL4</td><td>GPS 2 / telemetry</td><td>Can be repurposed for telemetry if GPS2 is unused</td></tr><tr><td>ttyTHS0</td><td>-</td><td>Jetson↔Cube UART</td><td>Physical UART for mavlink-router; also accessible as ttyACM0 via USB</td></tr></tbody></table>

For PX4 / NuttX: consult the PX4 serial-port mapping for your specific FMU hardware version (e.g. CUAV Pixhawk V6X) at docs.px4.io to correlate SERIAL numbers with /dev/ttyS\* device nodes.

***

### 3.4 Secondary (Onboard) FMU

Every DCS2 production board (green boards) contains an onboard secondary FMU in addition to the Cube autopilot socket.

<table><thead><tr><th width="255.142578125">Property</th><th>Detail</th></tr></thead><tbody><tr><td><strong>IMU</strong></td><td>BMI088</td></tr><tr><td><strong>Barometer</strong></td><td>BMP390</td></tr><tr><td><strong>Default firmware</strong></td><td>ArduPilot 4.5.0 with Airvolute bootloader</td></tr><tr><td><strong>USB access</strong></td><td>Shared with Cube — switch via fmu_cube_usb_switch.py fmu</td></tr><tr><td><strong>Serial access</strong></td><td>SERIAL1 and SERIAL2 on the FMU_SEC connector</td></tr><tr><td><strong>Typical use</strong></td><td>Flies standalone on FPV-class Patron drones (no Cube); on Stribog drones it is present but idle</td></tr><tr><td><strong>Pre-production boards</strong></td><td>Blue boards — secondary FMU is empty (no firmware)</td></tr></tbody></table>

To switch the shared USB bus between Cube and secondary FMU:

```
# Switch to secondary FMU
python3 fmu_cube_usb_switch.py fmu
 
# Verify with lsusb — look for 'Generic Airvolute-DCS2'
lsusb
 
# Switch back to Cube
python3 fmu_cube_usb_switch.py cube
```

To flash firmware to the secondary FMU, connect via a GCS after switching USB, or use the ArduPilot bootloader uploader directly from Jetson:

```
python3 px_uploader.py --port /dev/ttyACM0 arducopter.apj
```

***

### 3.5 ARKV6X Flight Controller Setup

Users integrating the ARK Electronics FMUV6X in place of the Cube should follow this sequence:

1. Flash the DCS2 using dcs-deploy as normal
2. Install mavlink-router
3. Build PX4 for ARKV6X default config and upload:

```
python3 px_uploader.py --port /dev/ttyACM0 ark_fmu-v6x_default.px4
```

4. Configure mavlink-router with the ARKV6X endpoint (note: 115200 baud, not 921600):

```
[UartEndpoint cube]
Device = /dev/ttyACM0
Baud = 115200
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.airvolute.com/hidden-wip/discord-export/3.-flight-controller-reference.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
