The 2016.06 release is available on GitHub.
Major additions in this release include…
libbladeRF API calls to configure the SMB clock port as an input or output
These API calls provide the ability to programmatically configure the use of the J62 SMB clock connection. This allows one device to supply its reference clock for other devices, which yields sampling using a common clock.
Previously, this functionality was only implemented in the bladeRF-cli via the
mimo command. While still present, the
mimo command has been superseded in the bladeRF-cli with the
set smb_mode and
print smb_mode commands, which utilize these added libbladeRF API functions. Running
set smb_mode with no arguments will print the associated usage text.
Synchronization trigger support
Thanks to the excellent contributions of Jan Dohl, the FPGA and libbladeRF updates in this release introduce support for multi-device sampling synchronization. This section of the libbladeRF API describes this functionality, and a simple example of bladeRF-cli usage of this functionality is presented here.
This functionality operates by gating sample insertion into the FPGA’s RX and TX FIFOs, pending the delivery of a trigger signal on pin 4 of the J71 Mini Expansion header. One device is configured to output (“fire”) this trigger signal, while other connected devices receive this trigger. These triggers are handled per-module (i.e., RX, TX), meaning that a single device’s transmission and reception can be synchronized as well.
Once the trigger is “fired” on the master device, the samples are ungated and all devices should be synchronized within +/-1 sample. Although the devices will not be phase-coherent (due to the independent mixer PLLs), the phase offsets between each device should remain fixed.
This functionality should allow for some fun and interesting work. I’m personally excited to see this go to use in projects such as David Lonard’s 3 bladeRF Astronomical Interferometer, or perhaps a multi-device variant of Robert’s FFT stitching and frequency sweeping modifications to gqrx/gr-osmosdr used to achieve wider spectrum viewing.
This release includes libbladeRF and bladeRF-cli support for the XB-300. While this has been in the mainline code-base for some time now, Windows users can now easily leverage this functionality out-of-the-box from the latest Windows installer.
Some important notes…
As of FX3 firmware v2.0.0, the bladeRF will utilize the USB
PID=5246. This requires libbladeRF v1.16.0 or later. (This release includes libbladeRF v1.7.2.)
If you’re using third party software (e.g., SDR Console) that ships its own bladeRF.dll or a libbladeRF from your Linux distribution’s package repository and cannot detect the bladeRF, it may be the case that you’ve flashed v2.0.0 or later firmware, but are using an older libbladeRF version. If you ever find yourself in this situation, don’t fret! You can use the bootloader mode to flash firmware v1.9.1. For convenience, the latest Windows installer provides v2.0.0 and v1.9.1 firmware. It is recommended to select the v1.9.1 firmware if compatibility with older libbladeRF versions is required.
We’ve heard about and identified some CyUSB3 driver issues during transmit operations that we haven’t previously seen. We’ll be investigating this and hopefully following up with some fixes in a future release. If you’re currently using the CyUSB3 driver in Windows and experience timeouts or crashes during transmissions, it is recommended that you switch to the libusb (WinUSB) driver via the latest installer or Zadig.
– Jon (jynik)