Camera controller/generic component on UART (Telem1) - PX4 does not react to heartbeat message from MAV_COMP_ID_CAMERA

Hello there,

I’m trying to register a custom camera controller (based on an atmega328p) with my flight controller on Telemetry port 1. I’ve got a Pixhawk 2.1 cube with PX4 version 1.7.3.

I can read messages and subscribe to them with COMMAND_LONG and MAV_CMD_SET_MESSAGE_INTERVAL, so sending commands/messages works.

According to the MAVLink camera protocol description, the flight controller should respond to a heartbeat message from a camera component with a MAV_CMD_REQUEST_CAMERA_INFORMATION command.

My understanding is that I should receive commands from PX4 through COMMAND_LONG messages. However I don’t receive any from the flight controller.

I’m sending like this with 1 Hz. I also tried system_id 1.

uint16_t len=0;
mavlink_msg_heartbeat_pack( 2,
len = mavlink_msg_to_send_buffer(this->mav_txbuf, &this->mav_msg_buf_pixhawk);
Serial.write(this->mav_txbuf, len);

Any idea where I’m going wrong? Is it possible to attach component systems to the UARTs?

Thanks a lot and best regards, Floxo

1 Like