RFOXiA LogoRFOXiA Club
← Back to DevHub

MultiNav Pro+ BLE - host MCU UART buffering causing drops at 2Mbps, anyone else?

Ashley AndersonJuly 25, 2026
So I've been running the MultiNav Pro+ BLE module at 2Mbps on a custom board with an STM32L4 as the host, and I'm running into what I think is a UART RX buffer overflow situation when the link is pushing data at full speed. I'm seeing occasional corrupted packets on the host side but the BLE link itself looks clean from what I can tell - so I'm fairly confident the problem is on my side of the UART, not the module. Just wanted to check if anyone else has hit this and what you did to deal with it.</TITLE>
 
My current setup is DMA on the UART RX with a circular buffer, and I bumped the buffer up to 4KB which helped but didn't fully fix it. Still getting drops maybe once every few hundred packets under sustained throughput. I'm wondering if there's something about how the module packetizes data on the UART side that creates short bursts I'm not accounting for - like is the framing documented anywhere in the datasheet? I didn't see anything super explicit about inter-byte timing or burst behavior in the docs I have.
 
Also semi-related - at 2Mbps BLE speed over a shorter link (I'm only doing like 200-300m in my test environment right now), should I expect the UART throughput demand to be pretty consistent or is it inherently bursty? Trying to figure out if I should be tuning my DMA config more aggresively or if there's something else going on entirely. Any pointers appreciated.
💬 3 replies👍 0 likes👁 0 views

💬 Want to join this discussion?

Join the Community on RFOXiA Club →

Replies

AdamJuly 25, 2026
@Ashley Anderson yeah this sounds pretty familiar — the UART side is almost always where the headaches are when the BLE link itself is clean.
 
To answer your burstiness question directly: yes, expect bursts. Even at a steady 2Mbps BLE link, the data coming out of the module's UART isn't metered out as a smooth byte stream — it'll tend to come in chunks aligned to BLE connection events and packet boundaries. So you can get short high-rate bursts between quiet gaps, which is exactly the kind of thing that trips up a DMA circular buffer if your consumer thread isn't draining it fast enough between those events.
 
The thing I'd look at first isn't actually the buffer size — 4KB should be plenty if the consumer side keeps up. The more likely culprit is your DMA interrupt or idle-line detection config. If you're only processing the buffer on DMA half/complete callbacks, you might be missing a burst that arrives and partially overwrites unread data before you get to it. The UART idle line interrupt is your friend here — on STM32L4 you can trigger a callback whenever the line goes quiet after a burst, which gives you a much tighter processing window. Combining that with your circular DMA is the standard pattern and it usually kills this class of bug.
 
On the framing side, I'd point you to the GitHub repo — https://github.com/RFOXiA/MultiNav-Pro-Long-Range-BLE-Module-Firmware-STM32WB07 — the firmware source should give you a clearer picture of how the module structures its output than the datasheet prose does. If the framing has any explicit packet delimiters or length fields you can parse on the fly, you'll be able to detect and discard partial packets gracefully rather than seeing them as corruption.
Nicholas FeltJuly 25, 2026
Yeah hit this exact thing on an L4 build a few months back - the fix for me was enabling DMA on the UART RX with a circular buffer and using the idle line interrupt to kick processing, otherwise you're just racing the FIFO at that baud rate and you will lose. Make sure your DMA buffer is big enough to hold at least a full worst-case packet burst or you'll still see drops under heavy throughput.
Stephanie WilliamsJuly 25, 2026
seconding the DMA + idle line interrupt combo, that's exactly what sorted it out for me too on a similar setup - one thing I'd add is double-check your DMA buffer alignment if you're on an L4, I got bit by that before and it was a pain to track down since the drops were super intermittent.

💬 Want to join this discussion?

Join the Community on RFOXiA Club →