QGroundControl shows 'Disconnected' despite MAVLink active on UDP 14550 — WSL2 + PX4 SITL

Hi everyone,

I’m running PX4 SITL on WSL2 and QGroundControl on Windows, but QGC consistently shows ‘Disconnected’ even though MAVLink status shows active TX and RX traffic.

System Setup:

  • Host OS: Windows 11
  • WSL2 distro: Ubuntu (Kernel 6.6.87.2-microsoft-standard-WSL2)
  • PX4 Autopilot: v1.17.0-alpha1-noble (amd64)
  • Gazebo: gz-sim 8.11.0
  • QGroundControl: Latest stable (Windows .exe)
  • Simulation target: gz_x500

WSL2 Network Details:

  • WSL2 IP: <WSL2_IP>
  • Windows host IP (from /etc/resolv.conf): <Windows_Host_IP>

What I tried:

  1. Windows port proxy (netsh portproxy) forwarding 0.0.0.0:14550 → <WSL2_IP>:14550
  2. Windows Firewall rule added for UDP port 14550 inbound
  3. mavlink stop-all → mavlink start -u 14550 -r 4000000
  4. Set MAV_0_BROADCAST = 1 (confirmed saved via param show)
  5. Restarted MAVLink with explicit target: mavlink start -u 14550 -r 4000000 -t <Windows_Host_IP>
  6. Created new UDP Comm Link in QGC on port 14550 with no server address

Current mavlink status output (the closest we got):

instance #0:
  type: GENERIC LINK OR RADIO
  tx: 3333.7 B/s
  rx: 3333.7 B/s
  rx loss: 0.0%
  Received Messages: sysid: 1, compid: 1, Total: 388 (lost: 0)
  transport protocol: UDP (14550, remote port: 14550)
  Broadcast enabled: NO
  partner IP: <Windows_Host_IP>

Both TX and RX are active at 3333 B/s with zero packet loss — so data is clearly flowing in both directions. But QGC top bar still shows ‘Disconnected - Click to manually connect’.


What’s confusing us:

  • mavlink status shows rx: 3333.7 B/s (QGC IS sending back)
  • partner IP is correctly set to the Windows host
  • port proxy tunnel is confirmed active via netsh portproxy show all
  • QGC Comm Link shows ‘PX4_SITL (Connected)’ in the dropdown
  • Yet QGC main UI shows ‘Disconnected’ and no vehicle appears on the map

Question:
Is there a known issue with QGC not promoting a UDP link to ‘vehicle connected’ status even when MAVLink heartbeats are flowing? Could this be a heartbeat system ID mismatch or a QGC version-specific bug?

Any help appreciated. Thanks!

This topic seems more appropriate at: