BladeRF: Difference between revisions

No edit summary
No edit summary
 
(12 intermediate revisions by the same user not shown)
Line 15: Line 15:
|}
|}


The underlying FPGAs are not fully utilized by the radio software itself, and can thus be extended by the user.
The underlying FPGAs are not fully utilized by the radio software itself, and can thus be extended by the user. Additional products include the [https://www.nuand.com/product/hf-vhf-transverter/ XB-200] LF/MF/HF/VHF transverter for lower-range work, the [https://www.nuand.com/product/amplifier/ XB-300] amplifier/LNA, and the [https://www.nuand.com/product/xb-gpio-gpio-expansion-board/ XB-100] GPIO expansion board. These only work with the x115/x40.
 
The [https://github.com/Nuand/bladeRF libbladeRF] repository contains the sources necessary for working with bladeRF. Clone this repository with the <tt>--recursive</tt> option to acquire submodules. FPGA blobs can be acquired at [http://www.nuand.com/fpga_images/ Nuand's site] (copy them to <tt>/usr/local/etc/Nuand/bladeRF</tt> to have them autoloaded). No kernel driver is necessary; libbladeRF works directly with USB devices using libusb. The underlying [https://github.com/analogdevicesinc/libad9361-iio libad9361] from Analog Devices can be used to manipulate the AD9361 aboard the bladeRF 2.0.
 
==Preparing the FPGA==
Upon attaching a new bladeRF, only one LED will come on, and the <tt>bladeRF-cli</tt> REPL will confirm that no firmware is present:
<pre>
bladeRF> version
 
  bladeRF-cli version:        1.7.1-git-896d2431
  libbladeRF version:        2.2.0-git-896d2431
 
  Firmware version:          2.3.2
  FPGA version:              Unknown (FPGA not loaded)
 
bladeRF>
</pre>
Load the appropriate FPGA bitstream with <tt>load fpga</tt> or <tt>bladeRF-cli -l</tt>:
<pre>
bladeRF> load fpga hostedxA4-latest.rbf
 
  Loading fpga from hostedxA4-latest.rbf...
  Done.
 
bladeRF>
</pre>
The load will require several seconds. Once done, all LEDs will come on, and the <tt>info</tt> command will function:
<pre>
bladeRF> version
 
  bladeRF-cli version:        1.7.1-git-896d2431
  libbladeRF version:        2.2.0-git-896d2431
 
  Firmware version:          2.3.2
  FPGA version:              0.10.2 (configured by USB host)
 
bladeRF> info
 
  Board:                    Nuand bladeRF 2.0 (bladerf2)
  Serial #:                ****** 128-bit hex ******
  VCTCXO DAC calibration:  0x1fff
  FPGA size:                49 KLE
  FPGA loaded:              yes
  Flash size:              32 Mbit
  USB bus:                  2
  USB address:              2
  USB speed:                SuperSpeed
  Backend:                  libusb
  Instance:                0
 
bladeRF>
</pre>
As noted above, the FPGA bitstreams can be downloaded from Nuand's website. On Debian-derived machines, they're also available via e.g. the <tt>bladerf-fpga-hostedxa4</tt> package. FX3 USB controller bitstreams are likewise available from Nuand, or from the Debian package <tt>bladerf-firmware-fx3</tt>. The FPGA must be loaded each time the device is powered up, but this can be [https://github.com/Nuand/bladeRF/wiki/FPGA-Autoloading performed automatically] by libbladeRF.
 
==Using the hardware==
<pre>
bladeRF> print
 
  RX1 Bandwidth:  18000000 Hz (Range: [200000, 56000000])
  RX2 Bandwidth:  18000000 Hz (Range: [200000, 56000000])
  TX1 Bandwidth:  18000000 Hz (Range: [200000, 56000000])
  TX2 Bandwidth:  18000000 Hz (Range: [200000, 56000000])
 
  RX1 Frequency: 2400000000 Hz (Range: [70000000, 6000000000])
  RX2 Frequency: 2400000000 Hz (Range: [70000000, 6000000000])
  TX1 Frequency: 2400000000 Hz (Range: [47000000, 6000000000])
  TX2 Frequency: 2400000000 Hz (Range: [47000000, 6000000000])
 
  Tuning Mode: Host
 
  RX1 AGC: Disabled 
  RX2 AGC: Disabled 
 
  Clock reference: none
  Clock input:    Onboard VCTCXO
  Clock output:    Disabled
 
  RX1 RSSI: preamble = 0 dB, symbol = -51 dB
  RX2 RSSI: preamble = 0 dB, symbol = -51 dB
 
  Loopback mode: none
 
  RX mux: BASEBAND - Baseband samples
 
  RX FIR Filter: normal (default)
  TX FIR Filter: bypass (default)
 
  Gain RX1 overall:  60 dB (Range: [-15, 60])
              full:  71 dB (Range: [-4, 71])
  Gain RX2 overall:  60 dB (Range: [-15, 60])
              full:  71 dB (Range: [-4, 71])
  Gain TX1 overall:  56 dB (Range: [-23.75, 66])
              dsa:  -90 dB (Range: [-89.75, 0])
  Gain TX2 overall:  56 dB (Range: [-23.75, 66])
              dsa:  -90 dB (Range: [-89.75, 0])
 
  RX1 sample rate: 30720000 0/1 (Range: [520834, 61440000])
  RX2 sample rate: 30720000 0/1 (Range: [520834, 61440000])
  TX1 sample rate: 30720000 0/1 (Range: [520834, 61440000])
  TX2 sample rate: 30720000 0/1 (Range: [520834, 61440000])
 
  Bias Tee (RX1): off
  Bias Tee (RX2): off
  Bias Tee (TX1): off
  Bias Tee (TX2): off
 
  Current VCTCXO trim: 0x1fff
  Stored VCTCXO trim:  0x1fff
 
  Hardware status:
    RFIC status:
      Tuning Mode:  Host
      Temperature:  26.3 degrees C
      CTRL_OUT:    0xf8 (0x035=0x00, 0x036=0xff)
    Power source:  USB Bus
    Power monitor:  4.772 V, 0.55 A, 2.62 W
    RF routing:
      RX1: RFIC 0x0 (A_BAL  ) <= SW 0x0 (OPEN  )
      RX2: RFIC 0x0 (A_BAL  ) <= SW 0x0 (OPEN  )
      TX1: RFIC 0x0 (TXA    ) => SW 0x0 (OPEN  )
      TX2: RFIC 0x0 (TXA    ) => SW 0x0 (OPEN  )
 
bladeRF>
</pre>
 
==Tips==
* With gqrx as of 2019-08, I couldn't initialize the BladeRF until I deleted <tt>~/.config/gqrx</tt>, even when selecting "initialize configuration file". It did finally work.
 
==Further Reading==
* My [[SDR]] page