2025.10 Release

The tagged 2025.10 release marks a major upgrade to throughput, stability, and streaming capabilities of the bladeRF 2.0 micro. The patch sets have existed in the repository for a while but the changes just finally passed our extensive validation. The changes were planed to maintain backward compatibility with existing applications. Lastly, Windows support now features native Windows API locking primitives; the Windows installer is available for download.

Optimizing Throughput in libbladeRF 2.6.0

The latest libbladeRF 2.6.0 release focuses on solving one of the most common challenges in SDR applications: maximizing data throughput. In this post, we’ll explore the USB optimization techniques implemented and how they can benefit your applications.

Understanding the USB Bottleneck

USB data transfer has traditionally been a limiting factor in high-speed SDR applications. In previous libbladeRF versions, we used 2048-byte (512 SC16 samples) DMA buffers, which worked well for many applications but created overhead that limited maximum throughput.

Our testing identified that the ratio between buffer size and USB transaction overhead was suboptimal, leading to theoretical limits of around 228MB/s on USB SuperSpeed connections – well below what the interface should support.

The Optimization Approach

After extensive profiling, we identified an opportunity to significantly improve throughput by quadrupling the DMA buffer size to 8192 bytes (2048 SC16 samples). This change reduces the relative overhead of each USB transaction, allowing more efficient use of the available bandwidth.

The results speak for themselves: theoretical USB SuperSpeed throughput increased from 228MB/s to 356MB/s – a 56% improvement that benefits all operations regardless of which sample format you’re using.

Additional USB Pipeline Improvements

Beyond the buffer size changes, we’ve implemented several complementary optimizations:

  • RX/TX DMA request prioritization has been refined to prevent TX deadlocks that could occur under heavy load
  • FIFO utilization has been optimized for more reliable data handling, leveraging more of the available buffer depth
  • Timing issues in the FIFO operations have been fixed, particularly benefiting x40 and x115 builds

Practical Impact for Developers

These optimizations require minimal code changes. The key difference is that buffer sizes must now be multiples of 8192 bytes (2048 SC16 samples). All buffer parameters in the API now use bytes instead of sample counts for greater consistency.

The throughput improvements are most noticeable in high-bandwidth applications such as:

  • Wideband signal recording
  • Multiple-channel MIMO configurations
  • High sample rate applications above 40 MSPS

Complementary Format Optimization

For applications facing bandwidth constraints, we’ve also introduced a new sample format: BLADERF_FORMAT_SC16_Q11_PACKED, which provides 33.3% more efficient bandwidth utilization by using a 12-bit representation instead of 16-bit. When combined with the USB optimizations, this can further extend the effective sample rates achievable in bandwidth-limited scenarios.

Getting Started

The new buffer size requirements are transparent to most applications that use the synchronous interface, as libbladeRF handles the alignment internally. However, applications using the asynchronous interface will need to ensure their buffers meet the new size requirements.

For examples demonstrating these optimizations, refer to the updated code in the libbladeRF repository. The bladeRF-cli tool has also been updated to take advantage of the new throughput capabilities.

Download libbladeRF 2.6.0 from the GitHub repository.