Wednesday, September 11, 2013

bladeRF, too many options for building the software?

To control the bladeRF-board you have to deal with two  areas:
·         Outside of the bladeRF-board is a system with Windows or linux
·         Inside the bladeRF-board there are two sub-systems:
o   The FX3 Cypress USB subsystem to be programmed in C
there is a non-volatile flash-memory for an initial program
o   The FPGA subsystem to be programmed in VHDL or Verilog
the FPGA is empty at startup, so has to be loaded to perform its virtual hardware function

To use the bladeRF you have to boot the whole system:
1.       The outside system: a laptop, a PC or perhaps a Raspberry Pi connected by USB3 to the bladeRF
2.       The bladeRF has a flash memory with the software for the FX3 USB subsystem
3.       The bladeRF gets a new FX3 program
4.       The bladeRF gets a fresh FPGA image
5.       From now on the bladeRF is able to communicate with the controlling program: bladerf.cli
the bladeRF command line interpreter

·         The bladeRF-board has a JTAG-interface-connector. So it is possible to program the FPGA more or less independent form the remaining hardware.
·         With a suitable program in the FX3-USB-Cypres-chip, the programming of the FPGA can be done without the JTAG-interface, directly from the FX3-chip.
·         On the outside of the board is the bladeRF.cli. This program takes care of loading the FX3-program and the program for the FPGA.

‘Everybody’ seems to use linux for the outside system. So, may be it is better for me to follow the crowd if I want support and results.

To connect the bladeRF to a Windows system there are in fact two possibilities:
1.       Use the Cypress FX3 system with the wizard that generates the INF-file. From then on you can use the FX3-Cypres diagnostic tools to load programs
2.       Use the libusb-system. There seem to be a few flavors of that. Anyway version 0.1 or 1.0. The Zadig software seems to be a keystone for success.

Whether linux or Windows the bladeRF-board can be controlled by a program written in java, python or C. The bladeRF.cli is written in C.

There is also gnu radio, either in Windows or in linux. There is a module, OsmoSDR, that can be used to connect a bladeRF-board.

The above ramblings are sort of start-point-issues.

Now about my dream, my ultimate goal, my ultimate process:

I want to understand GNSS (Global Navigation Satellite Systems) by building a GPS-receiver. Perhaps also a GPS-simulator or a GPS-spoofer. In the past I did some experiments, programming in java, with a file with a few minutes GPS-signal from a wideband receiver. I built a function to read the samples. I built a correlator and could ‘see’ the satellites. I built a phase-locked-loop and got stuck in this very PLL. I did not manage to get the loop stable, but did  manage to recover some almanac-data.

For me, it is not the end-result that counts, but the process itself. By doing, experimenting, programming, testing, debugging and reading I get a deep understanding of GNSS’s. Furthermore a system containing an RF-subsystem, an FPGA and an FX3—USB-system controlled by a program on a laptop is really fascinating. A high level language like python, the C-program in the FX3-chip and VHDL on an FPGA. This is a piece of hardware that should be able to do anything you can imagine. Cognitive radio for example. Combined with an inertial system and Kalman filtering one can do miracles with GNSS. The boys and girls of Pentex have the real stuff! But the bladeRF-board is such a marvelous piece of hardware!

I am very confused which route to take:
·         I have a laptop, an old but usable one, I could replace Windows and put genuine Ubuntu on it.
·         I might try to solve the  Windows gnuradio opengl problem and go for the gnuradio solution
·         I might stubbornly stay with Windows and python
·         I might try to go on with Ubuntu in VMware under Windows 7 professional (64 bit)

So far I tried almost everything a little bit, but I don’t yet know which route to take!

a painting, a reproduction, whatever?
This beautiful picture we found in VilaCha, Portugal.


  1. Very nice write up on the BladeRF. Thanks. Very interested in which platform you discover to be the most beneficial.

  2. Since you mention the JTAG interface. Which cable would you suggest for connecting the FPGA JTAG to the host computer over USB. I found this USB blaster cable, but its 300 bucks