How does Ardupilot work with Navio2


I am having a strange problem.
I made by own ground station in UDP, which listen to UDP MAVLINK packets coming from the drone and parse them. I tried this ground station with some real copter and SITL simulation and works fine as expected.

When I tried it with RPi+Navio2, and I set
sudo ArduCopter-quad -A udp:

to send MAVLink output stream to my ground station, I find out that my ground station only receives heartbeat message from RPI+Navio drone. Other messages related to status, GPS, batteries, … are not sent at all.

When I turn on APM Planner or QGroundControl, they are able to receive all MAVLink message.

Then, when I come back to my ground station after shutting down APM Planner or QGroundControl, my ground station is able to send all types of messages.

This is a strange behavior, as it is like Ardupilot is waiting for a certain condition to start sending all its MAVLink message.

Is there a way to make RPI+Navio2 send all types of message since the start and not only heartbeat message?

I have been stuck onto this for long time.

Thank you

The GCS has to send requests to the RPi/ArduPilot system, which in return sends e.g. the sensor data.
If the GCS does not request data, the RPi/ArduPilot sends only a hartbeat message.
Consequently, your description indicates a sending problem on site of the GCS computer and not of the RPi/ArduPilot.
Maybe the firewall?

Yes, you were correct.
I understood that and I implemented the sending request and all works fine now.
The problem is that I used my GCS with other platforms and simulation tools SITL and it worked without having to send the request, as the drones were sending all their data.
Now, I implemented the sending request and it also works fine with Navio
Here is the experiment I did finally with a drone powered with Navio2 using my Cloud-based GCS

Nice to hear. I had once the same issue with a 3DR radio.