These instructions have been tested with the
Raspberry Pi OS (32-bit) with desktop and recommended software on a Raspberry Pi 3B+. A 32GB microSD card is recommended.
Set up a swap file
A swap file will improve the compile time greatly.
sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
To make the swap file permanent, add this line to /etc/fstab
/swapfile none swap sw 0 0
You may have some of these prerequisites already, but it doesn't hurt to get them again and check for the latest versions.
sudo apt update --allow-releaseinfo-change sudo apt upgrade sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy \ python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev \ libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 \ liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins \ python3-zmq python3-scipy libpthread-stubs0-dev libusb-1.0-0 libusb-1.0-0-dev \ libudev-dev python3-setuptools python-docutils build-essential liborc-0.4-0 liborc-0.4-dev
Install UHD from source
If you want to use GNU Radio with a USRP, install the UHD package from source using the following instructions. UHD sits at the same level as GNU Radio as an independent driver, which gr-uhd references. So if you want gr-uhd enabled, you FIRST must clone and install UHD.
For this example, we will start in the home directory to parallel the steps in InstallingGR#To_install_system_wide.
Clone the code into your home directory:
git clone git://github.com/EttusResearch/uhd.git cd ~/uhd
Note: In the following command, change
v188.8.131.52 to some other branch or tag if you want to build a different version.
git tag -l git checkout v184.108.40.206
Note: Unlike most build processes, UHD builds under the
cd host mkdir build cd build
Note: In the following command, we will use
-DCMAKE_INSTALL_PREFIX=/usr/local to install UHD into the same prefix as GNU Radio. When compiling for ARM platforms, the assumption is made that NEON extensions are available if the arm_neon.h header is found. However, for platforms such as Raspberry Pi, one must specify -DNEON_SIMD_ENABLE=OFF in the following command.
cmake -DNEON_SIMD_ENABLE=OFF -DCMAKE_INSTALL_PREFIX=/usr/local ../
Note: In the following command, if your computer's CPU has multiple cores, you can use the argument
-j# to speed compilation;
make -j3 will use 3 threads in the build. Specify at least one less than the number of CPU cores so the system does not appear to 'freeze' during the build. If not specified, then a single thread is used for the build; this is not necessarily a bad thing, but it will take roughly 2 times as long to build as using 2 threads, and roughly 3 times as long to build as using 3 threads.
make -j3 make test sudo make install
If you're running Linux, then always do the following command after installing any library:
You can now download the UHD FPGA Images for this installation.
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.
cd ~/uhd/host/utils sudo cp uhd-usrp.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules sudo udevadm trigger
The installation of UHD is now complete. At this point, connect the USRP to the host computer and run:
Install GNU Radio
The next steps will take two or more hours. Be patient. The terminal does show the progress.
Click InstallingGR#To_install_system_wide to go to the install instructions.