ESC Firmware and Supported Protocols

Hello. (tldr at bottom)

Pretty new to drones and multi-rotor crafts in general. I am an engineer working on a DIY project for fun and personal skill development and had a few questions regarding ESC setup/capabilities with some of the current products out there.

  1. I’ve noticed that some ESCs running BLHeli_S firmware are able to auto-detect the communication protocol from the MCU (i.e. PWM, OneShot, DSHOT, etc.) and I was wondering if this is generally universal with all ESCs that run on BLHeli_S, or are there exceptions?

  2. Similar question for ESCs running BLHeli32. Does this firmware generally have auto-detection features for communication protocols?

  3. Lets say hypothetically I want to send my own motor control signals from my own MCU. Should I just stick with simple individual ESCs (i.e. Aikon SEFM 30A 2-6S) that I know can take standard PWM signals? Or is there any possibility I can hookup a more modern 4x1 ESC and route its connections to individual pins? Take the SpeedyBee 50A 4x1 ESC for example. This ESC has 8 connections (Vbat, Gnd, M1, M2, M3, M4, Current, Telemetry) which all connect to an FCU (generally the SpeedyBee F405). I assume that the Vbat and Gnd are simply routing power which I can connect to my MCU, and then M1-M4 I could hookup to some PWM outputs on the MCU (assuming the ESC can auto-detect this protocol as opposed to the DSHOT600 it normally runs), telemetry is not actually present on ESC so its useless and I assume current connection measures current so if I don’t care I can also avoid routing this as well. My main concern here is that the ESC is looking for some communication in SW to the standard FCUs out on the market so I don’t know if it will work by connecting it as I said. Looking for some input on this, would be much appreciated, THANKS

tldr: do all BLHeli_S/BLHeli32 ESCs support any input protocol (such as standard PWM)? Could I MacGyver a modern 4x1 ESC to use a custom built MCU?

BLHELI32 is the preferred option. It has everything. Some ESCs dont implement all features, like current monitoring via DSHOT, and will have a separate current sense wire
BLHELI_S is the cut down version to suit underpowered CPUs - avoid this if possible. It can work if you load the bluejay firmware but why bother??

The 4in1 ESCs work well and can save a lot of wiring mess.
You would only use the single ESCs now if there was some unavoidable physical limitation.
Never connect the Vbat wire to the flight controller unless the FC has an input specifically for unfiltered battery voltage. Conventional flight controllers need a regulated +5vdc supply. The small AIO flight controllers usually have the vbat input and their own regulator onboard.

DSHOT is the preferred protocol, and connecting up the Telem wire from the ESC to the flight controller gives you all the required data. Bi-directional DSHOT by itself just gives RPM but not any of the voltage or temperature data (yet). This can be combined with the Telem wire to get all avalaible data, but RPM at the higher update rate.
Bi-directional DSHOT should not be confused with reversible motors and props for 3D flying.
They all accept PWM as a minimum.

Hey Shawn. Thanks for the reply!

First off, I probably should have clarified more that I am working on a unique one-off project where I will incorporate a completely custom flight controller that runs off my own software. I will be hooking this up to some ESC obviously, so I am trying to determine which off-the-shelf ESC will be compatible with my custom flight controller.

I am not really concerned with what options are the most up-to-date in the multi-copter world if that makes sense. For instance, I could care less about running BLHeli_S or BLHeli32 as they will not be serving me any additional benefits really. I just need an ESC that can make the motors spin at a desired rate that I command through my own flight controller. I will not be using an off-the-shelf flight controller, I am not utilizing betaflight or any other top-of-the-line flight software that is out on the market currently. I am strictly trying to understand how “plug and play” ESCs are, so I can buy one and use it for my project. It does not matter too much to me really if I have to use ancient tech to get this to work, but if I can use a modern 4x1 ESC that would make my setup a lot cleaner like you said.

I very well understand that I need a regulated 5V to my custom flight controller and the capabilities of the DSHOT protocol on modern ESCs, but I really just need an ESC that will allow me to communicate with it from my own custom flight controller.

When I was looking into the SpeedyBee, I have a good idea of all the connections it wants from a typical off-the-shelf flight controller, but I can’t be 100% sure that it will work with my custom controller, so I was looking for input on whether someone has information about this. I want to know if I can just simply hookup some PWM pins from my flight controller and directly control the motors through the SpeedyBee, or if it’s more complicated than that. This partly ties into the topic of having PWM being compatible with ESC firmware (BLHeli_S/BLHeli32) which I believe you confirmed will work no matter what with this firmware? A.K.A if I send PWM signals to an ESC that is DSHOT ready with BLHeli firmware, it will always automatically recognize the standard PWM signals and use this protocol instead?


Yes, you can just send good old fashioned PWM and and they will work.
You just need to connect the M1, M2… motor inputs to your PWM outputs, and a common signal ground.

EDIT: some BLHELI_S ESCs may not accept PWM - more research needed.

If you’re not using Ardupilot or a supported flight controller, then probably RC Groups is the place to go

Any ESC, except for some special protocol types(Fettec, CAN) will auto detect PWM.

Thanks Shawn and Dave! Appreciate it. Saves me a bit of money so I don’t need to buy something only to find out it won’t work.

I still am not 100% sure if most ESCs are plug-and-play though. For instance, if I bought a 4x1 ESC (such as the SpeedyBee) and I gave it power and PWM signals on the 4 channels, is there any way to know if it will just work without any additional modifications? The only thing I can imagine being an issue might be some checks in the firmware for the ESC that aren’t recognizing a specific flight controller (such as the SpeedyBee F405), or don’t see “expected” connections for some of the other wires.

Not sure if this is outside the scope of this thread though. I will check out RC Groups as well, thanks for the recommendation.