FATAL: [bladeRF source] Failed to open bladeRF device *:instance=0

Having issues with the site, hardware, source code, or any other issues?

Moderator: robert.ghilduta

Post Reply
tp5
Posts: 2
Joined: Fri Apr 24, 2020 1:13 pm

FATAL: [bladeRF source] Failed to open bladeRF device *:instance=0

Post by tp5 » Fri Apr 24, 2020 3:39 pm

BladeRF failed to open device

I've been trying to get a bladeRF A9 to work with GNU Radio Companion / gr-osmosdr in a development VM.
The bladeRF-cli utility seems able to connect with the device, but gr-osmosdr always prints this GRC's text window:

gr-osmosdr 0.1.4 (0.1.4) gnuradio 3.7.11
built-in source types: file osmosdr fcd rtl rtl_tcp uhd miri hackrf bladerf rfspace airspy airspyhf soapy redpitaya freesrp
Opening nuand bladeRF with device identifier string: "*:instance=0"

FATAL: [bladeRF source] Failed to open bladeRF device

I've tried following the wiki instructions for PPA install and the troubleshooting wiki, I've tried with and without udev rules added, I've tried with USB 2 and USB 3 speed, I've tried all of the above in both a VMWare Player VM and a Virtualbox VM. The GRC program is just a basic FM reciever as a hello world, which works (if very choppy) with an RTL SDR over a 2.0 hub. I've tried using osmocom_fft instead of GRC. I've tried running both GRC and osmocom_fft as root (a hail mary nuclear option, I know it isn't supposed to be run that way). Nothing seems to work. Any help would be appreciated.

Guest Machine setup:
Fresh install of Virtualbox Ubuntu 18.04 guest on Windows 10 host, with guest additions
4 cores (of host's 8)
8 GB RAM (of host's 16)
3.0 USB enabled on guest
BladeRF A9 is directly connected to a 3.0 physical port on the host.
RTL SDR is connected via a 2.0 USB hub on the host, because I ran out of ports on my host.
bidirectional copy-paste, drag-and-drop, and shared folder enabled
Other settings default

Code: Select all

PPA install:
sudo add-apt-repository ppa:bladerf/bladerf -y
sudo apt update

# add cli
sudo apt install bladerf libbladerf-dev libbladerf-doc -y

# add firmware and fpga images
sudo apt install bladerf-f* -y

# add gnuradio
# xterm added because GRC complains it can't find xterm at startup
sudo apt install gnuradio gr-osmosdr xterm -y

Code: Select all

# test that A9 is detected
bladeRF-cli -e print -e probe -e info

  RX1 Bandwidth:   3000000 Hz (Range: [200000, 56000000])
  RX2 Bandwidth:   3000000 Hz (Range: [200000, 56000000])
  TX1 Bandwidth:   1500000 Hz (Range: [200000, 56000000])
  TX2 Bandwidth:   1500000 Hz (Range: [200000, 56000000])

  RX1 Frequency:  106700000 Hz (Range: [70000000, 6000000000])
  RX2 Frequency:  106700000 Hz (Range: [70000000, 6000000000])
  TX1 Frequency:  923999998 Hz (Range: [47000000, 6000000000])
  TX2 Frequency:  923999998 Hz (Range: [47000000, 6000000000])

  RX1 AGC: Enabled   
  RX2 AGC: Enabled   

  Clock reference: none
  Clock input:     Onboard VCTCXO
  Clock output:    Disabled

  RX1 RSSI: preamble = -63 dB, symbol = -70 dB
  RX2 RSSI: preamble = -64 dB, symbol = -84 dB

  Loopback mode: none

  RX mux: BASEBAND - Baseband samples

  Gain RX1 overall:   60 dB (Range: [-16, 60])
  Gain RX2 overall:   60 dB (Range: [-16, 60])
  Gain TX1 overall:   56 dB (Range: [-23.75, 66])
  Gain TX2 overall:   56 dB (Range: [-23.75, 66])

  RX1 sample rate: 2000000 0/1 (Range: [520834, 61440000])
  RX2 sample rate: 2000000 0/1 (Range: [520834, 61440000])
  TX1 sample rate: 2000000 0/1 (Range: [520834, 61440000])
  TX2 sample rate: 2000000 0/1 (Range: [520834, 61440000])

  Bias Tee (RX1): off
  Bias Tee (RX2): off
  Bias Tee (TX1): off
  Bias Tee (TX2): off

  Current VCTCXO trim: 0x1fd5
  Stored VCTCXO trim:  0x1fd5

  Hardware status:
    Power source:   DC Barrel
    Power monitor:  4.924 V, 0.67 A, 3.24 W
    RF routing:
      TX1: RFIC 0xff ((null) ) => SW 0x0 (OPEN   )
      TX2: RFIC 0xff ((null) ) => SW 0x0 (OPEN   )
      RX1: RFIC 0xff ((null) ) <= SW 0x0 (OPEN   )
      RX2: RFIC 0xff ((null) ) <= SW 0x0 (OPEN   )


  Description:    Nuand bladeRF 2.0 (currently open)
  Backend:        libusb
  Serial:         [deleted by me]
  USB Bus:        2
  USB Address:    2


  Board:                    Nuand bladeRF 2.0 (bladerf2)
  Serial #:                 [deleted by me]
  VCTCXO DAC calibration:   0x1fd5
  FPGA size:                301 KLE
  FPGA loaded:              yes
  Flash size:               128 Mbit
  USB bus:                  2
  USB address:              2
  USB speed:                SuperSpeed
  Backend:                  libusb
  Instance:                 0

This is the test circuit for bladeRF:

osmocom source (device argument: bladerf=0, sample rate: 2M, ch0 freq: 106.7M) -> low pass filter (decimation: 8, gain: 2, sample rate: 2M, cutoff: 200k, transition width: 10k) -> WBFM recieve (quadrature rate: 250k, audio decimation: 1) -> rational resamlper (interpolation: 24, decimation: 250) -> audio sink(sample rate: 24k)

The RTL test circuit is the exact same, except the osmocom source device argument is rtl=0 instead of bladerf=0
It doesn't matter if I have a bladeRF-cli interactive session running with an open bladeRF device in a separate terminal window or not.
It does not matter if I provide the osmocom source device argument as "bladerf=0", "bladerf=[serial number here]", or "bladerf" by itself.
The frequency 106.7MHz is used as a default because it's a heavy metal station where I live.

The bladeRF cli does not fail to open the device in interactive mode, it verifies "currently open" status with the probe command after opening, I've tested it with the following arguments:
open <no args>
open *:instance=0
open *:serial=[serial number from info command]
open *:device=2:2

Other bladeRF-cli interactive commands, like changing sample rates and rx frequencies works, as does loading a fresh FPGA image, flashing the autoloader with a fresh FPGA image, and flashing a new firmware for the controller. GRC / osmocom still are not able to open the device after reflashing every image on the A9.

I get the same error trying to run osmocom_fft with bladerf, but the rtl works fine:

osmocom_fft -f 106.7e6 -s 2e6 --peak-hold -a rtl=0

Code: Select all

linux; GNU C++ version 7.3.0; Boost_106501; UHD_003.010.003.000-0-unknown

gr-osmosdr 0.1.4 (0.1.4) gnuradio 3.7.11
built-in source types: file osmosdr fcd rtl rtl_tcp uhd miri hackrf bladerf rfspace airspy airspyhf soapy redpitaya freesrp 
Using device #0 Generic RTL2832U SN: 77771111153705700
Found Rafael Micro R820T tuner
[R82XX] PLL not locked!
Exact sample rate is: 2000000.052982 Hz
[R82XX] PLL not locked!
osmocom_fft -f 106.7e6 -s 2e6 --peak-hold -a bladerf=0

Code: Select all

linux; GNU C++ version 7.3.0; Boost_106501; UHD_003.010.003.000-0-unknown

gr-osmosdr 0.1.4 (0.1.4) gnuradio 3.7.11
built-in source types: file osmosdr fcd rtl rtl_tcp uhd miri hackrf bladerf rfspace airspy airspyhf soapy redpitaya freesrp 
Opening nuand bladeRF with device identifier string: "*:instance=0"

FATAL: [bladeRF source] Failed to open bladeRF device *:instance=0

Trying to fill up 1 missing channel(s) with null source(s).
This is being done to prevent the application from crashing
due to gnuradio bug #528.

Source has no sample rates (wrong device arguments?).
I don't think it's a permissions / group issue, as I added the udevs and rebooted.

Code: Select all

groups
sdr adm cdrom sudo dip plugdev lpadmin sambashare

Code: Select all

cat /etc/udev/rules.d/88-nuand-bladerf2.rules.in 
# Nuand bladeRF 2.0 micro
ATTR{idVendor}=="2cf0", ATTR{idProduct}=="5250", MODE="660", GROUP="plugdev"

Post Reply