I am using the Samsung Galaxy S9+. But I think other models will have similar behaviour as well.
After the recent security patch update to level 2020-11-01, I have found that there are some issues with the Bluetooth and the Wi-Fi.
The smartphone can find and establish a connection to a BLE peripheral device. But it cannot receive characteristic value updates from the peripheral. (ie. Handle Value Notification/Indication cannot be received). But it can read characteristic values from the peripheral.
The issue can be solved by force stop the Bluetooth or clear the storage of the Bluetooth. Then it can connect to the peripheral device and receives the characteristic values update.
This works until a new Wi-Fi connection is initiated. Then it will stop working again.
And if the Wi-Fi is turned off, there is no problem as well.
Therefore based on this behavior, I think that not the Wi-Fi connection having some issues with the Bluetooth module, but the initialization process of the Wi-Fi connection has some interferences to it such that it cannot receive characteristic value updates.
And looking at the Bluetooth HCI log,
normally the Gatt Primary Service Declaration response of the S9+ is that:
Service Handle of Generic Attribute Profile is 0x0001…0x0003 and
Service Handle of Generic Access Profile is 0x0014…0xffff.
But when the problem happens, the Gatt Primary Service Declaration response of my smartphone becomes this:
Service Handle of Generic Attribute Profile is 0x0001…0x0003 and
Service Handle of Generic Access Profile is 0x0014…0x001a.
Then there is an unknown service in another response:
Service Handle of the Unknown Service is 0x0028…0xffff.
UUID: 594a34fc-31db-11ea-978f-2e728ce88125
Also normally the BLE peripheral device will stop requesting the smartphone after the first Gatt Primary Service Declaration because its role is a peripheral that should not send any request to the central.
When the bug happens, it keeps sending Gatt Characteristic Declaration and Find Information requests about the unknown service. And it will keep repeating these requests until the connection timeout happens because the BLE peripheral device needs the Handle Value Confirmation event to complete the whole connection establishment
FYI, the BLE device is using the RN4020 module.