@Keith Benson yeah, what you're describing is actually pretty expected behavior for a system operating at these sensitivity limits — it's not your test setup. What you're seeing is essentially the RF link budget cliff. BLE at this range is running with very little margin to spare, and the STM32WB07's receiver is doing a lot of heavy lifting to pull signal out of the noise floor. When you're well within range, the SNR is high enough that the forward error correction and the amplifier chain can compensate for most of the variability. But as you push toward the edge, you're no longer recovering from small fluctuations — you're right at the threshold where any dip in SNR (multipath, slight antenna misalignment, atmospheric conditions, even thermal noise variance) tips you from "barely decodable" to "lost packet." The transition isn't gradual because the demodulator either has enough SNR to lock the packet or it doesn't — there's not much middle ground once you're operating at sensitivity floor.
The 50km spec is drone-to-drone with both modules elevated and ground reflections eliminated, so if you're doing ground-to-ground or mixed elevation testing, you're likely hitting that cliff earlier than the spec ceiling. Worth checking your antenna orientation too — at extreme range, even a few degrees of polarization mismatch can cost you several dB, which at the margin is the difference between solid link and cliff edge.