diff --git a/firmware/application/external/adsbrx/ui_adsb_rx.cpp b/firmware/application/external/adsbrx/ui_adsb_rx.cpp index 16f556d65..69334ac38 100644 --- a/firmware/application/external/adsbrx/ui_adsb_rx.cpp +++ b/firmware/application/external/adsbrx/ui_adsb_rx.cpp @@ -542,6 +542,18 @@ ADSBRxView::ADSBRxView(NavigationView& nav) { logger = std::make_unique(); logger->append(logs_dir / u"ADSB.TXT"); + /* First run only: start from the configuration that is known to receive + * ADS-B on this hardware -- LNA 32, VGA 32, RF amp ON. The first two are + * already ReceiverModel's defaults; the amp is not, and running without it + * costs about 14 dB, which is the difference between a busy list and an + * empty one. Once the user has saved settings for this app their choice + * wins, so this only sets the starting point. + * Going through the field rather than receiver_model keeps the displayed + * value in step: RFAmpField snapshots rf_amp() in its own constructor, + * which has already run by the time we get here. */ + if (!settings_.loaded()) + field_rf_amp.set_value(1); + receiver_model.enable(); baseband::set_adsb();