How to DFU mode on pixhawk 3 pro

Hi everyone, i search how to activate DFU mode on drotek pixhawk 3 pro, because en only 1Mo/2Mo of flash memory is recognise.

Is it recognised as a Pixhawk 3 Pro when you install firmware?

If not then download and install the Copter .apj file from here:

or do you need Plane?

it doesn’t work because there is not enough memory, that’s why I would like to put it in DFU but I don’t know how to do it.
I’m looking for a way to put it in DFU

It should be an F4 processor with 2MB flash. Did you buy it direct from Drotek ?
They are no longer for sale anywhere.

If you plug it in via USB is it recognised at all by QGC or MissionPlanner?

the problem is not there, it is well recognized, by QGC or MP, but only 1MB of memory, while it is 2MB. how to recover missing memory? is this due to a bad flash from the previous owner?

so for me the only solution that I find viable to recover this memory is to inject the firmware in DFU. But how to switch to DFU on this pixhawk?

And of i Connect this board with the debug serial port for flash it’s good?

If it’s connecting to Mission Planner, just use the firmware utility on the setup screen to flash it with the proper firmware. No need for DFU mode.

you probably did not understand: I would like to recover this part of flash memory, so I need to know how to put it in DFU. I can actually put another firmware but that’s not the question.

to recover this memory the only way would be to use stm32cubeprogrammer but for that the dfu mode is mandatory.

do you think that a bridge between the “boot0” pin and the 3.3v would work?

And you didn’t understand me.

An incorrect firmware flash can artificially limit flash by reporting the wrong value. Just upload the correct firmware first and see if that fixes everything.

By downloading the .apj file from here Drotek P3 Pro and using Mission Planners “load custom firmware” to flash it.

And even do the Bootloader update which is a standard procedure in MissionPlanner

I have already tried to update with a correct firmware: ardurover 4.2.3 apj file.

on the other hand, it happens that I just came across a video which explains that certain options are possible with stm32cube programmer and that the former user was able to protect part of the memory in writing (or manipulation error). So I really need to know how to enter dfu mode. I know for sure if there is a problem or not.

This vidéo 5min Watch the possible option:
Hé explain different flag for write protect and other:

4.2.3 is old firmware
It’s just not the case that these Fmuv4 flight controllers need to enter DFU mode for any reason. That’s why you are getting these replies. It’s like a Pixracer, have a few of those.
Try QGC and flash the latest Stable of Arducopter. Sometimes that will do the trick. Or, try the Custom Firmware Builder.

precisely I don’t even have 4.2.3… I’m in 3.0.1 and even qgroundcontrol can’t do anything: the size of the firmware is bigger than the usable memory.

I guess that if you connect a STLink to FMU debug port (SWCL-SWDI) you could check memory and reset any locking (I would be really surprised that it would be the case) and flash firmware.

With SWD, we usually don’t have to adjust the BOOOT0/BOOT1 jumpers. The exception is if the currently running code disables SWD. In that case, set BOOT0 to “0”, BOOT1 to “1”, and RESET.

thank you for your answer, so that means that I don’t need to put it in DFU if I plug it into the debug port and I could in theory put everything back as it should be with cubeprogrammer?

But with SWDI and SWCL should I connect the RX and TX or not?

SWD is the standard method to program STM
Serial is a more popular alternative as it does not require special equipment

I am still puzzled about your issue because it looks like a hardware problem, anyway a ST-Link cost 10$ on Amazon its a cheap tool to dig into the heart of the chip

hello, I finally received the stlink v3 box and the small plug that goes well for the fmudebug port. I therefore wired everything, plugged in and launched the stm32cube programmer. I can read the memory and everything. So I first erase all of the flash memory, send the latest ardurover firmware with bootloader, but the card is suddenly no longer recognized once everything is restarted. So I tried to send only the bootloader, then program ardurover separately with mission planner but the same it does not start then.

how can i proceed? Are there any write protections to uncheck?

Good that you made some progress in the reprogramming
As I wrote before it seems more and more evident that you deal with a hardware issue with that STM

how should i proceed? I don’t know the software at all, I’ve watched a lot of video but at home, since there’s a problem, it’s completely different. how do i perform a full flash memory check?
is it possible to force a full write?

I can take a closer look to see if there is write protection, but at this time I could not flash a firmware in full except I have no error message. I will try another way.


Another atempt:

  • full erase chip with cubeprog
  • writing just bootloader with cubeprog
  • Connect on mission planner
  • Write ardurover 4.5 with MP
    And Another error:

Error loading firmware file

System Exception: Unrecognized token at index 1

@ fastJSON.IsonParser. ParseValue() dans C: lUserslmich1 Desktop\CubePilot\MissionPlanner\ExtLibslpx4uploader\FastJSON son arser.cs:ligne 146

à fastJSON.JSON. ToObject(String json. Type type) dans C: lUsers mich 1Desktop|CubePilot MissionPlannerlExtLibslpx4uploaderiFast/SONUSON cs:ligne 172

à fast/sON.JSON.ToObjeciTI(String ison) dans ClUserslmich1 DesktopiCubePilotMissionPlanner/ExtLibslpxAuplaaderFast/SONUSON os ligne 139

à preuploader.Firmware.ProcessFirmware(StreamReaderf)dansC:lUserslmich1IDesktop|CubePilotMissionPlannerlExtLibelpxAuploaderiFirmware.cs-ligne96

à pruploader.Firmware.ProcessFirmware(Stringpath)dansC:lUsersImich1DesktopiCubePilotiMissionPlannerIEdtLibslpxAuploader!Firmware.csiligne90

à MissionFlanner.Unlities.Firmware.UploadPX4(String filename, boards board) dans C.lUsere imichilDesktopiCube ligne 587