Nuand troubleshooting - loading firmware

Having issues with the site, hardware, source code, or any other issues?
Post Reply
Shadow117
Posts: 15
Joined: Fri May 06, 2016 7:11 am

Nuand troubleshooting - loading firmware

Post by Shadow117 »

Could someone please explain to me what is going on in these instructions. I am not familiar with a .rbf file type, and what it is used for:
Linux or OSX

The directory specified by the BLADERF_SEARCH_DIR environment variable (As of 2014-12-10)
The current working directory (As of 2014-12-10)
The directory containing the program being executed. (As of 2014-12-10)
your_home_directory/.config/Nuand/bladeRF/ (libbladeRF v0.16.0 +)
your_home_directory/.Nuand/bladeRF/ (libbladeRF v0.16.0 +)
${CMAKE_INSTALL_PREFIX}/share/Nuand/bladeRF/ (libbladeRF v1.4.2 +)
${CMAKE_INSTALL_PREFIX}/etc/Nuand/bladeRF/ (libbladeRF v1.4.2 +)
/usr/share/Nuand/bladeRF/ (libbladeRF v0.16.0 +)
/etc/Nuand/bladeRF/ (libbladeRF v0.16.0 +)

The user's home directory is determined via $HOME, and then /etc/passwd (via getpwuid()) if $HOME is not valid.

Note that the last two entries in the list may be duplicates of the two that precede them. This is intentional, and is intended to provide reverse compatibility and avoid breaking packaging scripts that were forced to install files in to /usr/share/Nuand/bladeRF, even if a different ${CMAKE_INSTALL_PREFIX} was used.
jynik
Posts: 455
Joined: Thu Jun 06, 2013 8:15 pm

Re: Nuand troubleshooting - loading firmware

Post by jynik »

The Altera Cyclone IV device on the bladeRF is a Field-Programmable Gate Array.

The RBF file, which we call a "bitstream" configures this programmable device to provide a variety of functionality on the bladeRF including, but not limiting to:
  • Moving samples between the LMS6002D and the FX3 USB 3 Peripheral Controller
  • Applying corrections (e.g., IQ Gain and Phase)
  • Timestamping samples
  • Scheduling interrupts for "scheduled retune" functionality.
Generally, we use "firmware" to refer to the ARM code running on the Cypress FX3, whereas we call the FPGA configuration a "bitstream."

In short, the FPGA needs to be configured to use the bladeRF. In the past, we required that users manually loaded this via the bladeRF-cli program:

From the command line
bladeRF-cli -l <path_to_the_rbf_file_goes_here>

From within the bladeRF-cli
load fpga <path_to_the_rbf_file_goes_here>

However, to make things a bit easier the libbladeRF library now looks for these files, named either hostedx40.rbf or hostedx115.rbf, in a few locations when it has detected that the bladeRF's FPGA is not configured. If it finds them, it configures it for you. What you have quoted are the list of directories libbladeRF will search while looking for the FPGA bitstream.

There are also some programs, such as YateBTS that require specific FPGA versions -- YateBTS will take care of loading an FPGA so you don't have to.
Post Reply