Firmware Upload via UART (GPS2/TELEM) Instead of USB - Bootloader Configuration

Hi everyone,

I’m working on a setup where I need to upload firmware to a Pixhawk from an onboard companion computer. Is it possible to use UART ports (like TELEM or GPS2) instead of USB-C for firmware flashing?

What I’ve done so far:

I’m using PX4 v1.15.4 on FMUv6c hardware. I’ve modified the bootloader configuration in hw_config.h to enable GPS2 port for firmware upload:

#define INTERFACE_USB 1
#define INTERFACE_USART 1
#define INTERFACE_USART_CONFIG “/dev/ttyS6,921600” // GPS2 port

The problem:

When I connect via FTDI adapter to the GPS2 port and run it using px_uploader.py, The uploader gets stuck waiting for the bootloader. When I power the Pixhawk via USB, it works (5-second bootloader delay). But when powered via battery/external power, the bootloader boots immediately into the application without waiting for UART commands.

Questions:

Is UART-based firmware upload officially supported, or is USB the only intended method?
How can I make the bootloader wait for UART communication when powered via battery (no USB VBUS detection)?
I noticed the bootloader has a BOOT_DELAY_ADDRESS mechanism and px_uploader.py has a --boot-delay flag, but using it returns “INVALID OPERATION” error - is this feature implemented?
Any guidance would be appreciated! My use case is automated firmware updates from a companion computer without requiring physical USB access.

Hardware:

Pixhawk 6C (FMUv6c)
PX4 v1.15.4
FTDI USB-Serial adapter at 921600 baud

Thanks in advance!