BladeRF 2.0 Micro full duplex in GNURadio

Discussions related to embedded firmware, driver, and user mode application software development
Post Reply
yakovdk
Posts: 1
Joined: Tue Nov 04, 2025 1:33 pm

BladeRF 2.0 Micro full duplex in GNURadio

Post by yakovdk »

I'm using the SoapySDR BladeRF source/sink in a GNURadio flowgraph. Starting the flowgraph, it opens the sink just fine, but exits with an error about permission denied and being unable to open the device for the source:

Code: Select all

[INFO] bladerf_open_with_devinfo()
[INFO] bladerf_get_serial() = 51768470750247babcf0ebf45561ad1f
[INFO] setSampleRate(Rx, 0, 4.000000 MHz), actual = 4.000000 MHz
[INFO] setSampleRate(Tx, 0, 4.000000 MHz), actual = 4.000000 MHz
[INFO] setSampleRate(Rx, 0, 0.768000 MHz), actual = 0.767999 MHz
[WARNING @ host/libraries/libbladeRF/src/backend/usb/libusb.c:345] Found a bladeRF via VID/PID, but could not open it due to insufficient permissions, or because the device is already open.
[INFO] bladerf_open_with_devinfo()
[WARNING @ host/libraries/libbladeRF/src/backend/usb/libusb.c:530] Found a bladeRF via VID/PID, but could not open it due to insufficient permissions.
[1m[31m[ERROR] bladerf_open_with_devinfo() returned -7 - No device(s) available[0m
Traceback (most recent call last):
  File "C:\Users\N5HXR\Documents\gnuradio\signal_source_gnuradio.py", line 226, in <module>
    main()
  File "C:\Users\N5HXR\Documents\gnuradio\signal_source_gnuradio.py", line 204, in main
    tb = top_block_cls()
         ^^^^^^^^^^^^^^^
  File "C:\Users\N5HXR\Documents\gnuradio\signal_source_gnuradio.py", line 96, in __init__
    self.soapy_bladerf_sink_0 = soapy.sink(dev, "fc32", 1, 'driver=bladerf,serial=51768470750247babcf0ebf45561ad1f',
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: bladerf_open_with_devinfo() failed -7 - No device(s) available
[INFO] bladerf_close()
What is the magic trick to get GNURadio to use the BladeRF in full duplex (in Windows here)?
funkotha
Posts: 1
Joined: Mon Dec 22, 2025 9:55 pm

Re: BladeRF 2.0 Micro full duplex in GNURadio

Post by funkotha »

yakovdk wrote: Tue Nov 04, 2025 1:40 pm I'm using the SoapySDR BladeRF source/sink in a GNURadio flowgraph. Starting the flowgraph, it opens the sink just fine, but exits with an error about permission denied and being unable to open the device for the source:
geometry dash

Code: Select all

[INFO] bladerf_open_with_devinfo()
[INFO] bladerf_get_serial() = 51768470750247babcf0ebf45561ad1f
[INFO] setSampleRate(Rx, 0, 4.000000 MHz), actual = 4.000000 MHz
[INFO] setSampleRate(Tx, 0, 4.000000 MHz), actual = 4.000000 MHz
[INFO] setSampleRate(Rx, 0, 0.768000 MHz), actual = 0.767999 MHz
[WARNING @ host/libraries/libbladeRF/src/backend/usb/libusb.c:345] Found a bladeRF via VID/PID, but could not open it due to insufficient permissions, or because the device is already open.
[INFO] bladerf_open_with_devinfo()
[WARNING @ host/libraries/libbladeRF/src/backend/usb/libusb.c:530] Found a bladeRF via VID/PID, but could not open it due to insufficient permissions.
[1m[31m[ERROR] bladerf_open_with_devinfo() returned -7 - No device(s) available[0m
Traceback (most recent call last):
  File "C:\Users\N5HXR\Documents\gnuradio\signal_source_gnuradio.py", line 226, in <module>
    main()
  File "C:\Users\N5HXR\Documents\gnuradio\signal_source_gnuradio.py", line 204, in main
    tb = top_block_cls()
         ^^^^^^^^^^^^^^^
  File "C:\Users\N5HXR\Documents\gnuradio\signal_source_gnuradio.py", line 96, in __init__
    self.soapy_bladerf_sink_0 = soapy.sink(dev, "fc32", 1, 'driver=bladerf,serial=51768470750247babcf0ebf45561ad1f',
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: bladerf_open_with_devinfo() failed -7 - No device(s) available
[INFO] bladerf_close()
What is the magic trick to get GNURadio to use the BladeRF in full duplex (in Windows here)?
If using two separate Source/Sink blocks still causes conflicts, you can create a small Python script (outside of GRC) to initialize a single Soapy device object, and then assign the Rx and Tx streams to that same object.

On Windows, BladeRF requires the libusb-win32 or WinUSB driver.
Open the Zadig tool.
Select

Code: Select all

Options
->

Code: Select all

List All Devices
Select BladeRF 2.0 Micro.
Ensure that the installed driver is libusb-win32 (v1.2.6.0). Some versions of GNURadio on Windows are extremely picky with WinUSB but work very smoothly with libusb-win32.
eric123456
Posts: 1
Joined: Wed Apr 29, 2026 6:17 pm

Re: BladeRF 2.0 Micro full duplex in GNURadio

Post by eric123456 »

yakovdk wrote: Tue Nov 04, 2025 1:40 pm I'm using the SoapySDR BladeRF source/sink in a GNURadio flowgraph. Starting md to word converter the flowgraph, it opens the sink just fine, but exits with an error about permission denied and being unable to open the device for the source:
hd photo converter

Code: Select all

[INFO] bladerf_open_with_devinfo()
[INFO] bladerf_get_serial() = 51768470750247babcf0ebf45561ad1f
[INFO] setSampleRate(Rx, 0, 4.000000 MHz), actual = 4.000000 MHz
[INFO] setSampleRate(Tx, 0, 4.000000 MHz), actual = 4.000000 MHz
[INFO] setSampleRate(Rx, 0, 0.768000 MHz), actual = 0.767999 MHz
[WARNING @ host/libraries/libbladeRF/src/backend/usb/libusb.c:345] Found a bladeRF via VID/PID, but could not open it due to insufficient permissions, or because the device is already open.
[INFO] bladerf_open_with_devinfo()
[WARNING @ host/libraries/libbladeRF/src/backend/usb/libusb.c:530] Found a bladeRF via VID/PID, but could not open it due to insufficient permissions.
[1m[31m[ERROR] bladerf_open_with_devinfo() returned -7 - No device(s) available[0m
Traceback (most recent call last):
  File "C:\Users\N5HXR\Documents\gnuradio\signal_source_gnuradio.py", line 226, in <module>
    main()
  File "C:\Users\N5HXR\Documents\gnuradio\signal_source_gnuradio.py", line 204, in main
    tb = top_block_cls()
         ^^^^^^^^^^^^^^^
  File "C:\Users\N5HXR\Documents\gnuradio\signal_source_gnuradio.py", line 96, in __init__
    self.soapy_bladerf_sink_0 = soapy.sink(dev, "fc32", 1, 'driver=bladerf,serial=51768470750247babcf0ebf45561ad1f',
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: bladerf_open_with_devinfo() failed -7 - No device(s) available
[INFO] bladerf_close()
AI Text Cleaner What is the image to pixel art magic trick to get GNURadio to use the BladeRF in full duplex (in Windows here)?
It's great to see more in-depth discussions about the bladeRF 2.0 Micro's full duplex capabilities within GNURadio.
Post Reply