ADS-B with QGroundControl

I believe I saw where QGC now supports display of ADS-B data. But I can not find anywhere some documentation on QGC settings to activate this feature or how someone did their hardware connection with a ADS-B dongle.

Can anyone point me to some links and docs to get this feature enabled?


It doesn’t work with ADS-B dongles. Only the little ADSB receivers that connect to the Pixhawk on the vehicle.

It’s Mission Planner all the way if you want ADS-B, you can even feed multiple receivers in for a bigger picture. (See over the mountains)

1 Like

Don, I’m flying gliders with space and power as premium quantities. So I want something attached to the ground station PC. I also want to use less expensive SDRs and then ‘connect’ into the GCS.

Gary, I’m a Linux kind of guy so Mission Planner is not really in my toolbox. I guess I’ll have to see what is required to add ADS-B to APM Planner2 or QGroundControl. I’ll see how they implemented this feature in Mission Planner and roll my own for one of the other two GCSs.

QGC relies on the Mavlink ADSB messages from the vehicle. If you can read the ADS-B from the dongle then you could inject the messages into the mavlink stream and it will all work. Shouldn’t be that hard to add to QGC.

I look forward to trying it in QGC Mike!

I do have the similar problem displaying ADSB traffic in QGC. To be more specific, I want to connect ADSB receiver to autopilot and the autopilot want to send ADSB traffic using the same channel where autopilot communicate with the QGC. I am trying to simulate this scenario by connecting our simulator to QGC but the QGC does not show any ADSB traffic. However, the MAVLink inspector shows all the data I send to QGC with the help of message# 246 (i.e ADSB_VEHICLE). When I set up connection as explained above, I send the Heartbeat message with the “MAV_TYPE_FIXED_WING” component type. Will this cause the problem?. If I want to display ADSB traffic on the QGC do I need to send Heartbeat message with the " MAV_TYPE_ADSB"?.
if this is the case, then is it impossible to use a single channel to send/receive the MAVlink commands while receiving the ADSB traffic since Hearbeat message reports two different component types?.

Follow the usage of throught he QGC code. I would guess there is some value in the ADSB_VEHICLE message QGC doesn’t like.

1 Like

Thanks Don. Will have a look.

QGC does not shows traffic when it has outdated ADSB target info. I have set the last seen time in milliseconds instead of seconds. That cause the issue.
Once I fixed that issue QGC starts to show traffic as follows:

Thanks for the link,


Which autopilot did you use?
Did you manage to display multiple planes at the same time?
How did you establish the connection between the ADS-B Stick and QGroundControl ?
Did you find the problem in the source code of QGC?

Thank you very much in advance!

Not sure what the question is? There was no problem on the QGC side. QGC supports ADSB devices which are connected to the autopilot board. Firmware docs should have examples of that somewhere. The ADSB data is sent from the devices connected to the autpilot to the groundstation via the ADSB_VEHICLE mavlink message. QGC does not currently support connecting and ADSB device directly to the groundstation.

Hi Bastian,
I agree with Don’s explanation. It only need to send the ADSB_VEHICLE packet from the autopilot to the QGC.

“Did you manage to display multiple planes at the same time?”
Please note that those traffic shown in above figure are simulated ones. For testing purposes I generated target traffic data and placed them in the ADSB_VEHICLE packet and send to the QGC to test the operation (FYI: tested with the ADSB traffic received from the sagetech transponder as well and QGC is working fine).

“How did you establish the connection between the ADS-B Stick and QGroundControl ?”

                              ADSB_VEHICLE packet 

ADSB transponder----->Autopilot------------------------------------------> QGC

“Did you find the problem in the source code of QGC?”
No I did not. First I had an issue that is because I have set the time in millisecond instead of seconds.

Are you having any issue with this message?


Thank you so much @madu and @DonLakeFlyer ! You really helped me a lot!

I am trying to connect an ADSB-Stick directly to QGroundControl to show real time traffic. And I thought it could work with a simulation of real-time data.

I’m still having some trouble displaying the ADSB traffic as you did above in QGC.

  • Have you already decoded the data and fed it into the SITL Simulator?

  • Have you used a serial USB transponder device ?

  • How did you feed the ADS-B raw data into ADSB_vehicle ?

Thank you very much!

Hi Chris,
First of all I would like to let you know that I used Micropilot autopilot and Horizon simulator for testing this feature with QGC. The ADSB device is connected to autpilot through a serial interface and autopilot sends out that MAVLink packet out to QGC through a serial link.The QGC read the data it received. That is the basic set up. If you think some data log will help you to figure out the issue I can send you a data log in hexa format. if you need it let me know you email address.

FYI: QGC daily build has support for USB SDR Dongle, plus dump190 to provide ADSB decoding.

1 Like


I’ve simulated some ADS-B Mavlink (246) target messages which are displaying fine in Mission Planner; however, from QgroundControl (windows-10 build as of 2020-1-22) I’m only getting an “ADS-B Threat !” yellow message screen, and nothing on the map display. I’ve included a couple of screen shots of the QGC and Mission Planner screens. I’m working on this using SITL and some custom Python with Dronekit for generating the ADS-B packets. From reading the thread here, I gather that I should be seeing something showing up on the map. Any idea what I might be doing wrong?

W. Wright


Create a QGC GitHub issue with details on this. Include in there an attachment to a telemetry log which has your simulated messages in it. Then I can take a look.

1 Like