Simulation software doesn't appear to be communicating with QGroundControl when PX4 is connected to Raspberry Pi

Hello all,

I have been able to follow the steps outlined here to set up a HITL simulation and execute a basic mission, but I wanted to see if I could do this same thing, but with the PX4 connected to a Raspberry Pi (3b+, if the version is relevant). Currently, the simulation computer is connected to the Pi via an Ethernet cable, and I’m able to use Mavlink router on the Pi to connect Gazebo and the PX4, which is connected via the USB cable to the Pi. I’ve used wireshark and have seen that UDP messages are indeed being exchanged between the simulation computer and the Pi, but no messages are being sent from Gazebo’s port to the port on which QGroundControl is listening, and so QGroundControl shows “Disconnected” in the top left hand corner.

If my understanding is correct, QGroundControl should not connect directly to the PX4 in this scenario (i.e. QGroundControl should still be listening on

I’m supplying the relevant parts of my iris_hitl.sdf file:

<mavlink_addr>[ip of the Pi]</mavlink_addr>

I will also mention that I’ve manually added a “Comm link” in QGC for UDP messages on “”, and still received no messages from Gazebo.

I feel like I’m overlooking something very simple, but would appreciate any information you could give. If I need to provide additional information, I will be happy to do so. Thanks!

UPDATE: I’ve recently learned that I should be connecting the Pi to the Pixhawk via the TELEM2 port, as no data was actually being sent from the Pi back to the simulation computer. Hopefully, this resolves things.

UPDATE: Because I was struggling to find a solution, I wound up connecting the Pi to the Pixhawk via the TELEM2 port, and the Pixhawk to the simulation computer via USB.

In case others happen upon this thread, I used QGroundControl to configure the parameters as defined here so that telemetry data could be sent from the Pixhawk to the Pi. I then used MAVProxy to view the mission as it was being executed on QGroundControl.