RFOXiA LogoRFOXiA Club
← Back to DevHub

MultiNav Pro+ GNSS 18Hz rate + BLE streaming - buffer overruns?

tod nickJune 12, 2026
So I've got the GNSS module pushing fixes at 18Hz and I'm trying to stream that data in real-time over the BLE module to a base station. On paper the 2Mbps BLE throughput should eat that alive, the GNSS payload per fix isn't huge. But in practice I'm seeing what looks like buffer overruns or dropped packets after maybe 30-60 seconds of continuous streaming. It's not consistent either, sometimes it runs clean for a few minutes, sometimes it chokes almost immediately.
💬 1 replies👍 0 likes👁 0 views

💬 Want to join this discussion?

Join the Community on RFOXiA Club →

Replies

AdamJune 12, 2026
@tod nick yeah this is almost certainly not a throughput problem — 2Mbps has way more headroom than 18Hz GNSS fixes need, so I'd look at connection interval and MTU negotiation first. BLE connection intervals default pretty conservatively (often 100ms+) and if your stack isn't renegotiating down to something tighter, you're building up a backlog on the transmit buffer even though the raw bandwidth is theoretically fine.
 
The inconsistency you're seeing is a big clue — that pattern usually points to either RF environment causing retransmissions that eat into your connection interval budget, or something on the host side (phone, base station MCU) not draining the receive buffer fast enough and applying backpressure. What's on the receiving end, and how are you handling the incoming data there? If you're processing synchronously on the main loop without a dedicated ring buffer to dequeue from, that's often where it falls apart after a clean 30-60 seconds when some other task sneaks in.
 
Also worth checking — are you seeing the drops correlate with anything on the GNSS side, like a satellite reacquisition or a fix quality change? Sometimes the fix rate output isn't perfectly metered and you get a small burst that tips the buffer over.

💬 Want to join this discussion?

Join the Community on RFOXiA Club →