Mikrokopter UAV are very common in Germany. They use their own Brushless ESCs, controlled with i2c by their own Flightcontrol.

From now on, it is easy possible, to convert a Mikrokopter UAV into a fully featured ArduCopter with a Pixhawk or PX4 only by replacing the FlightControl&NaviControl.

The i2c bus from the BL-Ctrl's have to be connected to the external i2c bus of Pixhawk or PX4.
Then follow these steps to turn on support for them:

Re-enabling the Mikrokopter I2C ESC Support for FMUv1 and FMUv2 (Pixhawk).
Mikrokopter ESCs have to be connected I2C Bus on Pixhawk/FMU.

Arducopter Mode:
To enable mkblctrl startup add a /fs/microsd/APM/mkblctrl file
In this configuration the ESCs must be ordered in the same order as the ArduCopter is numbering them.
In this Mode all Frametypes of ArduCopter are supported.

Mikrokopter Mode:
To enable Mikrokopter native Frame Addressing (Order) support:
For X Type Frame add:

For + Type Frame add:

With Mikrokopter Frame Addressing, it is very easy to convert a Mikrokopter to ArduCopter. Just replacing
the Flight-CTRL against a Pixhawk, and your are done after initial Setup.

In Mikrokopter Mode there are only X and + Type Quadro, Hexa and Octo Frames Supported.
In Mission Planner the right Frame have to be set.

There can be only one startup File on the SDCard (mkblctrl, mkblctrl_x, mkblctrl_+)

I am using my PX4/Pixhawk nearly one year with ArduCopter and PX4-Flightstack without any problems. It is really working rock solid.




E-mail me when people leave their comments –

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

Join diydrones


  • I do exactly the stuff you explain before, but I still cannot move the propellers. My pixhawk can arm the motor (green fixed light on the Pixhawk), but the motors don't spin (red light when I do the arming procedure on the RC)

    In your explanation, what about "Re-enabling the Mikrokopter I2C ESC Support for FMUv1 and FMUv2 (Pixhawk)" ? It's only necessary to copy the firmware in a blank file, rename it, and put it in the APM folder without any compilation? I think I can't arm the motors because the pixhawk is still thinking to control them with the classic mode with PWMs, instead of the I2C bus. If someone has some experience, it's much appreciated !!

  • Hi Marco,

    does the PX4 support only sending BLDC setpoint data to the ESCs via I2C or is there a support for reading back the ESC internal Telemetry data like ESC-Temp and ESC-current too?

    This would be great because there would be no need for an external power sensor for measuring voltage and current?

  • Was anyone else able to actually use the mkblctrl driver? I tried different things, but I just can't get it to work.

    mkblctrl -t lets MK_motor 3 and then 1 / PX_motor 1 and then 3 spin for a few secs. The driver is able to detect all the motors, show their temperature and such, but never drives any other motors other than those two.

    I also can't use any i2c motors outside the mkblctrl -t application at all.

  • Andre, Interesting, thanks for the link.  Nope, ditching wasn't because of the ESCs.  I've always had good luck with Mikrokopter, and I did have 5 good flights before the odd behavior.  PWM would require a lot more wiring, and if I can, I'd love to try to keep the wiring to a minimum.

  • @David  - while it does not sound like you ditching was ESC related, maybe the solution for reliable operation is to flash BL-CTRL'escs with SimonK  - and use PWM ?  The code existed for some time now https://github.com/sim-/tgy/blob/master/mkblctrl1.inc

    tgy -- Open Source Firmware for ATmega-based Brushless ESCs - sim-/tgy
  • Flew the Pixhawk with the Mikrokopter ESCs yesterday (6/26).  Aside from some tuning, it was working as expected.

    I tried to loiter around a point (5m radius, indefinite time), and while it did perform that maneuver, I couldn't get it out of the loiter.  It maintained it spin, and I had little effect on it's behavior.  Ultimately, I had to force it to the ground (at least I had throttle control), resulting in broken parts.

    I have to pull the SD card and check the logs to see if I notice anything odd.

  • Andre, That's what I thought you were talking about, just wanted to make sure.  Nice history lesson.  Likewise for me, I've never had any problems.

    Marco, Just throwing this out there, is there anyone else who has the MK stuff working with the PX4FMU?  Both the OP and myself are using Pixhawk hardware.  I was able to do a spin-up test, and everything seemed to work.  I was able to get light on the skids and tilt the vehicle in the desired directions.

    I should be able to do a flight test this week.

  • @David  , you have the http://wiki.mikrokopter.de/en/BL-Ctrl_V1.2  and http://wiki.mikrokopter.de/en/BL-Ctrl_2.0  

    3.0 is not that different, and I think there were a few sub-versions that were buried and forgotten as well.

    Main difference AFAIK, except for different voltage and max current  (thermal/internal resistance improvements) - is that after ver 2.0 they attempt to measure temperature (semi-poorly, but enough to alert about overtemp)  , and "measure" current  - so inaccuratly, it's a shame.

    1.x is on version 0.42 , 2.x runs 0.31b .. for those who upgraded/bought after it was finished.  so, BlCtrl is a mess of versions, both hardware and software.   That said - I had never trouble with them, regardless version, and version of FlightCtrl, and never seen a "needed firmware update (never seen a post warning about a serious problem, but then again, it's not more than a simple ESC, not exactly rocket science ).  All were conformal-coated for extra reliability.

    en/BL-Ctrl_V1.2 - MikrokopterWiki
  • I have clone version of MKBL 1.1 ESC with i2c+PPM capability (which is pretty close to what original ESC can). 

    I have common ground for everything. then I have PX4FMU where I use i2c1 SDA, SCL pins on front MULTI port. These pins are soldered to each i2c SDA, SCL pin on ESC. Basicly there are two solid wires which go though all connections top_to_bottom. All ESCs have numbers set 1-4. 

    The thing is, that I tried different variations of power up.

    1. All together power up.

    2. Power up everything, then reboot controller (have to have the same effect as delayed controller powerup).

    Fact is that all controllers blink on power up, and then it depends (I don't know on what, but my best guess it that on Moon phase), all controllers can either initialize, or half initialize, or whatever. 

    It seems like bad connection, but I can't find the reason of such behavior.

  • Andre, what do you mean when you say there are at least two hardware versions?

    Marco, what MK bl controller are you using?  Are they individual ESCs, did you solder them, or are they a power distribution board?  Sounds like there's some sort problem with the I2C connections.  So far, in my limited experience, I've never had it miss a motor/ESC, it's always found 6.

    When you apply power, do all of your ESCs go through their init process?

This reply was deleted.