BladeRF: Difference between revisions

No edit summary
 
(7 intermediate revisions by the same user not shown)
Line 17: Line 17:
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 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]. No kernel driver is necessary; libbladeRF works directly with USB devices using libusb.
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==
==Preparing the FPGA==
Line 54: Line 54:


   Board:                    Nuand bladeRF 2.0 (bladerf2)
   Board:                    Nuand bladeRF 2.0 (bladerf2)
   Serial #:                bd2d6ad6e48f4403bf3768ab63ed88a4
   Serial #:                ****** 128-bit hex ******
   VCTCXO DAC calibration:  0x1fff
   VCTCXO DAC calibration:  0x1fff
   FPGA size:                49 KLE
   FPGA size:                49 KLE
Line 67: Line 67:
bladeRF>  
bladeRF>  
</pre>
</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