Ubuntu18.04離線安裝UHD + GNU Radio


2020-04-16

此教程專為Ubuntu系統中沒有網或網速較慢時安裝UHD + GRC。
主要過程是先在win10下網絡情況較好,下載好需要用到的依賴包及安裝包,然后再去ubuntu系統下安裝即可。
本頁總結了設置UHD和GNU Radio的脫機安裝所涉及的分步過程。


前期准備

在win10下安裝一個Ubuntu的虛擬機,在虛擬機中先下載好需要用到的依賴包和安裝包。

安裝虛擬機並在虛擬機上安裝Ubuntu18.04系統

此過程不贅述,自行百度即可。

下載依賴包及安裝包

在新的虛擬機Ubuntu下執行:

sudo apt clean
# 確保在/var/cache.apt/archives下沒有安裝包:
ls -al /var/cache.apt/archives

下載依賴包:
在虛擬機中打開終端:

sudo apt-get --download-only 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 screen sshfs

在虛擬機終端中輸入:

$ mkdir -p ~/offline
$ mkdir -p ~/offline/debs
$ mkdir -p ~/offline/src

將剛剛下載的.deb安裝包移動到*~/offline/debs文件夾下:

$ cd ~/offline/debs
$ cp -v /var/cache/apt/archives/*.deb .

clone UHD和GNU Radio源文件:

clone時需要用到git命令,先下載git命令,再clone源文件:

$ sudo apt install git
# Then you can clone the UHD and GNU Radio repositories:
$ cd ~/offline/src
$ git clone --recursive https://github.com/EttusResearch/uhd
$ git clone --recursive https://github.com/gnuradio/gnuradio
# Optionally, if you're using RFNoC, fetch gr-ettus:
$ git clone https://github.com/EttusResearch/gr-ettus.git

壓縮offline文件夾

$ cd ~/
$ tar zcvf offline.tgz offline/

把壓縮包復制到離線環境中去,安裝時候使用。

在離線環境中安裝

重新配置默認Shell

將主機上的默認Shell從Dash切換到Bash。在某些Linux發行版中(例如Ubuntu),Dash設置為默認外殼程序,這可能會導致一些問題。 建議通過在終端中運行以下命令將shell設置為Bash。 在第一個命令提示時選擇“No”,第二個命令將驗證將使用Bash。

$ sudo dpkg-reconfigure dash
# Verify Bash is the default shell.
$ ll /bin/sh
# Expected Output:
# lrwxrwxrwx 1 root root 4 Apr 2 22:00 /bin/sh -> bash*

解壓縮安裝源

$ tar zxvf offline.tgz

注意:本教程中默認解壓后的路徑為~/offline/。如果你解壓到別的地方,下文中相應的位置也要改變。

安裝DEB安裝包

$ cd ~/offline/debs
$ sudo dpkg -i *.deb

當有些安裝包安裝失敗時,重新執行:

$ sudo dpkg -i *.deb

安裝UHD

$ cd ~/offline/src/uhd

選擇uhd版本:

# Example for UHD 3.9.5:
$ git checkout release_003_009_005
# or example for UHD 3.13.0.2:
$ git checkout v3.13.0.2

在簽出帶標簽的分支后更新git子模塊:

$ git submodule update

最后build UHD

$ cd host
$ mkdir build
$ cd build
$ cmake ../
$ make -j4
$ sudo make install
$ sudo ldconfig

配置USB

在Linux上,udev處理USB插拔事件。以下命令將安裝udev規則,以便非root用戶可以訪問設備。僅對於使用USB連接到主機的設備(例如B200,B210和B205mini),才需要執行此步驟。此設置應立即生效,不需要重新啟動或注銷/登錄。運行這些命令時,請確保沒有通過USB連接USRP設備。

cd ~/offline/src/uhd/host/utils
sudo cp uhd-usrp.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger

配置線程優先級

當UHD產生新線程時,它可能會嘗試提高線程的調度優先級。如果設置新的優先級失敗,UHD軟件將向控制台打印警告,如下所示。該警告是無害的。它只是意味着線程將保留正常或默認的調度優先級。

UHD Warning:
Unable to set the thread priority. Performance may be negatively affected.
Please see the general application notes in the manual for instructions.
EnvironmentError: OSError: error in pthread_setschedparam

要解決此問題,需要為非特權(非root)用戶授予特殊權限以更改計划優先級。
為此,首先創建一個Linux組usrp:
sudo groupadd usrp
添加你的用戶到這個組里:
sudo usermod -aG usrp $USER
/etc/security/limits.conf文件的末尾添加:
@usrp - rtprio 99

Build GNU Radio

$ cd ~/offline/src/gnuradio

選擇GNU Radio版本:

$ git checkout v3.7.10.2
# or
$ git checkout v3.7.13.4

更新子模塊:

$ git submodule update

最后build GNU Radio:

$ mkdir build
$ cd build
$ cmake ../
$ make -j4
$ sudo make install
$ sudo ldconfig

提取UHD FPGA images

現在,您需要為UHD安裝下載相應的FPGA images。

識別要下載的FPGA映像包
運行命令(在離線計算機上):
對於<3.11.x.x的UHD版本,它將打印出要下載到輸出中的FPGA圖像的確切URL。

$ uhd_images_downloader
$ sudo uhd_images_downloader

Images destination: /usr/local/share/uhd/images
Downloading images from: http://files.ettus.com/binaries/images/uhd-images_003.009.005-release.zip
Downloading images to: /tmp/tmpySQA9q/uhdimages_003.009.005-release.zip
Downloader raised an unhandled exception:HTTPConnectionPool(host='files.ettus.com', port=80): Max retries exceeded with url:/binaries/images/uhd-images_003.009.005-release.zip (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f207225fe90>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',))
You can run this again with the '--verbose' flag to see more information
If the problem persists, please email the output to: support@ettus.com

對於UHD版本<3.11.x.x,您將需要附加命令行參數-l列出目標:

$ sudo uhd_images_downloader -l

[INFO] Images destination: /usr/local/share/uhd/images
[INFO] Potential targets in manifest file:
TARGET:RELATIVE_URL
b2xx_b200_fpga_default : b2xx/fpga-494ae8bb/b2xx_b200_fpga_default-g494ae8bb.zip
b2xx_b200mini_fpga_default : b2xx/fpga-494ae8bb/b2xx_b200mini_fpga_default-g494ae8bb.zip
b2xx_b205mini_fpga_default : b2xx/fpga-494ae8bb/b2xx_b205mini_fpga_default-g494ae8bb.zip
b2xx_b210_fpga_default : b2xx/fpga-494ae8bb/b2xx_b210_fpga_default-g494ae8bb.zip
b2xx_common_fw_default : b2xx/uhd-3ff4186b/b2xx_common_fw_default-g3ff4186b.zip
e3xx_e310_fpga_default : e3xx/fpga-494ae8bb/e3xx_e310_fpga_default-g494ae8bb.zip
e3xx_e310_fpga_rfnoc : e3xx/fpgad6a878b/e3xx_e310_fpga_rfnoc-gd6a878b.zip
e3xx_e320_fpga_aurora : e3xx/fpga-494ae8bb/e3xx_e320_fpga_aurora-g494ae8bb.zip
e3xx_e320_fpga_default : e3xx/fpga-494ae8bb/e3xx_e320_fpga_default-g494ae8bb.zip
e3xx_e320_mender_default : e3xx/meta-ettusv3.13.1.0/e3xx_e320_mender_default-v3.13.1.0.zip
e3xx_e320_sdimg_default : e3xx/meta-ettusv3.13.1.0/e3xx_e320_sdimg_default-v3.13.1.0.zip
e3xx_e320_sdk_default : e3xx/meta-ettusv3.13.1.0/e3xx_e320_sdk_default-v3.13.1.0.zip
n230_n230_fpga_default : n230/fpga-494ae8bb/n230_n230_fpga_default-g494ae8bb.zip
n3xx_common_mender_default : n3xx/meta-ettusv3.13.1.0/n3xx_common_mender_defaultv3.13.1.0.zip
n3xx_common_sdimg_default : n3xx/meta-ettusv3.13.1.0/n3xx_common_sdimg_default-v3.13.1.0.zip
n3xx_common_sdk_default : n3xx/meta-ettusv3.13.1.0/n3xx_common_sdk_default-v3.13.1.0.zip
n3xx_n300_fpga_default : n3xx/fpga-494ae8bb/n3xx_n300_fpga_default-g494ae8bb.zip
n3xx_n310_fpga_default : n3xx/fpga-494ae8bb/n3xx_n310_fpga_default-g494ae8bb.zip
n3xx_common_mender_default : n3xx/meta-ettusv3.13.1.0/n3xx_common_mender_defaultv3.13.1.0.zip
n3xx_common_sdimg_default : n3xx/meta-ettusv3.13.1.0/n3xx_common_sdimg_default-v3.13.1.0.zip
n3xx_common_sdk_default : n3xx/meta-ettusv3.13.1.0/n3xx_common_sdk_default-v3.13.1.0.zip
n3xx_n300_fpga_default : n3xx/fpga-494ae8bb/n3xx_n300_fpga_default-g494ae8bb.zip
n3xx_n310_fpga_default : n3xx/fpga-494ae8bb/n3xx_n310_fpga_default-g494ae8bb.zip
octoclock_octoclock_fw_default : octoclock/uhd-14000041/octoclock_octoclock_fw_defaultg14000041.zip
usb_common_windrv_default : usb/uhd-14000041/usb_common_windrv_default-g14000041.zip
usrp1_b100_fpga_default : usrp1/fpga-6bea23d/usrp1_b100_fpga_default-g6bea23d.zip
usrp1_b100_fw_default : usrp1/fpga-6bea23d/usrp1_b100_fw_default-g6bea23d.zip
usrp1_usrp1_fpga_default : usrp1/fpga-6bea23d/usrp1_usrp1_fpga_default-g6bea23d.zip
usrp2_n200_fpga_default : usrp2/fpga-6bea23d/usrp2_n200_fpga_default-g6bea23d.zip
usrp2_n200_fw_default : usrp2/fpga-6bea23d/usrp2_n200_fw_default-g6bea23d.zip
usrp2_n210_fpga_default : usrp2/fpga-6bea23d/usrp2_n210_fpga_default-g6bea23d.zip
usrp2_n210_fw_default : usrp2/fpga-6bea23d/usrp2_n210_fw_default-g6bea23d.zip
usrp2_usrp2_fpga_default : usrp2/fpga-6bea23d/usrp2_usrp2_fpga_default-g6bea23d.zip
usrp2_usrp2_fw_default : usrp2/fpga-6bea23d/usrp2_usrp2_fw_default-g6bea23d.zip
x3xx_x300_fpga_default : x3xx/fpga-494ae8bb/x3xx_x300_fpga_default-g494ae8bb.zip
x3xx_x310_fpga_default : x3xx/fpga-494ae8bb/x3xx_x310_fpga_default-g494ae8bb.zip

注意:上面的示例使用UHD3.13.0.2,RELATIVE_URL值將針對不同的UHD版本而更改。
將設備的RELATIVE_URL值附加到以下URL:
http://files.ettus.com/binaries/cache/
例如,用於X310的FPGA映像將位於:
http://files.ettus.com/binaries/cache/x3xx/fpga-494ae8bb/x3xx_x310_fpga_defaultg494ae8bb.zip

對於UHD版本>=3.13.1.0,可以使用命令行選項--list-targets --url-only可打印出以下網址 FPGA軟件包:

$ uhd_images_downloader --url-only --list-targets

[INFO] Images destination: /usr/local/share/uhd/images
http://files.ettus.com/binaries/cache/usrp1/fpga-6bea23d/usrp1_b100_fw_default-g6bea23d.zip
http://files.ettus.com/binaries/cache/x3xx/fpgad0360f7/x3xx_x310_fpga_default-gd0360f7.zip
http://files.ettus.com/binaries/cache/usrp2/fpga-6bea23d/usrp2_n210_fpga_default-g6bea23d.zip
http://files.ettus.com/binaries/cache/n230/fpgad0360f7/n230_n230_fpga_default-gd0360f7.zip
http://files.ettus.com/binaries/cache/n3xx/fpga-494ae8bb/n3xx_n300_fpga_aurora-g494ae8bb.zip
http://files.ettus.com/binaries/cache/usrp1/fpga-6bea23d/usrp1_b100_fpga_default-g6bea23d.zip
http://files.ettus.com/binaries/cache/e3xx/fpga-494ae8bb/e3xx_e320_fpga_aurora-g494ae8bb.zip
http://files.ettus.com/binaries/cache/e3xx/metaettus-v3.13.1.0/e3xx_e320_sdk_defaultv3.13.1.0.zip
http://files.ettus.com/binaries/cache/b2xx/fpgad0360f7/b2xx_b200_fpga_default-gd0360f7.zip
http://files.ettus.com/binaries/cache/usrp2/fpga-6bea23d/usrp2_n200_fpga_default-g6bea23d.zip
http://files.ettus.com/binaries/cache/e3xx/fpgad0360f7/e3xx_e320_fpga_default-gd0360f7.zip
http://files.ettus.com/binaries/cache/n3xx/fpgad0360f7/n3xx_n310_fpga_default-gd0360f7.zip
http://files.ettus.com/binaries/cache/b2xx/fpgad0360f7/b2xx_b205mini_fpga_default-gd0360f7.zip
http://files.ettus.com/binaries/cache/x3xx/fpgad0360f7/x3xx_x300_fpga_default-gd0360f7.zip
http://files.ettus.com/binaries/cache/octoclock/uhd-14000041/octoclock_octoclock_fw_defaultg14000041.zip
http://files.ettus.com/binaries/cache/e3xx/metaettus-v3.13.1.0/e3xx_e320_sdimg_defaultv3.13.1.0.zip
http://files.ettus.com/binaries/cache/n3xx/fpga-6bea23d/n3xx_n310_cpld_default-g6bea23d.zip
http://files.ettus.com/binaries/cache/usrp2/fpga-6bea23d/usrp2_usrp2_fw_default-g6bea23d.zip
http://files.ettus.com/binaries/cache/usrp2/fpga-6bea23d/usrp2_n200_fw_default-g6bea23d.zip
http://files.ettus.com/binaries/cache/usrp2/fpga-6bea23d/usrp2_usrp2_fpga_default-g6bea23d.zip
http://files.ettus.com/binaries/cache/b2xx/uhd-3ff4186b/b2xx_common_fw_default-g3ff4186b.zip
http://files.ettus.com/binaries/cache/n3xx/fpga-494ae8bb/n3xx_n310_fpga_aurora-g494ae8bb.zip
http://files.ettus.com/binaries/cache/b2xx/fpgad0360f7/b2xx_b200mini_fpga_default-gd0360f7.zip
http://files.ettus.com/binaries/cache/usrp1/fpga-6bea23d/usrp1_usrp1_fpga_default-g6bea23d.zip
http://files.ettus.com/binaries/cache/n3xx/metaettus-v3.13.1.0/n3xx_common_mender_defaultv3.13.1.0.zip
http://files.ettus.com/binaries/cache/e3xx/metaettus-v3.13.1.0/e3xx_e320_mender_defaultv3.13.1.0.zip
http://files.ettus.com/binaries/cache/usb/uhd-14000041/usb_common_windrv_default-g14000041.zip
http://files.ettus.com/binaries/cache/e3xx/fpgad6a878b/e3xx_e310_fpga_rfnoc-gd6a878b.zip
http://files.ettus.com/binaries/cache/usrp2/fpga-6bea23d/usrp2_n210_fw_default-g6bea23d.zip
http://files.ettus.com/binaries/cache/n3xx/fpgad0360f7/n3xx_n300_fpga_default-gd0360f7.zip
http://files.ettus.com/binaries/cache/n3xx/metaettus-v3.13.1.0/n3xx_common_sdk_defaultv3.13.1.0.zip
http://files.ettus.com/binaries/cache/e3xx/fpgad0360f7/e3xx_e310_fpga_default-gd0360f7.zip
http://files.ettus.com/binaries/cache/b2xx/fpgad0360f7/b2xx_b210_fpga_default-gd0360f7.zip
http://files.ettus.com/binaries/cache/n3xx/metaettus-v3.13.1.0/n3xx_common_sdimg_defaultv3.13.1.0.zip

連接了互聯網的主機上,使用wget獲取FPGA映像:

#Example for<UHD 3.11.x.x:
$ wget http://files.ettus.com/binaries/images/uhd-images_003.009.005-release.zip
#Example for>UHD 3.11.x.x.
$ wget http://files.ettus.com/binaries/cache/x3xx/fpga-494ae8bb/x3xx_x310_fpga_defaultg494ae8bb.zip

將下載的ZIP文件傳輸到您的離線環境。

Installing the FPGA Images to the UHD Images Directory

在~/offline目錄中創建一個名為fpga_images的文件夾。該目錄名稱是任意的,並且僅在以下步驟中用作參考。將包含FPGA映像的zip文件放入此目錄,然后解壓縮。

解壓到同一個文件夾下:

mkdir ~/images #最后解壓完的文件都在這里
cd fpga_images
unzip -o '*.zip' -d ~/images

接下來,在UHD安裝前綴中創建images/文件夾。

 cd /usr/local/share/uhd/
 mkdir images
 cd images

將上面解壓縮的FPGA映像復制到對應的位置。

 sudo cp -v ~/images/* .

參考鏈接:

Building and Installing UHD and GNU Radio in an Offline Environment


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM