Background
PR #14786 moved firmware support from compile-time exclusion to runtime factory registration. During review, Copilot noted that the runtime gating in FirmwareUpgradeController is asymmetric — this is pre-existing behavior (there was never a PX4-side guard, even compile-time), so it was deferred out of that PR.
Problem
With QGC_DISABLE_PX4_PLUGIN_FACTORY set (APM-only custom build):
FirmwareUpgradeController still unconditionally calls _determinePX4StableVersion(), downloading PX4 release metadata.
FirmwareUpgrade.qml still exposes and defaults to PX4 firmware choices, allowing users to select firmware for a class the build reports as unsupported.
ArduPilot is already gated correctly via FirmwarePluginManager::instance()->firmwareClassSupported(QGCMAVLink::FirmwareClassArduPilot).
Fix
Gate the PX4 stable-version download and the PX4 firmware selection UI on firmwareClassSupported(QGCMAVLink::FirmwareClassPX4), mirroring the existing ArduPilot gating.
Background
PR #14786 moved firmware support from compile-time exclusion to runtime factory registration. During review, Copilot noted that the runtime gating in
FirmwareUpgradeControlleris asymmetric — this is pre-existing behavior (there was never a PX4-side guard, even compile-time), so it was deferred out of that PR.Problem
With
QGC_DISABLE_PX4_PLUGIN_FACTORYset (APM-only custom build):FirmwareUpgradeControllerstill unconditionally calls_determinePX4StableVersion(), downloading PX4 release metadata.FirmwareUpgrade.qmlstill exposes and defaults to PX4 firmware choices, allowing users to select firmware for a class the build reports as unsupported.ArduPilot is already gated correctly via
FirmwarePluginManager::instance()->firmwareClassSupported(QGCMAVLink::FirmwareClassArduPilot).Fix
Gate the PX4 stable-version download and the PX4 firmware selection UI on
firmwareClassSupported(QGCMAVLink::FirmwareClassPX4), mirroring the existing ArduPilot gating.