Top view

Orel 20

Low-cost BLDC motor controller for light unmanned aircraft and watercraft.

Orel 20 is an advanced controller of sensorless BLDC motors designed for use in cost sensitive applications. Its primary application domains include propulsion systems of electric unmanned aircraft and watercraft.

Orel 20 runs Sapog – an open source multiplatform BLDC controller firmware developed by Zubax Robotics.


  • Propeller drives for unmanned aerial vehicles.
  • Pump and propeller drives for unmanned watercraft.


  • Excellent dynamic characteristics.
  • Regenerative braking and active freewheeling.
  • Continuous power output up to 350 W.
  • Extremely lightweight, only 10 g.
  • Optional RPM control loop (RPM governor).
  • Embedded self diagnostic routines and health status reporting.
  • Highly configurable.
  • Low noise and low current ripple due to low ESR embedded filtering capacitors and high frequency PWM.
  • Supported interfaces:
    • CAN (UAVCAN), with optional dual redundancy.
    • UART.
    • RCPWM (analog PWM interface widely used in robotics).
  • High quality assurance:
    • Every manufactured unit undergoes a rigorous testing procedure. The testing log for each produced unit is available on the web.
    • Protection against unlicensed (counterfeit) production by means of a digital signature installed on every manufactured unit.
  • Open source firmware – Sapog (3-clause BSD license).

Related announcements and discussions

How to Enable Orel 20 PWM Control

I’m trying to get an Orel 20 working with PWM control from a motor thrust test stand. I soldered on the PWM connections to the board holes described in the datasheet, but I’m unable to command the motor controller. When I power it on, the controller does a self check and reports a green status. How…

Comparison to DSHOT control?

I’d be curious if we could ever get to this type of buttery smooth control over CAN with the latest firmware , but more importantly just what type of parameters I’d need to tweak, to get to this point. I have been to a couple drone events, where I literally walked up to the operator afterwards and a…

Sapog v2.0 release announcement

Hi everyone, Sapog v2.0 has been released. Abridged change log is provided here; please refer to the release page at for the complete change log. Completely new, much more reliable spin up algorithm Significantly more reliable operation during rapid acc…

Configuring Orel for particular motor

Greetings Pavel! So here is the thing, I would like to use the Orel ESC (or shall I say, Sapog, because I assume Orel is hardware, Sapog is software, right? Btw, very curious, does Sapog name have something to do with russian word sapog, as in shoe? ) with my custom made motor to fly a copter. I'm …

Calcuation of UAVCAN esc_setpoint

Hi Pavel, Can you tell me how esc_setpoint is calculated? It looks like a percentage. Is it just esc_setpoint_raw divided by some maximum value? What is the maximum value? Is it a constant? Thanks!…

Mapping Joystick/RC throttle to motor current

Hi Pavel, I am using a Logitech F310 joystick to control 4 Zubax Orel 20's via Pixhawk. I have noticed in my particular application that full throttle provides much more thrust than I need (the quad would take off like a rocket). Also, the joystick doesn't give fine control of throttle... What I…

Configuring Orel with Pixhawk and QGroundControl

Hi Pavel, I'm trying to Fly a DJI F450 quadrotor with a Pixhawk and 4 Zubax Orel 20 ESC's connected via UAVCAN. I'm using QGroundControl. Here is what I did: Daisy chain 4 Zubax Orel's to the Pixhawk CAN port, and connect the 4th Orel to a terminated Babel board. Open UAVCAN GUI Tool and turn on…

Control of 4 Orel boards with Babel: UAVCAN Node Setup

Hi Pavel, I have 4 Orel 20 boards connected to 4 motors. The first board is connected to a pixhawk (which is not powered on) and then daisy chained through boards 2 and 3 to board 4. Board 4 is connected to a Babel and terminated. (All of this is on CAN1). In UAV GUI Tool, I have the Babel Node ID…

Spin up of Orel with Babel

Hello, I've connected to the Orel with the Babel board and I'd like to calibrate it. I am using UAVCAN GUI Tool to interface with the Babel board. The motor I'm using is a DJI 2312 E (800 kV) . I believe the default number of poles of 14 is correct. My goal is to be able to use "RPMCommand" to spin…

Straight-up can nistead of uavcan on Orel 20?

Hello, Can I connect the Orel 20 to a standard 2-wire canbus? Can i send and receive standard can messages instead of using uavcan? Is there documentation on the exact contents of these standard can messages? Thanks, Vic…