Connections drop and don't come back (and "SoftDevice Controller ASSERT: 53, 296")

NCS v2.6.0, devices based on nRF52840 (Fanstel BT840)

The project is a star network in which the Central is housed in a steel enclosure with a patch antenna perhaps 1cm from the steel surface. Currently, the network is running with Coded PHY. Once connected, the Peripherals report their environmental readings via Notify every 60 seconds. If they disconnect, the Peripherals resume advertising, and when the Central detects their advertising, it initiates a connection and then reads various characteristics with metadata and control information.

When the Peripherals are located about 27 feet away at about 54 degrees from the patch antenna, the network works fine. Connections last for about 3 minutes (before dropping for whatever reasons), reconnects never fail. RSSI reports from circa -70dB to -85dB.

When the box is flipped over such that the steel box is between the antenna and the Peripherals, things get much worse. Connections last for 45 seconds. Reconnects struggle. RSSI is marginally worse, -85dB to -90dB.

Worse is, frequently the Central will not reacquire the Peripherals. The Central will report not being connected to any Peripherals, whereas the Central software running on a nRF52840DK right next to the box (chip antenna, not shadowed by steel) can see the Peripherals advertising.

When this occurs, I see three phenomena:
1. Frequent error of 2 reported in the callback following bt_conn_le_create(). Which is BT_HCI_ERR_UNKNOWN_CONN_ID?
2. Frequent error of 14 reported in the callback following bt_gatt_read(). Which is BT_ATT_ERR_UNLIKELY?
3. Occasional reset of the Central.
4. Occasional report (on the serial Console) of "SoftDevice Controller ASSERT: 53, 296"

The Central code is written to manage the connection process from a main() thread of execution, and as little as possible is being done in the Bluetooth thread context.

The fault appears to be occuring within the Bluetooth stack ("SoftDevice"), and only when the signal strength is reduced to some point where the operation is unreliable. Any suggestions?

Related