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:
- Windows port proxy (netsh portproxy) forwarding 0.0.0.0:14550 → <WSL2_IP>:14550
- Windows Firewall rule added for UDP port 14550 inbound
- mavlink stop-all → mavlink start -u 14550 -r 4000000
- Set MAV_0_BROADCAST = 1 (confirmed saved via param show)
- Restarted MAVLink with explicit target: mavlink start -u 14550 -r 4000000 -t <Windows_Host_IP>
- 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!