Hi everyone,3689698321?profile=original

A part of the PX4 team has been working on an open source ESC since late 2013. The objectives we had in mind were roughly as follows:

  • BSD licensed codebase.
  • CAN bus interface (using UAVCAN as a high level protocol), with specific sub-goals:
    • low latency;
    • ESC status monitoring, at least health, temperature and RPM;
    • automatic and transparent for the user firmware upgrades.
  • Better alternative to the popular RCPWM BLDC controllers in terms of reliability and response characteristics.

The project was first known as PX4ESC, later renamed into Sapog for reasons of clarity. After about two and half years of development and experimenting, the first, for-developers-only release was announced at the ELC 2016 (slides here). Now, a few months after that, we're announcing that the project is finally ready for public release, and that the first ESC based on this project - Zubax Orel 20 - is now available from Titan Elite, Inc.

Zubax Orel 20, pictured on the right, is rated for supply voltage 9~18 V (3~4S LiPo) and continuous motor currents up to 20 A. More info can be gathered from the documentation page at the Zubax Docs website.

We welcome all companies that specialize in electric drive systems for UAV to consider extending their product portfolio with UAVCAN enabled solutions. In order to encourage this move, we're planning to release the reference hardware sources under a permissive Creative Commons license.

It should be emphasized that all of the features of Sapog are exposed via UAVCAN, an open and royalty-free protocol standard. We encourage all vendors of UAV avionics to support it, since relying on a common and open ecosystem is beneficial for everyone. For ease of migration we're providing MIT-licensed libraries in C++, C, and Python. Here we have a small collection of demo scripts that demonstrate how to access the capabilities of Sapog, or any other UAVCAN-interfaced ESC, using plain Python from a regular desktop computer: https://docs.zubax.com/sapog/direct_control_via_uavcan.

More information:

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • Developer
    Sapog does not run on ESC32 hardware.
  • will this code run on ESC32? i will try to get the answer myself. if it runs good, i will try do a 14S version for my heli if possible for me, and a specific model for maxon sticks for the swash plate.

  • If a company is going to develop a higher voltage hardware version, may as well go to 8S as there are a few (namely my plane) that operate 8S for the increased efficiency.

  • It is true that RCPWM input is supported. There also a closed loop RPM controller that has been used successfully with a constant rate variable pitch drive.

    Regarding the motor parameters - Sapog implements a six step BLDC commutation logic; relevant parameters are documented in this section.

  • @JAB you are correct. 20A continuous covers a lot of applications but only at 6S or higher as you say. 4S is really a hobby grade rating but there really are very few hobbysists that will or should shell out $316 for 4 ESCs. It was an odd rating to launch with. 

  • 100KM


    In looking through the code on Firmware on GitHub I am not finding a place where I can adjust the Field Oriented Control(FOC) for different motor parameters.    Can you point out where to these parameters are?

    Sapog - advanced multiplatform ESC firmware. Contribute to PX4/sapog development by creating an account on GitHub.
  • Developer

    20A continuous (100A peak) is more then enough for most applications including heavy lifters. If your need more then 20A continuous per motor (160A total for an octo) just to fly your should seriously look for a more efficient setup.

    But the 4S limit is a deal breaker. 6S is pretty much the standard for larger 15" propeller setups, especially heavy lifters. Using 6S is also why you should not need more then 20A (6S * 20A = ~450W per motor). And using a conservative 200W/kg for lift, that translated to 18kg max lift for a octo setup.

    Another thing to consider is that for most propellers, especially large ones they do not really benefit from improved controller latency. Simply because physics dictate how fast they can change speed. And for FPV racers spinning small propellers that could possibly take advantage of the latency, the price range does not fit. So ESC telemetry is the main selling point here. Which granted is an important one.

  • Sorry, I didn't notice it has PWM control as well.

    And certainly if you can simply use PWM as indicator and program motor response curve separately that is a worthwhile capability.

    What would be even better is true feedback control like bigger brushless motors using Hall devices.

    Unfortunately RC type brushless motors that do that are few and far between. - Like - Zero.

    Best Regards,


  • 100KM

    I just noticed that these ESCs have a PPM input and can be configured to run off the standard PPM interface.    No health feedback unless the UAVCAN interface is used though.

    This ESC might be have an advantage for racing because it has PID control of prop speed.   This ESC controls the motor speed in response to the command not just the applied PWM duty cycle.

  • I like where you are going with this. I like the health feedback feature.
This reply was deleted.