From ac445bf0aa4bb783c317bb5c43b408070dd700e4 Mon Sep 17 00:00:00 2001 From: me-cafebabe Date: Mon, 20 Mar 2023 19:54:49 +0800 Subject: [PATCH 1/2] Add property to disable APCF extended features * It's broken on some legacy devices, rendering Bluetooth crashing Change-Id: I4b1764b7551150e78dd8e2dfc99a6472c1293c2b --- system/gd/hci/le_scanning_manager.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/system/gd/hci/le_scanning_manager.cc b/system/gd/hci/le_scanning_manager.cc index 4ade641f93..482a7120f0 100644 --- a/system/gd/hci/le_scanning_manager.cc +++ b/system/gd/hci/le_scanning_manager.cc @@ -60,6 +60,8 @@ constexpr uint8_t kDataStatusBits = 5; // system properties const std::string kLeRxPathLossCompProperty = "bluetooth.hardware.radio.le_rx_path_loss_comp_db"; +const std::string kPropertyDisableApcfExtendedFeatures = "bluetooth.le.disable_apcf_extended_features"; +bool kDisableApcfExtendedFeatures = false; const ModuleFactory LeScanningManager::Factory = ModuleFactory([]() { return new LeScanningManager(); }); @@ -190,7 +192,9 @@ struct LeScanningManager::impl : public LeAddressManagerCallback { api_type_ = ScanApiType::LEGACY; } is_filter_supported_ = controller_->IsSupported(OpCode::LE_ADV_FILTER); - if (is_filter_supported_) { + if (os::GetSystemProperty(kPropertyDisableApcfExtendedFeatures) == "1") + kDisableApcfExtendedFeatures = true; + if (is_filter_supported_ && !kDisableApcfExtendedFeatures) { le_scanning_interface_->EnqueueCommand( LeAdvFilterReadExtendedFeaturesBuilder::Create(), module_handler_->BindOnceOn(this, &impl::on_apcf_read_extended_features_complete)); From 26da3818de62e111b77d31f5588fd430059dc48a Mon Sep 17 00:00:00 2001 From: ChonDoit <42556721+ChonDoit@users.noreply.github.com> Date: Mon, 10 Mar 2025 23:16:56 -0300 Subject: [PATCH 2/2] Make disable APCFE a persist property --- system/gd/hci/le_scanning_manager.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/gd/hci/le_scanning_manager.cc b/system/gd/hci/le_scanning_manager.cc index 482a7120f0..bb4840a97a 100644 --- a/system/gd/hci/le_scanning_manager.cc +++ b/system/gd/hci/le_scanning_manager.cc @@ -60,7 +60,7 @@ constexpr uint8_t kDataStatusBits = 5; // system properties const std::string kLeRxPathLossCompProperty = "bluetooth.hardware.radio.le_rx_path_loss_comp_db"; -const std::string kPropertyDisableApcfExtendedFeatures = "bluetooth.le.disable_apcf_extended_features"; +const std::string kPropertyDisableApcfExtendedFeatures = "persist.sys.bt.le.disable_apcf_extended_features"; bool kDisableApcfExtendedFeatures = false; const ModuleFactory LeScanningManager::Factory =