Bootloader Flashing onto a new Pixhawk CPU board



After producing Pixhawk due to the Gerber files, how can we burn the bootloader onto the new produced PCBs?
Should I refer to and clone + build it or refer only to page?



Current documentation is here:
I don’t know whether the DFU method works; haven’t tried it.


Thanks @Mark_Whitehorn



After burning the px4 bootloader into FMU CPU, how can i burn the firmware onto px4io cpu?

I power up the system with 1.5.5 firmware and through nsh, px4io start gives the error:
ERROR [px4io] Failed to communicate with IO, abort.
ERROR [px4io] driver init failed

I hold the safety switch before powering up the board to make the IO CPU go into the bootloader mode, but no success.
Any ideas?



I checked the safety switch pin, it is not about the boot loader mode for STM32F100, I think it was for older designs, The only way to put the STM32F100 CPU into bootloader mode is i think with the BOOT0 pin. Am i right? My hardware design is based on 2.4.5



I set the Boot0 pin of STM32F100 to 3.3 during startup in order to make it enter into bootloader mode,

when i try to upload the px4io_v2.bin via NSH,

I get the following error:

nsh> px4io forceupdate 14662 /etc/extras/px4io-v2.bin
WARN [px4io] px4io is not started, still attempting upgrade
[PX4IO] using firmware from /etc/extras/px4io-v2.bin
[PX4IO] bootloader not responding

Any ideas?


I think the thing is, when it is in bootloader mode, the STM32F100 IO CPU accepts the firmware via its USART1 interface.
So when we solder a new STM32F100, we have to upload a px4io_bl via its USART1 interface, not via the DMA enabled uart interface between FMU CPU and IO CPU. And for using the USART1 interface, we should connect it to any UART interface of FMU CPU and configure the device being used by FMU CPU in

By changing the /dev/ttyS4 to a uart which is connected to IO CPU’s USART1, we can upload the px4io_bl into IO CPU.

Any ideas?



I have successfully uploaded the px4io bootloader via USART1 of STM32F100 and it works great with Qgroundcontrol. For the FMU CPU to upload firmware of STM32F100, the IO cpu should be programmed with the px4io bootloader first. Then they talk to each other via the DMA enabled UART between 2 CPUs with the help of px4io bootloader.

The tool to program the STM32F100 bootloader is on the ST’s website.


Dear @metinburak,
Please help me up firmware pixhawk via Uart, I find everything but not found.

Thanks a lot Reed Noel


You want to upload firmware to FMU or bootloader to IO CPU?

If you want to upload firmware onto FMU, you should have a black magic probe connected to JTAG of FMU CPU, if you don’t have USB. Do you have this JTAG probe?

Also u should buy a JTAG connector which is not soldered to default Pixhawks. You can buy it from Digikey or Mouser. But if your microUSB connector is damaged, if i were u, i will try to repair it because these procurements may take longer time.


Thanks your feedback Mr. @metinburak,
I trying sold many times of mini usb, but the same error happen. and I haven’t the IC of drive of mini usb.
So I see in the STM32 webside, and I understand how to upload the firmware .bin, hex,… via FTDI-232 to STM32F4 ( like CPU of pixhawk).
So I don’t know which the Firmware of Pixhawk can using with Mission Planner. ( in my pixhawk already the Px4IO


Dear @metinburak,
I buy new kit stm32f103c8t6 for testing upload bootloader px4fmuv2_bl.dfu, and succesful, but I can’t connect the board with QGC or Mission Planner, And can’t Upgrgate firmware from its.
Could you please help me this matter.

Note: If I can upload fw to stm32f103c8t6, I can up fw to pixhawk with same way.
Thanks so muchs
Reed Noel


In my local disficult to buy BackMagic, Can I using ST-Link instead ?


Hi @metinburak,
Could you please help me. please give me your email, facebook, … for contacting.
Thanks so muchs
Reed Noel



Hi @metinburak,
I know how to update bootloader into pmu.
could you please show me, how to convert .px4 to .bin.
Or make firmware .bin with eclipse.


I am currently making a flight controller with only a stm32f4 (no stm32f1). However, I don’t know what files to flash and where to flash it since there is no stm32f1 to flash the px4io files. I just want to run Ardupilot in it. It would be really helpful if you could help me. Thanks.


Hi, you should flash first bootloader of stm32f4, whose source code is in Here, you should use the bootloader interface of stm32f4 cpu. It will be a JTAG interface. You should use the arm-none-eabi-gdb to flash the CPU via its JTAG interface. For this, you should have a Blackmagic debug probe from :

After flashing the bootloader via JTAG, you may use the microUSB interface of CPU F4, which is usb-serial interface to flash the firmware.

If you will not use the IO CPU, you will use the PWM interface of STM32F4, which is dangerous if you will have a firmware crash. Because the firmware crash will disable the PWM and you will crash. The IO CPU has its own firmware which includes the mixer and PWM modules, independent of the FMU CPU. Any firmware fault will not affect the IO CPU and RC interface which is handled by the IO CPU STM32F1 only.


Hi, why do you need .bin instead of .px4 for fimrware?