Novena-RF Driver

Democratising Wireless Innovation
Jump to navigation Jump to search

About

The Novena-RF radio module is supported through a permissively licensed driver, available via GitHub. This document describes the driver and its installation.

Driver properties

Configurable sample rates

  • Maximum rate: 15.36 Msps
  • Decimations: 1, 2, 4, 8, 16
  • Interpolations: 1, 2, 4, 8, 16

Selectable TX antenna switches

  • "HB" - High band output (1500 - 3800 MHz)
  • "BB" - Broad band output

The names for these switches can be used in the setAntenna() API call.

Selectable RX antenna switches

  • "LB" - Low band input (300 - 2200 MHz)
  • "HB" - High band input (1500 - 3800MHz)
  • "BB" - Broadband input

The names for these switches can be used in the setAntenna() API call.

TX and RX Baseband filters

  • 1.5 MHz to 28.0 MHz

Adjustable transmit gain

  • Overall: 0.0 to 56.0 dB
  • "VGA1": -35.0 to -4.0 dB
  • "VGA2": 0.0 to 25.0 dB

The names for these gain elements can be used in the setGain() API call.

Adjustable receive gain

  • Overall: 0.0 to 36.0 dB
  • "VGA2": 0.0 to 30.0 dB
  • "VGA1": 0.0 to 30.0 dB
  • "LNA": 0.0 to 6.0 dB

The names for these gain elements can be used in the setGain() API call.

Driver installations

The following instructions allow one to build the driver for the Novena-RF. The instructions are intended for building locally on the device.

Dependencies

Install the dependencies for the build and installation process, and fix a potential build issue, with the following two commands:

sudo apt-get install cmake g++ libusb-1.0-0-dev git
sudo apt-get remove libi2c-dev #fixes build issue

Build the host driver

SoapySDR is a modular library and API for SDR devices. First install the SoapySDR library. Then build and install the Novena RF support module:

git clone https://github.com/myriadrf/Novena-RF.git
cd Novena-RF/driver/host
mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig

Set-up permissions and resources

There is a compiled FPGA image and kernel module in the binary/ folder. To install the files and to set the system permissions:

cd Novena-RF/driver/binary
sudo ./prepare_novena_rf.sh

Note: this script must be run after each reboot to set permissions and to load the module.

Testing the driver

Check that the installation detects NovenaRF support:

SoapySDRUtil --make="driver=novena"

Supported platforms

Pothos

Use the NovenaRF through Pothos SDR source and sink blocks which support advanced timed streaming and burst controls. Install SoapySDR first before following the Pothos build guide.

osmo-trx

There is a branch of osmo-trx with novena support available via GitHub.

Advanced

Building the FPGA image

Build the FPGA image with Xilinx ISE 14.*. The project is fpga/novena_rf/novena_rf.xise

Building the kernel module

This is an out of tree kernel module, it requires a cross ARM toolchain and a build of the Linux kernel. Download one of the available ARM toolchains.

Cloning the Linux kernel branch for Novena
git clone https://github.com/xobs/novena-linux.git
cd novena-linux
git checkout v3.19-novena
Building the kernel

Instructions for building the kernel, taken from Boundary Devices:

export PATH=/opt/toolchains/gcc-linaro-arm-linux-gnueabi-2012.04-20120426_linux/bin/:$PATH
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make novena_defconfig
make zImage modules
Building the kernel module
cd kernel
make ARCH=arm KDIR=path/to/novena-linux
ls novena_rf.ko #output

Licensing

The FPGA RTL, kernel source, and host wrapper are licensed under the Apache License, Version 2.0. However, please note that this does not extend to any files provided with the Xilinx design tools and see the relevant files for the associated terms and conditions.

See also