Very nice overview!
Thanks, glad to hear you enjoyed it!
Do you know where I could find a similar write-up focused on reliability?
hrm, I’m not aware of any write-ups in particular but all the gory details can be found in the Bluetooth Core Specification that is available here.
I presume that longer PDU are more likely to encounter a bit error, and then resend the whole thing? Do you know what the retry logic is? Retry timeout and how many retries until connection abort?
The Bluetooth Link Layer is “reliable” (every LE packet must be ack’d by the remote peer before another packet is sent).
Unack’d packets will continue to be resent up until the LE “Supervision Timeout”. This is configurable at connection time and can be any value from 100ms up to 32 seconds but a typical timeout is usually around 6 seconds or so. If no packets have been received in this amount of time, the connection will timeout (with a CONNECTION TIMEOUT (0x08) disconnect reason).
Is there FEC other than new BLE 5 feature you mentioned?
hrm, not that I can think of. During a connection devices may send LL_CHANNEL_MAP_IND messages to control the LE data RF channels that will be in use. Many LE chips will do this to selectively stop using certain channels experiencing high error rates in a particular environment.