Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiple Blades must be loaded in a specific order #59

Open
Heshyo opened this issue Oct 5, 2023 · 0 comments
Open

Multiple Blades must be loaded in a specific order #59

Heshyo opened this issue Oct 5, 2023 · 0 comments

Comments

@Heshyo
Copy link

Heshyo commented Oct 5, 2023

I have 2 Blades v2. When using Soapy (tested on Windows), I must load them in a specific order, else I am not able to connect to the 2nd one: [ERROR] bladerf_open_with_devinfo() returned -7 - No device(s) available

It seems that the order is the reverse order of what is displayed when listing all devices. So if SoapySDRDevice_enumerate displays device A then device B, I have to load first device B then device A.

This issue doesn't seem to happen when accessing libbladerf directly.

Test with bladerf-cli

In 2 terminals, run bladerf-cli -d "*:serial=A" -i and bladerf-cli -d "*:serial=B" -i.

No matter if I connect to A or B first, in both cases it works.

If I connect to A before B, I do get [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. when connecting to B, but I can still use both devices.

Test with SoapyBladeRF

I run a simple program that loads both Blades using SoapySDRDevice_make with the driver and serial number.

If I connect to B before A (correct order), I get [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. when connecting to A, but I can still use both. Note that with bladerf-cli I don't get any warning when connecting in that order.

When loading A then B (incorrect order), I get the following when connecting to B:

[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.
[ERROR] bladerf_open_with_devinfo() returned -7 - No device(s) available

If I try to enumerate through the devices at this point, I get:

[INFO] [UHD] Win32; Microsoft Visual C++ version 14.0; Boost_106700; UHD_3.13.1.0-3-g711ec8a3
[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.
backend=libusb, device=0x02:0x04, driver=bladerf, instance=0, label=BladeRF #0 [ANY], serial=ANY
backend=libusb, device=0x02:0x03, driver=bladerf, instance=1, label=BladeRF #1 [B], serial=B

The serial number for device B is properly shown, but for device A I just see ANY.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant