InstallingGRFromSource on Raspberry Pi: Difference between revisions
(add UHD instructions) |
(reorganize and update) |
||
Line 1: | Line 1: | ||
<!-- InstallingGRFromSource_on_Raspberry_Pi --> | <!-- InstallingGRFromSource_on_Raspberry_Pi --> | ||
These instructions have been tested with the <q>Raspbian | These instructions have been tested with the <q>Raspberry Pi OS (previously called Raspbian) (32-bit) with desktop and recommended software</q> 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. | |||
<pre> | |||
sudo fallocate -l 2G /swapfile | |||
sudo chmod 600 /swapfile | |||
sudo mkswap /swapfile | |||
sudo swapon /swapfile | |||
</pre> | |||
<p>To make the swap file permanent, add this line to /etc/fstab</p> | |||
<pre> | |||
/swapfile none swap sw 0 0 | |||
</pre> | |||
== Load prerequisites == | |||
You may have some of these prerequisites already, but it doesn't hurt to get them again and check for the latest versions. | |||
<pre> | |||
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 | |||
</pre> | |||
== Install UHD from source == | == 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 <b>FIRST</b> must clone and install UHD. | |||
For this example, we will start in the home directory to parallel the steps in [[InstallingGR#From_Source]]. | |||
<pre>cd ~/</pre> | |||
Clone the code into your home directory: | Clone the code into your home directory: | ||
< | <pre> | ||
git clone git://github.com/EttusResearch/uhd.git | |||
cd ~/uhd | |||
</pre> | |||
<b>Note:</b> In the following command, change <code>v3.15.0.0</code> to some other branch or tag if you want to build a different version. | |||
<pre> | |||
git tag -l | |||
git checkout v3.15.0.0 | |||
</pre> | |||
<b>Note:</b> Unlike most build processes, UHD builds under the <code>host</code> directory. | <b>Note:</b> Unlike most build processes, UHD builds under the <code>host</code> directory. | ||
<pre> | |||
cd host | |||
mkdir build | |||
cd build | |||
</pre> | |||
<b>Note:</b> In the following command, we will use <code>-DCMAKE_INSTALL_PREFIX=/usr/local</code> 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 | <b>Note:</b> In the following command, we will use <code>-DCMAKE_INSTALL_PREFIX=/usr/local</code> 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. | ||
<pre> | |||
cmake -DNEON_SIMD_ENABLE=OFF -DCMAKE_INSTALL_PREFIX=/usr/local ../ | |||
</pre> | |||
<b>Note:</b> In the following command, if your computer's CPU has multiple cores, you can use the argument <code>-j#</code> to speed compilation; <br> e.g., <code>make -j3</code> 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.<br> | <b>Note:</b> In the following command, if your computer's CPU has multiple cores, you can use the argument <code>-j#</code> to speed compilation; <br> e.g., <code>make -j3</code> 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.<br> | ||
<pre> | |||
make -j3 | |||
make test | |||
sudo make install | |||
</pre> | |||
If you're running Linux, then always do the following command after installing any library: | If you're running Linux, then always do the following command after installing any library: | ||
<pre>sudo ldconfig</pre> | |||
You can now download the UHD FPGA Images for this installation. | |||
<pre> | <pre> | ||
sudo | sudo uhd_images_downloader | ||
</pre> | </pre> | ||
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. | |||
<pre> | <pre> | ||
sudo | cd ~/uhd/host/utils | ||
sudo cp uhd-usrp.rules /etc/udev/rules.d/ | |||
sudo | sudo udevadm control --reload-rules | ||
sudo | sudo udevadm trigger | ||
</pre> | </pre> | ||
The installation of UHD is now complete. At this point, connect the USRP to the host computer and run: | |||
<pre> | <pre> | ||
uhd_usrp_probe | |||
</pre> | </pre> | ||
== | == Install GNU Radio == | ||
< | |||
<b>The next steps will take two or more hours. Be patient. The terminal does show the progress.</b> | |||
Click [[InstallingGR# | Click [[InstallingGR#From_Source]] to go to the install instructions. |
Revision as of 11:24, 7 July 2020
These instructions have been tested with the Raspberry Pi OS (previously called Raspbian) (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
Load prerequisites
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#From_Source.
cd ~/
Clone the code into your home directory:
git clone git://github.com/EttusResearch/uhd.git cd ~/uhd
Note: In the following command, change v3.15.0.0
to some other branch or tag if you want to build a different version.
git tag -l git checkout v3.15.0.0
Note: Unlike most build processes, UHD builds under the host
directory.
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;
e.g., 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:
sudo ldconfig
You can now download the UHD FPGA Images for this installation.
sudo uhd_images_downloader
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:
uhd_usrp_probe
Install GNU Radio
The next steps will take two or more hours. Be patient. The terminal does show the progress.
Click InstallingGR#From_Source to go to the install instructions.