X25 EVO Controller
X25 EVO is a brand-new high-performance industrial-grade controller from CUAV. Compared with traditional controllers, X25 EVO has achieved breakthrough upgrades and optimization in aspects such as power rails, sensors, shock absorption systems, temperature compensation systems, hardware reliability and device compatibility, significantly improving its performance and stability in complex environments and meeting the application needs of various unmanned system. The X25 EVO incorporates numerous optimizations and innovations for professional, large-scale industrial unmanned systems and is fully compatible with ArduPilot/PX4 firmware.It can be widely used in unmanned systems, including multi-rotor, elevator, fixed-wing, VTOL fixed-wing, unmanned vehicles, unmanned vessels, and unmanned underwater vehicles.
Features
- Disruptive 10V~18V Wide-Range Power Supply Architecture, Delivering Higher Current to Accessories.
- New industrial IMU sensor matrix (three sets of IMU, barometer + industrial-grade electronic compass).
- Select TDK industrial-grade sensors with high precision, high shock resistance, large range, low noise and slight temperature drift.
- IIM series sensors are equipped with a high-precision constant temperature active external clock to reduce ODR errors.
- Dual Temperature Compensation System | Redefining the standard for sensor performance accuracy.
- Powerful performance | High-performance H7 processor.
- The fourth generation tilted symmetrical damping matrix shock absorption system + external fixed ear shock absorption.
- CAN bus + 100M Ethernet | Supports ESC/motor data transmission.
- Standard PMU 2 Lite high-voltage and high-current (70V, 220A) power detector.
- Supports 3.3V/5V PWM level switching.
- Status visualization | Multi-function RGB full-color indicator light.
- Multi-model application | Compatible with ArduPilot and PX4 firmware.
Hardware parameters
| ITEM | Specification |
|---|---|
| Processor | STM32H7 Arm® Cortex®-M7,480MHz |
| Version | X25 EVO |
| Acce&Gyro | IIM-42653 / IIM42652 / IIM42653 |
| Compass | RM3100 |
| Barometer | TDK IPC20100 / Bosch BMP581 |
| PWM OUT | 16 |
| Power IN (CAN) | 2(model:5055670871-5055650801) |
| GPS Ports | 2 |
| TELEM Ports | 2 |
| UART4 Ports | 1 |
| RCIN | 1(PPM/SBUS/DSM and other protocols) |
| DEBUG(DSU) | 1 |
| Ethernet (ETH) | 1 |
| CAN Bus | CAN1×3 CAN2×2 |
| SPI6 Expansion | 1 |
| ADC 3V3 | 1 |
| ADC 6V6 | 1 |
| USB Ports | 1(Type-C) |
| I2C Ports | 3 |
| RSSI Ports | 1 |
| Power Module | PMU 2 Lite |
| Input Voltage | USB:4.75V ~ 5.25V PMU 2 Lite:20V ~ 70V Power:10V ~ 18V |
| Operating Temperature | -20 ℃ ~ +85°C |
| Size | 76.5 × 45.45 × 32.2 mm |
| Weight | 110g |
Size
Pinouts
PX4 Firmware compilation command
make cuav_x25-evo_default upload
ArduPilot Firmware compilation command
ArduPilot Firmware compilation command
Quick Wiring
This quick wiring guide explains how to power the X25 EVO intelligent controller and connect its most critical peripheral devices.
Hardware Connection Overview
The figure below shows the connections for the most important peripherals of the X25 EVO.
| Main Ports | Function & Purpose |
|---|---|
| POWER C1/C2 | Connect the PMU2 Lite to this port; this port is used for connecting the DroneCAN power module. |
| M1~M16 | PWM signal output ports, usable for controlling motors or servos; support 3.3V/5V PWM configuration. |
| RC IN | Connect remote controller receivers with one-way protocols (e.g., SBUS/DSM/PPM). Note: ELRS/CRSF receivers should be connected to any serial port, not RC IN. |
| RSSI | For connecting signal strength feedback modules. |
| GPS&SAFETY | Connect Neo-series GPS or C-RTK-series RTK; this port includes interfaces for GPS, safety switch, and buzzer. |
| GPS2 | Usable for connecting additional GPS/RTK modules. |
| DEBUG (DSU) | For FMU chip debugging and reading debug device information; with ArduPilot firmware, it can be configured for other serial port functions. |
| ADC3V3 | For analog level signal detection; the maximum detectable level signal is 3.3V. |
| ADC6V6 | For analog level signal detection; the maximum detectable level signal is 6.6V. |
| TF CARD | Insert an SD card here to enable log storage functionality. |
| ETH | Ethernet port, usable for connecting Ethernet devices such as companion computers. |
| I2C1/2/3 | Connect external I2C devices (e.g., external compasses) for communication between the controller and I2C devices. |
| TELEM1/TELEM2 | Connect telemetry modules (for data transmission) to enable MAVLINK data interaction. |
| CAN1/2 | For communication between the controller and DroneCAN devices (e.g., connecting NEO4 SE GPS). |
| TYPE C | USB port of the controller, usable for connecting to the ground station, flashing firmware, and other operations. |
| SPI6 | SPI port for external expansion; generally not used. |
GPS
We recommend using a CAN GPS/RTK (such as Neo 4SE); simply connect it to the CAN 1 or CAN 2 port. You can also use a standard GPS/RTK module by connecting it to the GPS&SAFETY port.Most commonly used GPS modules today integrate GPS, compass, safety switch, buzzer, and LED status light. Mount the GPS module on a bracket, keep it away from other electronic devices, and align it with the aircraft’s forward direction (the arrow on the NEO GPS should match the arrow on the flight controller).
Safety Switch & Buzzer
Note
When using a NEO-series GPS, no additional safety switch or buzzer is required. The safety switch acts as a motor safety lock—long-press the white button on the GPS to arm or disarm the motor.For PX4 firmware: The safety switch is disabled by default.For ArduPilot firmware: Disable the safety switch by setting the BRD_SAFETY_DEFLT parameter to 0.
Remote Controller
Connection methods vary by remote controller and receiver type:
- Connect TELEM1/TELEM2 to the UART0 port of the H16 remote controller, and link the H16’s SBUS pin to the RC IN port.
SBUS/DSM/PPM Protocol Receivers
- Use wires to connect the receiver to the RC in port at the rear of the controller.
ELRS/CRSF Receivers
Power module
The X25 EVO comes standard with the PMU2 Lite power module, which supports 20–70V input and can measure a maximum current of 220A. It can be directly connected to the Power C1/C2 port of the X25 EVO and is plug-and-play (no configuration required).
Telemetry
A telemetry system allows you to communicate with the unmanned system via ground station software, enabling you to monitor and control the UAV’s status during flight. Connect the on-board unit of the telemetry system to the TELEM1 or TELEM2 port.
SD Card
The SD card is pre-installed at the factory—no additional installation is needed on your part
Motors
Connect motors/servo systems to the M1~M16 ports in the order specified for your aircraft in the airframe reference document.
Servo Power Supply
The X25 EVO does not supply power to servos. If you need to power servos:
- Connect a BEC to the positive and negative terminals of any column among M1~M16 (the positive and negative terminals of M1~M16 are interconnected).
- Then connect the servos to the same column.
ArduPilot Firmware User Guide
Loading Firmware
The X25 EVO® controller supports ArduPilot. The following mainly explains how to load the ArduPilot firmware.
Tip
The X25 EVO supports firmware versions 4.6.3 and above.
Online Firmware Flashing:
- Run the LGC Ground Station
- Click the LGC icon > Vehicle Settings > Firmware.
- Connect the device to your computer via USB.
- Select the type of firmware to flash.
Load local firmware:
Download the firmware to your local device:
Then follow these steps to flash:
- In the firmware flashing settings, check Advanced Settings.
- Select Custom Firmware as the version.
- In the pop-up window, choose the downloaded firmware file.
GPS/RTK Configuration
Tip
The LGC Ground Station supports graphical configuration of GPS/RTK modules. Click the corresponding GPS/RTK icon and follow the system prompts for automatic configuration. You can configure the GPS position offset via the module position slider, and configure GPS2 via the “Positioning Module 2” slider.
Power Module
The X25 EVO comes standard with the PMU2 Lite power module, which supports 20–70V input and can measure a maximum current of 220A. It can be directly connected to the Power C1/C2 port of the X25 EVO.
Airspeed Sensor Configuration
For airframes that require an airspeed sensor, such as Plane/vertical and VTOL, you can configure it in LGC > Vehicle Settings > Sensors > Airspeed Sensor.
Tip
To zero/calibrate the airspeed: Go to Flight View > Real-Time Properties > Airspeed Calibration.
Accelerometer/Gyroscope/Compass Calibration
Tip
Calibrate the accelerometer, gyroscope, and compass on the Sensor Calibration page. Follow the LGC guide to complete the process.
UART Mapping
SERIAL0 -> USB SERIAL1 -> UART7 (TELEM1) SERIAL2 -> UART5 (TELEM2) SERIAL3 -> USART1 (GPS1&SAFETY) SERIAL4 -> USART2 (GPS2) SERIAL5 -> UART4 (None, labelled UART4) SERIAL6 -> USART3 (None, labelled FMU DEBUG) SERIAL7 -> OTG2 (SLCAN)
| SERIAL | Mark |
|---|---|
| SERIAL0 | USB |
| SERIAL1 | UART7 (TELEM1) |
| SERIAL2 | UART5 (TELEM2) |
| SERIAL3 | USART1 (GPS1&SAFETY) |
| SERIAL4 | USART2 (GPS2) |
| SERIAL5 | UART4 |
| SERIAL6 | USART3 (DEBUG/DSU) |
| SERIAL7 | OTG2 (SLCAN) |
Note
The TELEM1 and TELEM2 ports support flow control (RTS/CTS); other UARTs do not have RTS/CTS pins. All UARTs are equipped with fully functional DMA.
RC Input
Hardware Connection Diagram
The RC IN port supports all one-way RC protocols (SBUS/PPM/DSM).
DSM/PPM/SBUS Receivers
Use Dupont wires to connect the receiver to the RC IN port—no additional parameter settings are required.
Receivers with Two-Way Protocols (e.g., CRSF/ELRS)
For receivers with two-way telemetry protocols (such as CRSF/ELRS), connect them to a UART port. The following is a setup tutorial (taking SERIAL2 (UART5/TELEM2) for two-way RC as an example):
ELRS Receivers
Connect the receiver to the TELEM2 port and set the following parameters:
- SERIAL2_PROTOCOL=23;
- SERIAL2_OPTIONS=0;
- RSSI_TYPE=3;
- RC_OPTIONS=8192 (Use 420kbaud for ELRS protocol);
- Save the parameters and restart the controller.
CRSF Receivers
- SERIAL2_PROTOCOL=23;
- SERIAL2_OPTIONS=0;
- RSSI_TYPE=3;
FPort Receivers
Tip
Any UART can be used to connect an RC receiver in ArduPilot, and it is compatible with all protocols except PPM. For details, refer to Radio Control Systems.
PWM Output
The X25 EVO supports 16 PWM output channels, which are divided into 5 groups. Each group uses a different timer—only one output rate or protocol can be used for all channels in the same group.
PWM Output Grouping:
- PWM 1–4: Group 1 (TIM5)
- PWM 5–8: Group 2 (TIM4)
- PWM 9–11: Group 3 (TIM1)
- PWM 12–14: Group 4 (TIM8)
- PWM 15–16: Group 5 (TIM12)
Note
Channels in the same group must use the same output rate. If any channel in a group uses DShot, all channels in that group must use DShot. Channels 15 and 16 only support PWM—they do not support voltage levels or DShot.
[!TiP] All channels support switching between 3.3V/5V PWM. For long cable runs or high-power systems, 5V PWM is recommended. Use the BRD_PWM_VOLT_SEL parameter to set the PWM voltage level.
GPIO
All servo outputs can be used as GPIOs (for relays, camera shutters, RPM, etc.). To use a servo output as a GPIO, set SERVOx_FUNCTION=-1 (where x is the pin number).
GPIO Pin Mapping:
| Pin name | SERVO SN | GPIO number |
|---|---|---|
| M1 | SERVO1 | 50 |
| M2 | SERVO2 | 51 |
| M3 | SERVO3 | 52 |
| M4 | SERVO4 | 53 |
| M5 | SERVO5 | 54 |
| M6 | SERVO6 | 55 |
| M7 | SERVO7 | 56 |
| M8 | SERVO8 | 57 |
| M9 | SERVO9 | 58 |
| M10 | SERVO10 | 59 |
| M11 | SERVO11 | 60 |
| M12 | SERVO12 | 61 |
| M13 | SERVO13 | 62 |
| M14 | SERVO14 | 63 |
| M15 | SERVO15 | 64 |
| M16 | SERVO16 | 65 |
Example: To use M14 as a relay, set Relay_pin=63.
Analog Input
The X25 EVO has three analog input ports: ADC Pin13 → ADC 3.3V ADC Pin12 → ADC 6.6V ADC Pin10 → RSSI
RSSI
The X25 EVO has an RSSI (voltage signal) telemetry strength monitoring port. Enable it by setting the following parameters:
- ‘RSSI_TYPE’ = 1
- ‘RSSI_ANA_PIN’ = 10
Compass/Magnetometer
The X25 EVO has a built-in RM3100 compass. However, due to potential interference, this board is usually used with an external I2C compass (as part of a GPS/compass combination). Priority should be given to using the external compass (e.g., the compass on a GPS) as the primary compass.
Ethernet Port Configuration
The X25 EVO has an ETH port. Configure it by following the ArduPilot Ethernet Configuration Tutorial.
PX4 Firmware Guide
This chapter describes the points to be aware of when running PX4 firmware on the X25 EVO. The PX4 docs has the complete PX4 guide.
Loading firmware
There are two methods for firmware flashing: online flashing and local flashing. You can choose based on your needs.
Write firmware online:
- Download and run the LGC Ground Station, then click the LGC icon.
- Navigate to Drone Settings → Firmware, and connect the flight controller to the computer via USB.
- Select the required “PX4 Pro vxxxx” version and click Confirm.
- After the loading is complete, if no operation is performed, the flight controller will connect automatically after a dozen seconds.
Local Flashing (Custom Firmware)
- Download the X25 EVO Local Firmware to your local computer.
- Enter the firmware flashing settings, check Advanced Settings, and select the version as Custom Firmware.
- In the pop-up window, select the downloaded local firmware file to complete the flashing.
Serial Mapping
| UART | Device | Port |
|---|---|---|
| USART1 | /dev/ttyS0 | GPS1 |
| USART2 | /dev/ttyS1 | GPS2 |
| USART3 | /dev/ttyS2 | Debug Console |
| UART4 | /dev/ttyS3 | UART4 |
| UART5 | /dev/ttyS4 | TELEM2 |
| USART6 | /dev/ttyS5 | RC |
| UART7 | /dev/ttyS6 | TELEM1 |
Power Module Settings
The X25 EVO comes standard with a PMU2 Lite power module, which supports a 20-70V input and a maximum current of 220A. It can be directly connected to the X25 EVO’s Power C1/C2 ports. Once connected, power on the controller without configuring any parameters.
If you modify its settings, you need to set the following parameters and restart the controller after writing.
- Set the
UAVCAN_ENABLEparameter to Sensors Automatic config. - Set the
UAVCAN_SUB_BATparameter to Enabled.
Note
Analog power modules are not recommended due to poor accuracy and large temperature drift. It is recommended to use CAN power modules such as PMU2 Lite (with factory calibration and temperature compensation) or CAN smart batteries.
Rated Voltage
The X25 EVO supports triple power redundancy. Pay attention to the voltage range of each interface.
| Power Rail | Type | Voltage Range |
|---|---|---|
| POWER C1 | DroneCAN/UAVCAN Battery Interface | 10V – 18V |
| POWER C2 | DroneCAN/UAVCAN Battery Interface | 10V – 18V |
| USB | USB Input | 4.75V – 5.25V |
Tip
Unlike other controllers, the X25 EVO’s POWER C1/C2 ports do not support 5V input, only 10V-18V voltage input. For the default package, the PMU 2lite converts the 20-70V voltage to 15V to power the X25 EVO.
Ethernet Configuration
The X25 EVO supports LAN connection via Ethernet. Devices in the LAN must be on the same IP network (same subnet) to ensure each device has a unique IP address and can communicate with other devices. By default, Ethernet uses DHCP for automatic IP assignment; if DHCP fails, you need to set the IP manually.
Setting the IP Address
- Connect the controller to the computer using a USB cable.
- Open QGroundControl via the MAVLink Console → Analyze Tools.
- Enter the following commands in the MAVLink Console (to write values to the configuration file):
echo DEVICE=eth0 > /fs/microsd/net.cfg
echo BOOTPROTO=fallback >> /fs/microsd/net.cfg
echo IPADDR=10.41.10.2 >> /fs/microsd/net.cfg
echo NETMASK=255.255.255.0 >>/fs/microsd/net.cfg
echo ROUTER=10.41.10.254 >>/fs/microsd/net.cfg
echo DNS=10.41.10.254 >>/fs/microsd/net.cfg
- After setting the network configuration, disconnect the USB cable and restart the controller.
- After the setup is complete, the configuration information will be saved in the SD card directory
/fs/microsd/net.cfg name=value as follows:
DEVICE=eth0
BOOTPROTO=fallback
IPADDR=10.41.10.2
NETMASK=255.255.255.0
ROUTER=10.41.10.254
DNS=10.41.10.254
Where the values are:
DEVICE: Interface name. Default is .eth0BOOTPROTO: Protocol for getting PX4 IP address. Valid values for proto are: , , (use DHCP but fall back to static address after time, if that fails)dhcp、static、fallbackIPADDR: Static IP address (used if BOOTPROTO is orstaticfallback)NETMASK: Network maskROUTER: The address of the default route.DNS: The address of the DNS server.
Network Connectivity Test
- Open the Windows Command Prompt.
- Enter the command: ping 10.41.10.2
Tip
A response with network latency data indicates that communication is established. A “request timed out” message may mean the IP address is incorrect or communication has failed. For more details, refer to PX4 Ethernet Setup.
Connecting to GCS
Run the LGC Ground Station software. Configure the Ethernet port to transmit MAVLink data.
| Parameters | numerical values | GCS display | description |
|---|---|---|---|
| MAV_2_CONFIG | 1000 | Ethernet | Configure MAVLink to transmit via Ethernet |
| MAV_2_BROADCAST | 1 | Always broadcast | Broadcast messages continuously |
| MAV_2_MODE | 0 | Normal | Send the “normal” set of MAVLink messages (i.e., the GCS set) |
| MAV_2_RADIO_CTL | 0 | Disabled | Disable software restrictions on MAVLink traffic |
| MAV_2_RATE | 100000 | 100000B/s | Maximum transmission rate |
| MAV_2_REMOTE_PRT | 14550 | 14550 | MAVLink remote port 14550 (for GCS) |
| MAV_2_UDP_PRT | 14550 | 14550 | MAVLink remote port 14550 (for GCS) |
- Create a new network connection: Go to Application Settings → Commlinks → Add Connection. Set the connection name, select UDP as the connection type, enter the controller’s IP address and port number (14550), then click OK to confirm the creation.
- Create a new network connection (Application Settings > Commlinks > Add Connection > Set Connection Name, Connection Type to UDP, Port Number to 14550, IP Address to Controller IP, Click OK to confirm creation).
- Once the connection is established, select the link to begin communication.
Firmware Compilation
Note
Most users do not need to compile firmware; they can directly flash firmware online via LGC/QGroundControl.
Compilation Command
make cuav_x25-evo_default
Debug Port
The PX4 System Console and SWD run on the FMU Debug port. They can be used with the C-ADB Debug Adapter for debugging configuration.
| Pin | Signal | Volt |
|---|---|---|
| 1 (red) | 5V+ | +5V |
| 2 (blk) | DEBUG TX (OUT) | +3.3V |
| 3 (blk) | DEBUG RX (IN) | +3.3V |
| 4 (blk) | FMU_SWDIO | +3.3V |
| 5 (blk) | FMU_SWCLK | +3.3V |
| 6 (blk) | GND | GND |
Safety Switch & Buzzer
Development Guide
Note
CUAV does not provide technical support for secondary development of firmware or software. For related questions, please read the relevant guides carefully.















Leave a comment
You must be logged in to post a comment.