This Document mainly emphasizes on interfacing Software Defined Radio (SDR) with the NVIDIA Nano Jetson Board by guiding you with a step by step instruction for building, installing the open-source tool chain for the USRP (UHD and GNU Radio) in Ubuntu 18.04 Linux version. Ubuntu 18.04 has been already flashed on to the NVIDIA Board (Refer). At the end of the document, we will create our own FM station and will receive signals on the receiver end (Mobile device).
The document is divided in three sections:
- Installing UHD and Gnu radio in Ubuntu 18.04 operating system which is already flashed on NVIDIA board.
- Interfacing USRP B100 via USB 2.0 with THE NVIDIA board
- Implementing FM Transmission.
Installation of UHD and Gnu radio :
Connect the board with the display, Keyboard, mouse, power supply (DC barrel jack is preferable for 5 Amp current supply) and Wi-Fi access for installing the packages. Before building UHD and GNU Radio, you need to make sure that all the dependencies are first installed. However, before installing any dependencies, you should first make sure that all the packages that are already installed on your system are up-to-date. You can do this from a GUI, or from the command-line, as shown below.
On Ubuntu systems, run:
sudo apt-get update
On Ubuntu 18.04 systems, run:
sudo apt-get -y install git swig cmake doxygen build-essential libboost-all-dev libtool libusb-1.0-0 libusb-1.0-0-dev libudev-dev libncurses5-dev libfftw3-bin libfftw3-dev libfftw3-doc libcppunit-1.14-0 libcppunit-dev libcppunit-doc ncurses-bin cpufrequtils python-numpy python-numpy-doc python-numpy-dbg python-scipy python-docutils qt4-bin-dbg qt4-default qt4-doc libqt4-dev libqt4-dev-bin python-qt4 python-qt4-dbg python-qt4-dev python-qt4-doc python-qt4-doc libqwt6abi1 libfftw3-bin libfftw3-dev libfftw3-doc ncurses-bin libncurses5 libncurses5-dev libncurses5-dbg libfontconfig1-dev libxrender-dev libpulse-dev swig g++ automake autoconf libtool python-dev libfftw3-dev libcppunit-dev libboost-all-dev libusb-dev libusb-1.0-0-dev fort77 libsdl1.2-dev python-wxgtk3.0 git libqt4-dev python-numpy ccache python-opengl libgsl-dev python-cheetah python-mako python-lxml doxygen qt4-default qt4-dev-tools libusb-1.0-0-dev libqwtplot3d-qt5-dev pyqt4-dev-tools python-qwt5-qt4 cmake git wget libxi-dev gtk2-engines-pixbuf r-base-dev python-tk liborc-0.4-0 liborc-0.4-dev libasound2-dev python-gtk2 libzmq3-dev libzmq5 python-requests python-sphinx libcomedi-dev python-zmq libqwt-dev libqwt6abi1 python-six libgps-dev libgps23 gpsd gpsd-clients python-gps python-setuptools
After installing the dependencies, you should reboot the system.
If the installation of the dependencies completes without any errors, then you can proceed to build and install UHD and GNU Radio.
Building and installing UHD from source code
First, make a folder to hold the repository
cd $HOME
mkdir workarea-uhd
cd workarea-uhd
Next, clone the repository and change into the cloned directory.
git clone https://github.com/EttusResearch/uhd
cd uhd
Next, checkout the desired UHD version. You can get a full listing of tagged releases by running the command:
git tag -l
After identifying the version and corresponding release tag you need, check it out:# Example:
For UHD 3.9.5:git checkout release_003_009_005
# Example: For UHD 3.14.0.0, git checkout v3.14.0.0,
Next, create a build folder within the repository.
cd host
mkdir build
cd build
Next, invoke CMake to create the Makefiles.
cmake ../
make
make test
sudo make install
sudo ldconfig
At this point, UHD should be installed and ready to use. You can quickly test this, with no USRP device attached, by running uhd_find_devices. You should see something similar to the following
Downloading the UHD FPGA Images
You can now download the UHD FPGA Images for this installation.
$ sudo uhd_images_downloader
On successful completion of downloading an image, now it’s time to install Gnu radio which is explained bellow:
Building and installing GNU Radio from source code
First, make a folder to hold the repository
cd $HOME
mkdir workarea-gnuradio
cd workarea-gnuradio
git clone –recursive https://github.com/gnuradio/gnuradio
cd gnuradio
git checkout v3.7.13.4
git submodule update –init –recursive
mkdir build
cd build
cmake ../
make
make test
sudo make install
sudo ldconfig
On Linux, udev handles USB plug and unplug events. The following commands install a udev rule so that non-root users may access the device. This step is only necessary for devices that use USB to connect to the host computer, such as the B200, B210, and B200mini. This setting should take effect immediately and does not require a reboot or logout/login. Be sure that no USRP device is connected via USB when running these commands.
Since we are interfacing board with USRP B100 ( which is basically a USB based interfacing SDR ) ,we need to follow the instruction mentioned below for allowing the USB based port to work for the SDR.
cd $HOME/workarea-uhd/uhd/host/utils
sudo cp uhd-usrp.rules /etc/udev/rules.d/
sudo udevadm control –reload-rules
sudo udevadm trigger
Interfacing USRP B100 with NVIDIA Nano Jetson Development board
Validation of FM station using NVIDIA Board and SDR
Frequency modulation is a type of radio modulation techniques where Information is added to the carrier signals and changed by varying the frequency of a transmitted signal. Information is delivered in forms of voice or music. It is commonly used for radio signals greater than 30 MHz In general, frequency modulation (FM) is defined as modulation techniques where the information containing signals are encoded in a carrier wave by varying the instantaneous frequency of the wave.
Results:
The figure above represents the output audio signals in a frequency domain. The clarity of audio signal in case of FM is greater than the AM. The variation in the amplitude of signals can be noticed from the representation of the waterfall diagram depending on the pitch of voice modulation. The dark yellowish color indicates the variation in the frequency for high pitch and low pitch sound. From waterfall diagram we can understand the minimum and the maximum frequency required for the audio signals. The audio signal lies within [20 KHz to 50 KHz] frequency range. It can vary depending upon the input signals.
Enjoy Implementing !
For any technical query: info@tenettech.com
For product purchase:
https://www.tenettech.com/product/nvidia-jetson-nano-developer-kit