Difference between revisions of "InstallingGRFromSource on Raspberry Pi"

From GNU Radio
Jump to: navigation, search
(replicate Ubuntu 18 + libpthread-stubs0-dev)
(add UHD instructions)
Line 1: Line 1:
<p>These instructions have been tested with the <q>Raspbian Buster with desktop and recommended software</q> Operating System on a Raspberry Pi 3B+. A 32GB microSD card is recommended.</p>
+
<!-- InstallingGRFromSource_on_Raspberry_Pi -->
 +
These instructions have been tested with the <q>Raspbian Buster with desktop and recommended software</q> Operating System on a Raspberry Pi 3B+. A 32GB microSD card is recommended.
  
== Load prerequisites ==
+
<p>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.</p>
 +
 
 +
== Install UHD from source ==
 +
 
 +
For this example, we will start in the home directory to parallel the steps in [[InstallingGR#To_install_system_wide]].
 +
 
 +
* <code>cd</code>
 +
 
 +
The following command line script will install all the required dependencies for UHD:
 +
* <code>sudo apt-get install libboost-all-dev libusb-1.0-0-dev python-mako doxygen python-docutils cmake build-essential</code>
 +
 
 +
Clone the code into your home directory:
 +
* <code>git clone git://github.com/EttusResearch/uhd.git</code>
 +
* <code>cd ~/uhd</code>
 +
 
 +
<b>Note:</b> By default, you have the <code>master</code> branch after you have cloned from git. To get a list of available branches, enter <code>git branch</code>. To get a list of available tags, enter <code>git tag -l</code> (that's a lower case L). Use the following command to change to another branch or tag if you want to build a different version.
 +
* <code>git checkout <your branch or tag></code>
 +
 
 +
<b>Note:</b> Unlike most build processes, UHD builds under the <code>host</code> directory.
 +
* <code>cd host</code>
 +
* <code>mkdir build</code>
 +
* <code>cd build</code>
 +
 
 +
<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 <code>-DNEON_SIMD_ENABLE=OFF</code> in the following command.
 +
* <code>cmake -DNEON_SIMD_ENABLE=OFF -DCMAKE_INSTALL_PREFIX=/usr/local ../</code>
 +
 
 +
<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>
 +
* <code>make -j3</code>
 +
 
 +
* <code>make test</code>
 +
* <code>sudo make install</code>
 +
 
 +
If you're running Linux, then always do the following command after installing any library:
 +
* <code>sudo ldconfig</code>
 +
 
 +
== Install GNU Radio ==
 +
 
 +
=== Load prerequisites ===
 
<p>You may have some of these prerequisites already, but it doesn't hurt to get them again and check for the latest versions.</p>
 
<p>You may have some of these prerequisites already, but it doesn't hurt to get them again and check for the latest versions.</p>
 
<pre>
 
<pre>
Line 13: Line 52:
 
</pre>
 
</pre>
  
== Set up a swap file ==
+
=== Set up a swap file ===
 
<p>A swap file will improve the compile time greatly.</p>
 
<p>A swap file will improve the compile time greatly.</p>
 
<pre>
 
<pre>
Line 26: Line 65:
 
</pre>
 
</pre>
  
== Build ==
+
=== Build ===
 
<p>The next steps will take two or more hours. Be patient. The terminal does show the progress.</p>
 
<p>The next steps will take two or more hours. Be patient. The terminal does show the progress.</p>
  
Click [[InstallingGR#To_install_system_wide|here]] to show install instructions.
+
Click [[InstallingGR#To_install_system_wide]] to go to the install instructions.

Revision as of 13:14, 20 March 2020

These instructions have been tested with the Raspbian Buster with desktop and recommended software Operating System on a Raspberry Pi 3B+. A 32GB microSD card is recommended.

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.

Install UHD from source

For this example, we will start in the home directory to parallel the steps in InstallingGR#To_install_system_wide.

  • cd

The following command line script will install all the required dependencies for UHD:

  • sudo apt-get install libboost-all-dev libusb-1.0-0-dev python-mako doxygen python-docutils cmake build-essential

Clone the code into your home directory:

Note: By default, you have the master branch after you have cloned from git. To get a list of available branches, enter git branch. To get a list of available tags, enter git tag -l (that's a lower case L). Use the following command to change to another branch or tag if you want to build a different version.

  • git checkout <your branch or tag>

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

Install GNU Radio

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

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

Build

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.