Top view

Orel 20

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

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

Orel 20 runs Sapog – a BSD-licensed open source multiplatform BLDC controller firmware originally developed by Zubax Robotics.


  • Propeller drives for light 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 without wires.
  • Optional RPM control loop (RPM governor).
  • Embedded self diagnostic routines and health status reporting.
  • Highly configurable.
  • Low noise and low current ripple.
  • 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

Questions about the firmware

I downloaded the firmware at GITHUB. Why BOOTLOAD can make make a success directly, but there are many errors and problems when making the firmware make? For example, now. It prompts me: zubax_chibios// *** USE_PROCESS_STACKSIZE is not defined. Stop. When I open, …

Stm32 chibios register documentation

Hello, where can we find a proper documentation on the stm32 register configuration under chibios HAL. Reading the code without a ref doc nor tutorial nor example code is quite cumbersome. Thanks…

CAN bus connection options

On Titan Elite’s website it is recommended to daisychain multiple orel 20’s together and directly connect them to the CAN port on the Pixhawk flight controller. On our aircraft, we are utilizing a Pixhawk 4 flight controller and a UAVcan databus. We would like to be able to directly connect the Or…

Why different signature can communication with the same uavcan gui tool?

dear Pavel Kirienko: image.png1202x756 181 KB in publisher tutorial all the data type signature is 64bit , in px4 pasog BootLoader all the data type signature is 16bit. they have the different data signature, Why can they communicate with GUI?both fine. i know that the data signature is Not t…

Orel20 CAN disconnection issue

Hello when connecting the babel to the orel20, applying the 127 local id node and starting the dynamic node allocation server. I could see my orel20 sometimes, but it disappears erratically. the second CAN1 port is connected to a 120ohm resistor. Thanks in advance for your …

Voltage control vs RPM control

Hi Just wanted to ask a quick question with regards to RPM Control on the Zubax Myxa; While running some tests we realised that, unlike what we thought initially was the case of it just being an RPM offset between RPM control and Voltage control for any given PWM input – infact its not a linear offs…

Orel-20 Backwards capability?

Hello, Does the Orel-20 have the capability of spinning in reverse (i.e backwards)? If so, is this done using a third party firmware? Thank you, Bernard…

ESC Ref design issue

Hi, We are trying to make a ref design from Orel ESC and have to use a different device (INA240) current sensing. This has a different gain (20V/V) and the sense resister is also different (0.0002ohm). Where is the firmware i have the option of tuning these values? regards Arun…

Building code on ubuntu16.04.3 problem

I have some problems while building code at ubuntu16.04.3 but it show me some massages please need some help I think my ARM GCC is 7.2 Compiling main.cpp cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ /home/skyyu/sapog/firmware/src/main.cpp:223:3…

Orel 20 with PX4 can only work after using GUI TOOLS

after connected and arm pixhawk , the moter didn‘t work. then i connect the babel and GUI TooL , run dynamic node id allocation server , the moter works. should i use dynamic node id allocation server in GUI TooL everytime?…