Using the following:
Rigado BMD-360 nRF52811 development board.
Softdevice S140 7.0.1
Using two development boards inches apart, one development board sends a single advertising event every 12 seconds. The other development board is continuously scanning (interval and window = 7s). The packets have 30 bytes of data including a sequence number. I calculated packet loss based on the missing sequence numbers.
Sending and scanning using the 1 MB/s PHY, in a test of approx. 20 minutes I get 100% reception of packets.
Sending and scanning using the Coded PHY, in the same test I get ~43% reception of packets, ~57% packet loss.
Is this expected behavior, or could I be configuring something wrong when advertising using Coded PHY?
Another behavior I've seen is for the above condition using the Coded PHY to have a repeating pattern of receiving 3 and missing 2.
Coded PHY is still limited to a data length of 27 bytes per packet. Longer packets than this will cause interference on longer ranges and will have a bigger chance for packet loss than when using 27 bytes or less per packet.
Thank you for the quick response.
I want to make sure I understand. The 27 bytes per packet you reference, is that an extended advertising limit and if exceeded requires a second packet, thereby increasing the likelihood of interference?
Packets with a data length of more than 27 bytes in Coded PHY has an increased chance of losing packets. It would be better to transmit two smaller packets than one larger one when using Coded PHY.
I've repeated the experiment with 15 fewer data bytes, so now the GAP event structure reports a size of 15 bytes. I am still getting a packet loss rate of approximately 50%. I have verified that the advertiser is not reporting errors in sending.
I have performed another limited experiment where I have sent 15 advertisements with a delay of 100ms between them. In approximately 50% of those cases, the first advertisement is not detected. All the remaining advertisements are detected.
Thank you for the update Kurt
This seems very strange indeed. You should have a much larger success rate with the setup you're describing. Coded PHY should definitely not be losing this many packets compared to the other PHY(s). Can you show me how your advertising initialization function looks?
You can also take a look at this example, where the ble_app_uart and ble_app_uart_c projects have been modified to use Coded PHY. Please keep in mind that you should set the advertising flag to GENERAL_DISC_MODE in this example to make it work properly.