VM using Ubuntu 20.04LTS sudo apt update sudo apt upgrade Install SSHFS to remote into mount from the e310 sudo apt-get install sshfs Get the e310 sdcard image and SDK for UHD 4.0 https://files.ettus.com/binaries/cache/e3xx/meta-ettus-v4.0.0.0/e3xx_e310_sg3_sdimg_default-v4.0.0.0.zip https://files.ettus.com/binaries/cache/e3xx/meta-ettus-v4.0.0.0/e3xx_e310_sdk_default-v4.0.0.0.zip Create the development directories mkdir rfnoc cd rfnoc mkdir e300 mkdir oe mkdir src Install the SDK: bash ./e310_sg3-oecore-x86_64-cortexa9t2hf-neon-toolchain-nodistro.0.sh Enter target directory for SDK (default: /usr/local/oecore-x86_64): ~/rfnoc/oe You are about to install the SDK to "/home/mgarrett/rfnoc/oe". Proceed [Y/n]? y Site: https://files.ettus.com/manual/page_build_guide.html Install Dependiencies: udo apt-get install libboost-all-dev libusb-1.0-0-dev doxygen python3-docutils python3-mako python3-numpy python3-requests python3-ruamel.yaml python3-setuptools cmake build-essential Install GIT: sudo apt install git git clone https://github.com/EttusResearch/uhd.git cd uhd/host mkdir build-host cd build-host cmake ../ make sudo make install Load the USRP Images cd /usr/local/bin sudo ./uhd_images_downloader set the USB Permissions cd /usr/local/lib/uhd/utils sudo cp uhd-usrp.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules sudo udevadm trigger Test installation cd ~ uhd_usrp_probe finds e310 on local ethernet port Snapshot VM Cross compile UHD cd ~/rfnoc/oe source./environment-setup-cortexa9t2hf-neon-oe-linux-gnueabi echo $CC arm-oe-linux-gnueabi-gcc -mthumb -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/home/mgarrett/rfnoc/oe/sysroots/cortexa9t2hf-neon-oe-linux-gnueabi cd ~/rfnoc/src/uhd/host mkdir build-arm cd build-arm cmake -DCMAKE_TOOLCHAIN_FILE=../host/cmake/Toolchains/oe-sdk_cross.cmake -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_E300=ON -DENABLE_GPSD=ON -DENABLE_RFNOC=ON .. make make install DESTDIR=~/rfnoc/e300 make install DESTDIR=~/rfnoc/oe/sysroots/cortexa9t2hf-neon-oe-linux-gnueabi/ cd ~/rfnoc/e300 touch setup.env nano setup.env LOCALPREFIX=~/newinstall/usr export PATH=$LOCALPREFIX/bin:$PATH export LD_LOAD_LIBRARY=$LOCALPREFIX/lib:$LD_LOAD_LIBRARY export LD_LIBRARY_PATH=$LOCALPREFIX/lib:$LD_LIBRARY_PATH export PYTHONPATH=$LOCALPREFIX/lib/python2.7/site-packages:$PYTHONPATH export PKG_CONFIG_PATH=$LOCALPREFIX/lib/pkgconfig:$PKG_CONFIG_PATH export GRC_BLOCKS_PATH=$LOCALPREFIX/share/gnuradio/grc/blocks:$GRC_BLOCKS_PATH export UHD_RFNOC_DIR=$LOCALPREFIX/share/uhd/rfnoc/ export UHD_IMAGES_DIR=$LOCALPREFIX/share/uhd/images Save this file Copy the e3xx images to the local directory mkdir -p ~/rfnoc/e300/usr/share/uhd/images cd ~/rfnoc/e300/usr/share/uhd/images cp -Rv /usr/local/share/uhd/images/usrp_e310_sg3_fpga* . cp -Rv /usr/local/share/uhd/images/usrp_e310_sg3_idle_fpga* . Mount and test the e300 directory ping 192.168.20.2 sudo apt -y install openssh-server ssh into the e300 ssh root@192.168.20.2 On the e300 mkdir -p ~/newinstall sshfs mgarrett@192.168.20.8:/home/mgarrett/rfnoc/e300 newinstall/ cd /newinstall source ./setup.env (set patsh to the mounted sdk drive) cd ~/newinstall/usr/bin uhd_usrp_probe Shows the UHD device and FPGA information, executing binary from sdk UHD is installed Install Volk Host and Cross compiled version Reference: https://wiki.gnuradio.org/index.php/InstallingGR Reference: https://wiki.gnuradio.org/index.php/UbuntuInstall#Focal_Fossa_.2820.04.29 Install Dependencies: 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 python3-gi python3-gi-cairo gobject-introspection gir1.2-gtk-3.0 Install Volk: https://wiki.gnuradio.org/index.php/InstallingGR cd ~/rfnoc/src git clone --recursive https://github.com/gnuradio/volk.git cd volk --> Install the master branch mkdir build-host cd build-host cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../ make make test Install volk on the host sudo make install Cross Compile Volk: cd ~/rfnoc/oe source ./environment-setup-cortexa9t2hf-neon-oe-linux-gnueabi echo $CC arm-oe-linux-gnueabi-gcc -mthumb -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/home/mgarrett/rfnoc/oe/sysroots/cortexa9t2hf-neon-oe-linux-gnueabi cd ~/rfnoc/src/volk$ mkdir build-arm ----> Critical step in compiling volk for the e3xx cmake -Wno-dev -DCMAKE_TOOLCHAIN_FILE=~/rfnoc/src/volk/cmake/Toolchains/oe-sdk_cross.cmake -DCMAKE_CXX_FLAGS:STRING="-march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9" -DCMAKE_C_FLAGS:STRING="-march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9" -DCMAKE_ASM_FLAGS:STRING="-march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 -g" -DENABLE_DOXYGEN=OFF -DCMAKE_INSTALL_PREFIX=/usr ../ Install the built volk files into the sdk make install DESTDIR=~/rfnoc/e300 make install DESTDIR=~/rfnoc/oe/sysroots/cortexa9t2hf-neon-oe-linux-gnueabi/ Reference: Reference: https://wiki.gnuradio.org/index.php/InstallingGR Reference: https://kb.ettus.com/Software_Development_on_the_E3xx_USRP_-_Building_RFNoC_UHD_/_GNU_Radio_/_gr-ettus_from_Source ---> Make sure your not in the oe ARM target environement!! echo $CC should be x86 target or none Install and compile gnuradio on the host cd ~rfnoc/src git clone https://github.com/gnuradio/gnuradio.git cd gnuradio git checkout maint-3.8 mkdir build-host cd build-host cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_INTERNAL_VOLK=OFF DPYTHON_EXECUTABLE=/usr/bin/python3 ../ make sudo make install Install gr-ettus sudo ldconfig cd ~/rfnoc/src git clone https://github.com/EttusResearch/gr-ettus.git cd gr-ettus git checkout maint-3.8-uhd4.0 mkdir build-host cd build-host cmake .. make -j4 sudo make install sudo ldconfig Cross Compile volk, gnuradio and gr ettus and install into the e300 mount devlopment directory and the oe sdk cd ~/rfnoc/oe source./environment-setup-cortexa9t2hf-neon-oe-linux-gnueabi echo $CC arm-oe-linux-gnueabi-gcc -mthumb -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/home/mgarrett/rfnoc/oe/sysroots/cortexa9t2hf-neon-oe-linux-gnueabi We already built and installed volk up above... cd ~/rfnoc/src/gnuradio mkdir build-arm cd build-arm cmake -Wno-dev -DCMAKE_TOOLCHAIN_FILE=~/rfnoc/src/gnuradio/cmake/Toolchains/oe-sdk_cross.cmake -DENABLE_INTERNAL_VOLK=OFF -DENABLE_GR_WXGUI=OFF -DENABLE_GR_VOCODER=OFF -DENABLE_GR_DTV=OFF -DENABLE_GR_ATSC=OFF -DENABLE_DOXYGEN=OFF -DCMAKE_INSTALL_PREFIX=/usr ../ make make install DESTDIR=~/rfnoc/e300 make install DESTDIR=~/rfnoc/oe/sysroots/cortexa9t2hf-neon-oe-linux-gnueabi/ Cross compile gr-ettus cd ~/rfnoc/src/gr-ettus mkdir build-arm cd build-arm cmake -DCMAKE_TOOLCHAIN_FILE=~/rfnoc/src/gnuradio/cmake/Toolchains/oe-sdk_cross.cmake -DCMAKE_INSTALL_PREFIX=/usr .. >>>> Error here <<<<< Refernces: https://kb.ettus.com/Software_Development_on_the_E3xx_USRP_-_Building_RFNoC_UHD_/_GNU_Radio_/_gr-ettus_from_Source https://files.ettus.com/manual/page_transport.html https://files.ettus.com/manual/page_usrp_e3xx.html#e3xx_software_dev_sdkusage https://wiki.gnuradio.org/index.php/UbuntuInstall#Focal_Fossa_.2820.04.29