Pixwhawk -> ESC -> Motors Don't spin enough for Takeoff

Hello,

I am using a Pixhawk 6X Pro running PX4 with a Standard VTOL configuration.

In the Actuators tab, the motors do spin, but not fast enough to achieve a real takeoff. During manual flight, the thrust produced by the motors is insufficient, and the aircraft is unable to take off.

In the log files I see that the signal of “1999” is sent from the pixhawk to the ESC, but it never really transfers into high RPM. I tried DSHOT 150, 300 and 600, no difference. Here my actuator outputs logs:

NuttShell (NSH) NuttX-11.0.0

nsh> listener actuator_outputs

TOPIC: actuator_outputs 5 instances

Instance 0:

actuator_outputs

timestamp: 10492336431 (0.001871 seconds ago)

noutputs: 8

output: \[0.00000, 0.00000, 1290.00000, 1690.00000, 1500.00000, 1500.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
Instance 1:

actuator_outputs

timestamp: 10492361459 (0.001511 seconds ago)

noutputs: 9

output: \[0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
Instance 2:

actuator_outputs

timestamp: 1165385 (10491.221680 seconds ago)

noutputs: 9

output: \[1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
Instance 3:

actuator_outputs

timestamp: 1308445 (10491.101563 seconds ago)

noutputs: 8

output: \[0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
Instance 4:

actuator_outputs

timestamp: 1308506 (10491.124023 seconds ago)

noutputs: 8

output: \[500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
nsh> listener actuator_outputs

TOPIC: actuator_outputs 5 instances

Instance 0:

actuator_outputs

timestamp: 10562657095 (0.002648 seconds ago)

noutputs: 8

output: \[0.00000, 0.00000, 1300.00000, 1700.00000, 1500.00000, 1500.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
Instance 1:

actuator_outputs

timestamp: 10562679580 (0.002069 seconds ago)

noutputs: 9

output: \[109.00000, 109.00000, 109.00000, 109.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
Instance 2:

actuator_outputs

timestamp: 1165385 (10561.535156 seconds ago)

noutputs: 9

output: \[1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
Instance 3:

actuator_outputs

timestamp: 1308445 (10561.415039 seconds ago)

noutputs: 8

output: \[0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
Instance 4:

actuator_outputs

timestamp: 1308506 (10561.441406 seconds ago)

noutputs: 8

output: \[500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
nsh> listener actuator_outputs

TOPIC: actuator_outputs 5 instances

Instance 0:

actuator_outputs

timestamp: 10566021136 (0.001716 seconds ago)

noutputs: 8

output: \[0.00000, 0.00000, 1300.00000, 1700.00000, 1500.00000, 1500.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
Instance 1:

actuator_outputs

timestamp: 10566041089 (0.005449 seconds ago)

noutputs: 9

output: \[1999.00000, 109.00000, 1758.00000, 350.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
Instance 2:

actuator_outputs

timestamp: 1165385 (10564.900391 seconds ago)

noutputs: 9

output: \[1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 1000.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
Instance 3:

actuator_outputs

timestamp: 1308445 (10564.779297 seconds ago)

noutputs: 8

output: \[0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
Instance 4:

actuator_outputs

timestamp: 1308506 (10564.802734 seconds ago)

noutputs: 8

output: \[500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000\]
nsh>

I have searched extensively—using ChatGPT, reading forum discussions, and reviewing the official documentation—but I have not been able to find a solution to this issue. Is there anyone knowledgeable who could help me troubleshoot this problem? I have been trying to resolve it for five days without success, and any assistance would be greatly appreciated.

Best regards,

Which ESCs are you using? Did you configure the KV and Poles? Hook up the TELEM signal from ESC to free UART RX on the FC (DSHOT_TEL_CFG) and check the reported RPM.

Dear Dakejahl,

first of all, thank you for replying.

I have 4x HAKRC BLHeli-32 35A ESC (https://www.getfpv.com/hakrc-blheli-32-bit-35a-2-5s-esc.html?srsltid=AfmBOorpVnVpFW0M-viu_AnDO9Vci0hmK2kacCDfpcEX9F4-dab5AxRZ) for the VTOL part.

The motor is T-Motor MN3510-13 Multirotor Fixed Wing UAV Motor KV700

The Mot_poles value is correct, the mot_kv value does not exist. When I try via mavlink console to set it to 700, it does also not work.

nsh> param set MOT_KV 700
ERROR [param] Parameter MOT_KV not found.
nsh>

param show MOT_KV
Symbols: x = used, + = saved, * = unsaved

1430/1913 parameters used.
nsh> #

It is a bit hard to “Hook up the TELEM signal from ESC to free UART RX on the FC (DSHOT_TEL_CFG) and check the reported RPM.” Because I have 4 separate ESCs.

However, when I start to fly, this is my ESC listener output which has RPM when I put full throttle up to launch (right joystick to the top):

nsh> listener esc_status

TOPIC: esc_status
esc_status
timestamp: 1127742867 (0.003749 seconds ago)
counter: 51490
esc_count: 4
esc_connectiontype: 5
esc_online_flags: 15 (0b1111)
esc_armed_flags: 15 (0b1111)

esc[0] (esc_report):
timestamp: 1127742868 (0.020886 seconds ago)
esc_errorcount: 0
esc_rpm: 1128
esc_voltage: 0.00000
esc_current: 0.00000
esc_temperature: 0.00000
failures: 0
esc_address: 0
esc_cmdcount: 0
esc_state: 0
actuator_function: 101
esc_power: 0

esc[1] (esc_report):
timestamp: 1127742868 (0.044765 seconds ago)
esc_errorcount: 0
esc_rpm: 1128
esc_voltage: 0.00000
esc_current: 0.00000
esc_temperature: 0.00000
failures: 0
esc_address: 0
esc_cmdcount: 0
esc_state: 0
actuator_function: 102
esc_power: 0

esc[2] (esc_report):
timestamp: 1127742868 (0.066681 seconds ago)
esc_errorcount: 0
esc_rpm: 1042
esc_voltage: 0.00000
esc_current: 0.00000
esc_temperature: 0.00000
failures: 0
esc_address: 0
esc_cmdcount: 0
esc_state: 0
actuator_function: 103
esc_power: 0

esc[3] (esc_report):
timestamp: 1127742868 (0.087625 seconds ago)
esc_errorcount: 0
esc_rpm: 1128
esc_voltage: 0.00000
esc_current: 0.00000
esc_temperature: 0.00000
failures: 0
esc_address: 0
esc_cmdcount: 0
esc_state: 0
actuator_function: 104
esc_power: 0

esc[4] (esc_report):
timestamp: 0
esc_errorcount: 0
esc_rpm: 0
esc_voltage: 0.00000
esc_current: 0.00000
esc_temperature: 0.00000
failures: 0
esc_address: 0
esc_cmdcount: 0
esc_state: 0
actuator_function: 0
esc_power: 0

esc[5] (esc_report):
timestamp: 0
esc_errorcount: 0
esc_rpm: 0
esc_voltage: 0.00000
esc_current: 0.00000
esc_temperature: 0.00000
failures: 0
esc_address: 0
esc_cmdcount: 0
esc_state: 0
actuator_function: 0
esc_power: 0

esc[6] (esc_report):
timestamp: 0
esc_errorcount: 0
esc_rpm: 0
esc_voltage: 0.00000
esc_current: 0.00000
esc_temperature: 0.00000
failures: 0
esc_address: 0
esc_cmdcount: 0
esc_state: 0
actuator_function: 0
esc_power: 0

esc[7] (esc_report):
timestamp: 0
esc_errorcount: 0
esc_rpm: 0
esc_voltage: 0.00000
esc_current: 0.00000
esc_temperature: 0.00000
failures: 0
esc_address: 0
esc_cmdcount: 0
esc_state: 0
actuator_function: 0
esc_power: 0

nsh>

Can you please help me with troubleshooting? Thank you in advance!

To follow up:

I have purchased a “LINKER” device, and could not connect to the ESC at all. I have now purchased differend ESCs, and now it works for manual flights and power. Skystars Jupiter 35A 3-6S AM32 | Rotorama

The problem was def. the firmware of the ESCs.

Nevertheless, if someone ever has successfully flashed the firmware of the HAKRC BLHeli-32 35A ESC (https://www.getfpv.com/hakrc-blheli-32-bit-35a-2-5s-esc.html?srsltid=AfmBOorpVnVpFW0M-viu_AnDO9Vci0hmK2kacCDfpcEX9F4-dab5AxRZ), please let me know! It would be a pity to throw them away or not use them for another project…

Best

It looks like AM32 supports this ESC. I would try flashing AM32 firmware

Hello, I am returning to this issue with a question to the Thrust to Weight ratio, and if there are settings I have not taken into account in regards to PX4 or the AM32 Firmware.

The drone has a total weight of 3.6 KG.

The motor is MN3510 UAV / Drone Motor - Stability & Longer Flight Time with 12 inch propellors and a pitch of 6 (in the table it is 4)

The ESC is **Skystars Jupiter 35A 3-6S AM32 (** Skystars Jupiter 35A 3-6S AM32 | Rotorama ).

Flightcontroller and ESC use Dshot protocol.

On paper, I should have a max thrust to weight ratio of:

(4*1.6kg)*0.8 (for ESC inefficiencies)= 5.12 KG

The thrust to weight ratio should be 1.42:1

However, drone does not lift off.

I have checked with the watt meter and in peak when trying to lift off I receive between 11.5 to 13 Amps. For 100% throttle I would need 16.8 amps. Is there a way how to improve this? Can the pitch of the propeller be the reason why I do not create enough lift off thrust?

Is there anything from the PX4 or ESC side I can improve?

I have attached a screenshot from my AM32 firmware.

I am grateful for any hint, because changing software settings is cheaper than buying completely new ESC and Motors and propellers. Thanks in advance.

I want to share also the log- analysis file. Here I understand, that the FC is sending max thrust signals to the ESC and the motor, but as mentioned before there is not enough thrust to take off. Is this graph evidence, that the issue is not in my px4 configuration, but rather on the motor/propeller and ESC side?

Are you sure the motor only has 14 poles? The images on the T-Motor website seem to show more, kinda looks like 20. You can count the number of stator windings.

The screenshot from above is not 100% correct, only thing that I changed now were the motor poles. Instead of 14, they are 12. This is the current setup.

With this, I have now received on my Thrust Bench a reading of 22Amps, and definitely around 1.2kg of Thrust (measured with my DIY thrust scale).

However, having these settings, and flashed them to my VTOL Dronet, my wattmeter showed a total Amps of 28 for all 4 motors. If I use Dshot600 or PWM 400, it is still the same result: Drone did not take off.

Here is the Console output during tried take-off. I tried it once with the RC control and this below is the output from take-off try with Qgroundcontrol:

NuttShell (NSH) NuttX-11.0.0
nsh> listener actuator_outputs

TOPIC: actuator_outputs 5 instances

Instance 0:
actuator_outputs
timestamp: 535898 (642.122925 seconds ago)
noutputs: 8
output: [0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000]

Instance 1:
actuator_outputs
timestamp: 642705175 (0.001697 seconds ago)
noutputs: 6
output: [1240.00000, 1922.00000, 464.00000, 881.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000]

Instance 2:
actuator_outputs
timestamp: 548542 (642.205505 seconds ago)
noutputs: 6
output: [1500.00000, 1500.00000, 1500.00000, 1500.00000, 1000.00000, 1000.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000]

Instance 3:
actuator_outputs
timestamp: 712660 (642.088135 seconds ago)
noutputs: 8
output: [0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000]

Instance 4:
actuator_outputs
timestamp: 720771 (642.116211 seconds ago)
noutputs: 8
output: [500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 500.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000]

nsh>

What could be the reasons for this?

Since I can generate a lot of thrust on the test bench with one motor reaching 22amps, I think it must be a PX4 setting that limits the thrust the motor generates. Any idea what that could be?

These are my Thrust settings:

Here you can see thrust is 100%

Screenshot from 2026-04-03 17-56-28

80% hover thrust is too high, you likely don’t have high enough thrust to weight ratio. The control allocator will reserve some thrust for attitude authority, 20% headroom is too low.