aboutsummaryrefslogtreecommitdiffstats
path: root/host/docs
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2015-06-23 18:30:58 -0700
committerMartin Braun <martin.braun@ettus.com>2015-06-23 18:30:58 -0700
commit0de701af7708112285e35ea038cae4e9034a7001 (patch)
tree709f25205f2f5bf2f8bf529be156c43e49992af4 /host/docs
parenta9befaac7627c0530a2cbf539fa6388b0b6e1896 (diff)
parent6c804f722cd3e43f7e1b6b804b66c80f868154ca (diff)
downloaduhd-0de701af7708112285e35ea038cae4e9034a7001.tar.gz
uhd-0de701af7708112285e35ea038cae4e9034a7001.tar.bz2
uhd-0de701af7708112285e35ea038cae4e9034a7001.zip
Merge branch 'maint'
Diffstat (limited to 'host/docs')
-rw-r--r--host/docs/CMakeLists.txt3
-rw-r--r--host/docs/build.dox137
-rw-r--r--host/docs/install.dox119
-rw-r--r--host/docs/mainpage.dox.in8
-rw-r--r--host/docs/res/N2xx-JTAG.jpgbin0 -> 534084 bytes
-rw-r--r--host/docs/usrp2.dox53
-rw-r--r--host/docs/usrp_x3x0_config.dox131
7 files changed, 422 insertions, 29 deletions
diff --git a/host/docs/CMakeLists.txt b/host/docs/CMakeLists.txt
index eb4b67c29..d0f060ceb 100644
--- a/host/docs/CMakeLists.txt
+++ b/host/docs/CMakeLists.txt
@@ -28,7 +28,6 @@ SET(ENABLE_MANUAL_OR_DOXYGEN false)
########################################################################
# Setup Manual (using Doxygen)
########################################################################
-MESSAGE(STATUS "")
LIBUHD_REGISTER_COMPONENT("Manual" ENABLE_MANUAL ON "DOXYGEN_FOUND" OFF)
# Check if fpga submodule is there. If yes:
@@ -44,7 +43,7 @@ IF(ENABLE_MANUAL)
SET(DOXYGEN_DEPENDENCIES ${manual_sources})
SET(DOXYGEN_INPUT_DIRS "${CMAKE_SOURCE_DIR}/docs")
SET(DOXYGEN_DEP_COMPONENT "manual")
- SET(DOXYGEN_FPGA_MANUAL_REFERENCE "<a href=\"http://files.ettus.com/manual/page_fpga.html\">Part III: FPGA Manual</a>")
+ SET(DOXYGEN_FPGA_MANUAL_REFERENCE "<a href=\"http://files.ettus.com/manual/md_fpga.html\">Part III: FPGA Manual</a>")
SET(DOXYGEN_STRIP_EXTRA "")
# Now, check if we have the FPGA sources as well.
# If so, pull them in:
diff --git a/host/docs/build.dox b/host/docs/build.dox
index e08bc6bf3..95514da23 100644
--- a/host/docs/build.dox
+++ b/host/docs/build.dox
@@ -1,10 +1,7 @@
-/*! \page page_build_guide Building and Installing UHD
+/*! \page page_build_guide Building and Installing UHD from source
\tableofcontents
-\b Note: More build information can be found on the UHD wiki page, at
-http://code.ettus.com/redmine/ettus/projects/uhd/wiki .
-
\section build_dependencies Build Dependencies
<b>Linux Notes:</b>
@@ -17,7 +14,7 @@ Install the Xcode app to get the build tools (GCC and Make).
Use MacPorts to get the Boost and Cheetah dependencies.
Other dependencies can be downloaded as DMG installers from the web
or installed via MacPorts.
-See the UHD OS X page for more information: http://code.ettus.com/redmine/ettus/projects/uhd/wiki/UHD_OS_X
+See the UHD OS X build instructions for more information: \ref build_instructions_osx
<b>Windows Notes:</b>
The dependencies can be acquired through installable EXE files.
@@ -25,12 +22,7 @@ Usually, the Windows installer can be found on the project's website.
Some projects do not host Windows installers, and if this is the case,
follow the auxiliary download URL for the Windows installer (below).
-\section git Git
-Required to check out the repository.
-On Windows, install Cygwin with Git support to checkout the repository
-or install msysGit from http://code.google.com/p/msysgit/downloads/list.
-
-\section cpp_compiler C++ Compiler
+### C++ Compiler
The following compilers are known to work and officially supported:
@@ -93,6 +85,62 @@ http://pypi.python.org/pypi/setuptools
Install **setuptools**, and use the **easy_install** command to install Docutils.
http://pypi.python.org/pypi/setuptools
+### Git
+
+Required to check out the repository (not necessary if building from tarballs).
+
+On Windows, install Cygwin with Git support to checkout the repository
+or install msysGit from http://code.google.com/p/msysgit/downloads/list.
+
+\subsection build_dependencies_ubuntu Setting up the dependencies on Ubuntu
+
+You can install all the dependencies through the package manager:
+
+ sudo apt-get install libboost-all-dev libusb-1.0-0-dev python-cheetah doxygen python-docutils cmake
+
+Your actual command may differ.
+
+\subsection build_dependencies_fedora Setting up the dependencies on Fedora
+
+You can install all the dependencies through the package manager:
+
+ sudo yum -y install boost-devel libusb1-devel python-cheetah doxygen python-docutils cmake
+
+Your actual command may differ.
+
+\section build_get_source Getting the source code
+
+The UHD source is stored in a Git repository. To download it, follow these instructions:
+
+ git clone git://github.com/EttusResearch/uhd.git
+
+If you also want the FPGA code (which is not necessary for building UHD and applications which depend on it), run:
+
+ git clone --recursive git://github.com/EttusResearch/uhd.git
+
+This will populate the `fpga-src` submodule inside the repository. You can also do this after cloning the repository by running these commands from the top level source directory:
+
+ git submodule init
+ git submodule update
+
+Our source code repository contains two branches:
+
+\li \b master: This is the main development branch, with updated new features and bug fixes.
+\li \b maint: This branch has all bugfixes since the last major release, but there are no new features. This is what you should be using if you need a stable release.
+
+We might also be publishing experimental feature branches which can then be found in the same repository.
+All of our releases are associated with tags in the repository.
+
+\li <a href="https://github.com/EttusResearch/UHD/tags">Source archives for release tags</a>
+
+\section build_pybombs Using PyBOMBS
+
+PyBOMBS is a command-line tool for Linuxes (and some Unixes) from the GNU Radio ecosystem and will do a source build of UHD, including setting up prerequisites/dependencies (regardless of the distribution) with the following command:
+
+$ ./pybombs install uhd
+
+Head to the <a href="http://gnuradio.org/pybombs">PyBOMBS Homepage</a> for more instructions. PyBOMBS can install UHD (as well as GNU Radio or similar projects) both into system directories as well as into user's home directories, omitting the requirement for superuser access.
+
\section build_instructions_unix Build Instructions (Unix)
\subsection generate_unix Generate Makefiles with CMake
@@ -160,7 +208,7 @@ so we must manually tell CMake how to locate the LibUSB header and lib.
You may not have permission to build the install target.
You need to be an administrator or to run MSVC as administrator.
-\section build_msvc_cmd_line Build the project in MSVC (command line)
+\subsection build_msvc_cmd_line Build the project in MSVC (command line)
Open the Visual Studio Command Prompt Shorcut:
cd <uhd-repo-path>\host\build
@@ -174,19 +222,64 @@ Open the Visual Studio Command Prompt Shorcut:
The default interface for editing environment variable paths in Windows is very poor.
We recommend using "Rapid Environment Editor" (http://www.rapidee.com) over the default editor.
-\section post_install_tasks Post-Install Tasks
+\section build_instructions_osx Build Instructions (Mac OS X)
+
+### X11/XQuartz or Terminal
+
+For the purposes of building and using UHD, you can use Apple's Terminal.app if you so choose, no matter how you install UHD.
+
+That said, running almost any graphical interface (GUI) will require downloading and installing X11/XQuartz first. Through OSX 10.8, Apple provided a means to install X11.app, but XQuartz has always been more up to date. Staring in 10.9, Apple no longer provides a full working version of X11.app. Hence, just use XQuartz from the get-go. Note that unless you experiment with using the Quartz interface to various graphical toolkits (e.g., GTK), you must use X11 as the terminal interface for any GUI applications.
+
+### Xcode
+
+Apple provides a fully integrated development environment via their Xcode toolkit, which can be downloaded either via the App store or directly from Apple's Developer area depending on the version of OSX in use. Xcode provides the compilers and related development tools needed to build or execute UHD and its dependencies.
+
+Once Xcode is installed, you must still install the Command Line Tools, which can be accomplished by running Xcode.app, then going to Preferences... -> Downloads and making sure Command Line Tools is selected/enabled [feel free to select other downloads too]. You might be able to install the Command Line Tools in a terminal using
+
+ xcode-select --install
+
+but this command will not work with every OSX / Xcode combination (e.g., does not work with OSX 10.8 and Xcode 5, but does work with OSX 10.9 and Xcode 5).
+
+Once the Command Line Tools are installed, UHD and other projects can be installed either from source or, preferably, via MacPorts.
-For USB-based devices,
-see the `USB Transport Application Notes <./transport.html#usb-transport-libusb>`_
-for platform-specific post-installation tasks.
+### Background Dependencies
-\section post_install_tasks_macosx Post-Install Tasks (Mac OS X)
+There are a number of background libraries and applications that must be installed from source or binary in order to compile or execute UHD; for a full list, see \ref build_dependencies. These can be obtained by using <a href="http://www.macports.org/">MacPorts</a>, <a href="http://fink.sourceforge.net/">Fink</a>, <a href="http://brew.sh/">HomeBrew</a>, and/or from source / scratch. MacPorts tends to be more up-to-date with respect to new releases, which can be both a blessing and a curse since sometimes new released are untested and result in build or runtime errors. MacPorts, HomeBrew, and Fink offer thousands of ready-to-install libraries and applications, and hence they are highly recommended to use instead of installing from source / scratch.
+
+\b Note: We highly recommended that you install all dependencies via the same package manager! When issues arise, they are much easier to track down, and your updating to newer versions is also much easier.
+
+Many UHD developers first install UHD using MacPorts in order to get all of the necessary background dependencies installed, then remove just UHD via
+
+ sudo port uninstall uhd
+
+#### Compiling UHD from Source
+
+Installing UHD from source follows the standard cmake method as found in many places, with a few arguments to make sure cmake always finds the correct version of Python, and uses the desired compiler. First, download the source code either via a release or via GIT.
+
+For example, on OSX 10.8 or 10.9 using Xcode 5's Apple GCC, MacPorts installed into /opt/local (the default), and for Python 2.7 (as installed by MacPorts), issue the following commands from within the UHD source directory:
+
+ $ mkdir build
+ $ cd build
+ $ CC=/usr/bin/llvm-gcc CXX=/usr/bin/llvm-g++ cmake -DPYTHON_EXECUTABLE=/opt/local/bin/python2.7 -DPYTHON_INCLUDE_DIR=/opt/local/Library/Frameworks/Python.framework/Versions/2.7/Headers -DPYTHON_LIBRARY=/opt/local/Library/Frameworks/Python.framework/Versions/2.7/Python ../host
+ $ make
+
+If make succeeds, then you can test the build for errors via
+
+ $ make test
+
+To install the build, issue
+
+ $ sudo make install
+
+Selecting another compiler is as simple as changing the CC and CXX pre-arguments to the cmake command. Note that all of the PYTHON defines must point to the same install of Python, otherwise runtime errors are likely to occur.
+
+\section post_install_tasks Post-Install Tasks
-Make sure that the value of `CMAKE_INSTALL_PREFIX` is at or near the
-front of the shell `PATH` environment variable. Do \b NOT set
-`DYLD_LIBRARY_PATH` or any related DYLD environment variable
-permanently; these work differently than under Linux and should be
-used for testing / temporary purposes only.
+- After installing, you might want to download the FPGA images packages by running
+ `uhd_images_downloader` on the command line, or one of these executables (the actual path may differ based on your installation):
+ + Linux: /usr/local/lib/uhd/utils/uhd_images_downloader.py
+ + Windows: C:\\Program Files\\share\\uhd\\utils\\uhd_images_downloader.py
+- For USB-Based devices, make sure to read \ref transport_usb for platform-specific post-installation tasks.
\section build_apps Building applications that require UHD using CMake
diff --git a/host/docs/install.dox b/host/docs/install.dox
new file mode 100644
index 000000000..864421ecf
--- /dev/null
+++ b/host/docs/install.dox
@@ -0,0 +1,119 @@
+/*! \page page_install Binary Installation
+
+\tableofcontents
+
+\section install_win Installation on Windows
+
+We provide UHD software installers for Windows users who do not wish
+to install UHD from source.
+
+\subsection install_win_libusb LibUSBx
+
+All Windows installers are built with LibUSBx to enable USB3 support.
+
+\subsection install_win_installer Installer Packages
+
+Installer packages are built from release tags of the maint branch.
+
+Please find the latest installer here: http://files.ettus.com/binaries/uhd/latest_release
+
+Older installers of all previous releases can be downloaded from: http://files.ettus.com/binaries/uhd/ (browse to the desired release).
+
+\subsection install_win_post Post-Install Tasks
+
+Using a USB-based device?
+
+- Download and install Windows UHD USB Drivers: http://files.ettus.com/binaries/misc/erllc_uhd_winusb_driver.zip
+- \ref transport_usb_installwin
+
+Install the MSVC Redistributable Package:
+
+- Download <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a7b7a05e-6de6-4d3a-a423-37bf0912db84
+">MSVC Redistributable Package</a>
+
+\subsection install_win_source Building from source
+
+You can build UHD software from source. There are two choices of compilers for Windows users:
+
+- Microsoft Visual Studio Express.
+ + Users can develop with the free version.
+- MinGW
+ + An alternative to using a Microsoft compiler.
+
+Refer to \ref build_instructions_windows
+
+\section install_linux Installation on Linux
+
+\subsection install_linux_pkgmgr Using your package manager
+
+Most distributions provide UHD as part of their package management.
+On Debian and Ubuntu systems, this will install the base UHD library, all headers
+and build-specific files, as well as utilities:
+
+ sudo apt-get install libuhd-dev libuhd003 uhd-host
+
+On Fedora systems, an equivalent command would be:
+
+ sudo yum install uhd uhd-devel
+
+On other distributions, please refer to your package manager's documentation.
+
+\subsection install_linux_ourbins Using binaries provided by Ettus Research
+
+We provide UHD binary installers for Ubuntu and Fedora users for every stable release.
+Typically, we will provide binaries for latest two LTS versions of Ubuntu, and for the
+latest two versions of Fedora.
+
+The latest versions of these binaries can be downloaded from here: http://files.ettus.com/binaries/uhd_stable/latest_release/
+
+\subsubsection install_linux_ourbins_ubuntu Ubuntu
+
+Copy and paste these commands into your terminal. This will install UHD software as well as allow you to receive package updates.
+
+ sudo bash -c 'echo "deb http://files.ettus.com/binaries/uhd/repo/uhd/ubuntu/`lsb_release -cs` `lsb_release -cs` main" > /etc/apt/sources.list.d/ettus.list'
+ sudo apt-get update
+ sudo apt-get install -t `lsb_release -cs` uhd
+
+\subsubsection install_linux_ourbins_fedora Fedora
+
+\b Note: You might want to run the following command if you're updating repositories:
+
+ yum clean metadata all
+
+Create the file /etc/yum.repos.d/ettus.repo. Copy this into the file:
+
+ [ettus-uhd-stable-repo]
+ name=Ettus Research - UHD Stable $releasever-$basearchthon serial timeout
+ baseurl=http://files.ettus.com/binaries/uhd/repo/uhd/fedora/$releasever/$basearch
+ gpgcheck=0
+
+Run the following commands:
+
+ sudo yum --enablerepo='ettus-uhd-stable-repo' install uhd
+
+\subsection install_linux_pybombs Using PyBOMBS
+
+This is an automated way of installing UHD from source. See also \ref build_pybombs.
+
+\section install_osx Installation on Mac OS X
+
+\section install_osx_macports Via MacPorts
+
+We recommend using MacPorts and actively support UHD development on OS X via this method.
+Using MacPorts, the correct hardware device images are automatically installed for you,
+and there are no post install tasks. WIth a single command, you can be up and running in short order.
+
+If you do not already have MacPorts installed, you will need to install it first. Make sure to follow the MacPorts shell environment changes needed such that MacPorts installed executables are found before all others. These are the only changes to the shell environment needed to execute any MacPorts-installed executable. Setting any DYLD environment variable (e.g., DYLD_LIBRARY_PATH) for general use is highly discouraged, because doing so, in our experience, leads to problems down the road that are very difficult to diagnose. OSX provides robust means for correcting DYLD-based issues even after dependencies are installed.
+
+Once MacPorts is installed, UHD and all of its dependencies can be installed by executing
+
+ sudo port install uhd
+
+The latest developments in UHD can be installed via
+
+ sudo port install uhd-devel
+
+Please note that the uhd-devel port, while tested for basic compilation and functionality, is not a formal release and hence should be considered beta software which might contain bugs or major issues.
+
+*/
+// vim:ft=doxygen:
diff --git a/host/docs/mainpage.dox.in b/host/docs/mainpage.dox.in
index 428650633..4b3371a57 100644
--- a/host/docs/mainpage.dox.in
+++ b/host/docs/mainpage.dox.in
@@ -16,14 +16,12 @@ Follow these links to get to the section of the manual you wish to consult, or u
### Further Information
-\li <a href="http://www.ettus.com/">Ettus Research LLC Website</a>
-\li <a href="http://code.ettus.com/redmine/ettus/projects/uhd/wiki/">UHD Wiki Page</a>
+\li <a href="http://www.ettus.com/">Ettus Research Website</a>
-### Building and Installing UHD
+### Installing and/or Building UHD
+\li \subpage page_install
\li \subpage page_build_guide
-\li <a href="http://code.ettus.com/redmine/ettus/projects/uhd/wiki/UHD_Linux">Installation Guide (Linux)</a>
-\li <a href="http://code.ettus.com/redmine/ettus/projects/uhd/wiki/UHD_Windows">Installation Guide (Windows)</a>
*/
// vim:ft=doxygen:
diff --git a/host/docs/res/N2xx-JTAG.jpg b/host/docs/res/N2xx-JTAG.jpg
new file mode 100644
index 000000000..acecc0592
--- /dev/null
+++ b/host/docs/res/N2xx-JTAG.jpg
Binary files differ
diff --git a/host/docs/usrp2.dox b/host/docs/usrp2.dox
index 63a28ad50..7b6cb9ed0 100644
--- a/host/docs/usrp2.dox
+++ b/host/docs/usrp2.dox
@@ -102,6 +102,9 @@ the front-panel LEDs blink and remain solid.
When in safe-mode, the USRP-N device will always have the IP address **192.168.10.2**.
+For more information on using external tools to unbrick your device
+when even this fails, see \ref usrp2_unbrick_n2x0.
+
\section usrp2_network Setup Networking
The USRP2 only supports Gigabit Ethernet and will not work with a 10/100
@@ -420,5 +423,55 @@ from subdevice **RX1**, and channel 1 is sourced from subdevice **RX2**
usrp->set_rx_subdev_spec("A:RX1 A:RX2");
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+\subsection usrp2_unbrick_n2x0 Unbricking an N-Series Device
+
+You'll need:
+
+- JTAG programmer: please connect it to the JTAG connector on the motherboard as shown in the attachment
+- Xilinx 'iMPACT': launch and cancel the new project wizards. You should be left with the screen which shows a single FPGA chip in the main document (auto-detected by the programmer).
+
+\image html N2xx-JTAG.jpg "N2x0 JTAG Connection"
+
+Download the latest FPGA images, e.g. using `uhd_images_downloader`.
+
+There is a sub-directory in the archive below the firmware/images called 'bit'. Use Impact to load `usrp_n210_r4_fpga.bit` via the programmer (the filename may be different depending on your device type and revision).
+
+The USRP should now be able to communicate on the network (you'll see some LEDs light up and network link be established). The next step is to flash the device and program the serial number. Both these steps can be done with UHD (the JTAG step is complete).
+
+To be sure, run `uhd_find_devices` and it should appear in the list - remember this IP address for the burner utility (should be 192.168.10.2 - make sure your network settings enable to you communicate with that subnet!).
+
+The first step is to flash the unit's safe-mode image, and then do a normal flash - both with the USRP N-series image burner utility.
+
+Make sure you have UHD installed, and the images from before, and follow the instructions in \ref usrp2_load.
+You can combine the `--fw` and `--fpga` arguments into the single invocation of the burner.
+
+You will probably use "usrp_n210_fw.bin" for the firmware and "usrp_n210_r4_fpga.bin" for the FPGA image parameters (use the full/relative file path if your current directory is not that of the images).
+
+ usrp_n2xx_net_burner.py --addr=192.168.10.2 --fw=usrp_n210_fw.bin --fpga=usrp_n210_r4_fpga.bin --overwrite-safe
+
+Use `--overwrite-safe` the first time, and then repeat without it for the second time.
+Don't forget to power-cycle the device after it has been flashed.
+
+If you see a Python exception thrown (e.g. KeyError 65535) and something about if(check_rev)... use the --dont-check-rev option too (this is when the EEPROM has not yet been initialised, or has been blanked).
+
+You can change the normal IP address by following the instructions in \ref usrp2_network_changeip.
+
+If you run `uhd_usrp_probe`, you can see the EEPROM keys at the top. Example:
+
+ Mboard: N210r4
+ hardware: 2577
+ mac-addr: a0:36:fa:25:34:a7
+ ip-addr: 192.168.10.4
+ subnet: 255.255.255.255
+ gateway: 255.255.255.255
+ gpsdo: none
+ serial: EAR14U7UP
+
+If you need to change any of there, you should then be able to run:
+
+ usrp_burn_mb_eeprom --key=<key> --val=<val>
+
+to set the 'mac-addr', 'serial' and 'Mboard'.
+
*/
// vim:ft=doxygen:
diff --git a/host/docs/usrp_x3x0_config.dox b/host/docs/usrp_x3x0_config.dox
index 935e4cc1c..2ee449cc2 100644
--- a/host/docs/usrp_x3x0_config.dox
+++ b/host/docs/usrp_x3x0_config.dox
@@ -131,6 +131,137 @@ use with a USRP X3xx:
The above file was generated and modified on a Fedora 20 system.
+\subsection x3x0cfg_hostpc_pcie PCI Express Configuration
+
+\b Note: These instructions are \b only relevant for using a
+USRP X3xx device over a cabled PCIe transport (PCIe over MXIe cable).
+If you are using your USRP X3xx device over 1 Gigabit Ethernet or
+10 Gigabit Ethernet, these instructions do <em>not apply to you.</em>
+
+\subsubsection x3x0cfg_hostpc_pcie_linux Linux Systems
+
+In order to use the USRP X300/X310 with PCI Express on Linux,
+NI USRP RIO kernel modules needs to be installed. In order to use
+the PCIe kernel module, and thus PCIe-over-cable with the X3xx,
+your kernel version must be supported by the kernel module.
+Only 64-bit kernels are supported. To check if your kernel is supported
+by the drivers, check the NI USRP RIO website.
+
+#### Downloading and Extracting Installer
+
+- Download the installer from here: http://files.ettus.com/binaries/niusrprio/niusrprio-installer.tar.gz
+- Extract it with the following command:
+
+ tar zxf niusrprio-installer.tar.gz
+
+The files will be extracted into a directory called `niusrprio-installer`.
+
+#### Installation
+
+To install the NI USRPRIO kernel modules and RPC server, run the following command:
+
+ sudo niusrprio-installer/INSTALL
+
+Select `y` for each prompt, and the script will install all necessary components.
+This script will automatically load all necessary kernel modules for
+the duration of the session.
+
+#### Enabling/Disabling Usage
+
+Once everything is installed, run the following commands to enable
+use of the X300/X310 over PCI Express (the assumption is that `niusrprio_pcie`
+was installed into your `$PATH`):
+
+ sudo niusrprio_pcie start
+
+To stop these processes, run the following command:
+
+ sudo niusrprio_pcie stop
+
+To check if the kernel modules are loaded and if the RPC server
+is running, run the following command:
+
+ niusrprio_pcie status
+
+\b Note: `niusrprio_pcie` start does not run when the host system is booted.
+If you would like the USRP PCIe device to be available automatically after
+a system restart, please create an init.d script that runs `niusrprio_pcie start`.
+
+#### Hot-plugging/Power-cycling
+
+The USRP X3x0, NI USRP-294x and NI USRP-295x devices cannot be hot-swapped when
+connected over PCI Express. Unplugging the PCI Express connection or powering
+the device should be done only after disabling the device using the following command.
+
+ sudo /usr/local/bin/niusrprio_pcie stop
+
+\b Warning: If the device is unplugged without running the above command, the system
+can become unstable and crash.
+
+#### Linux kernel upgrades
+
+The NI USRP RIO kernel modules are built for a specific kernel version.
+If you upgrade/downgrade the linux kernel on the host to a version different
+from the one that the installer was run on, then you may see the following
+error message when running `niusrprio start`:
+
+ ERROR: could not insert 'NiRioSrv': Unknown symbol in module, or unknown parameter (see dmesg)
+ ERROR: could not insert 'niusrpriok': Unknown symbol in module, or unknown parameter (see dmesg)
+
+To rebuild the kernel modules for the currently running kernel, simple run the following
+
+ sudo /usr/local/bin/niusrprio_pcie stop
+ sudo /usr/local/bin/updateNIDrivers --no-prompt
+ sudo /usr/local/bin/niusrprio_pcie start
+
+#### Uninstallation
+
+To uninstall the NI USRP RIO kernel modules and RPC server, run the following command:
+
+ sudo niusrprio-installer/UNINSTALL
+
+Select `y` at the prompt, and the script will uninstall all installed components.
+
+\subsubsection x3x0cfg_hostpc_pcie_windows Windows
+
+In order to use the USRP X300/X310 with PCI Express on Windows, the
+NI-RIO driver package and the NI-USRP RIO kernel driver needs to be installed.
+
+\b Note: The kernel driver is only supported with certain Windows versions.
+Check the NI USRP RIO website to see if your version is supported.
+
+#### Installing NI-USRP
+
+The NI-USRP 1.3 installer can be downloaded from this location: http://www.ni.com/download/ni-usrp-1.3/4711/en/
+
+You will need to create a free NI User Account to download the installer.
+Perform the following steps to download and install the NI-USRP exe driver package:
+
+- Choose the "2. Standard Download:NIUSRP130.exe" option to download NIUSRP130.exe to your computer
+- Run NIUSRP130.exe as an Administrator and extract the contents to C:\\National Instruments Downloads\\NI-USRP\\1.3
+- In the extract location, run setup.exe and follow the prompts.
+
+Reboot the computer after both the NI-USRP package has been installed.
+
+#### Enabling/Disabling Usage
+
+Once everything is installed and the system is rebooted, your X300/X310 PCI Express device should automatically be detected by the Windows Device Manager. The device should be enabled by default.
+
+- To disable the USRPRIO device, navigate to "Device Manager", locate your USRPRIO-X3x0 device, right-click on it and choose "Disable".
+- To enable the USRPRIO device, navigate to "Device Manager", locate your USRPRIO-X3x0 device, right-click on it and choose "Enable".
+
+#### Hot-plugging/Power-cycling
+
+The USRP X3x0, NI USRP-294x and NI USRP-295x devices cannot be hot-swapped when connected over PCI Express. Unplugging the PCI Express connection or powering the device should be done only after disabling the device.
+
+\b Warning: If the device is unplugged without running the above command, the system can become unstable and crash
+
+#### Uninstalling NI-USRP
+
+Navigate to the Control Panel and open "Programs". Then select National Instruments
+Software and select NI-USRP and NI-RIO from the list. Click on uninstall
+to remove the drivers from your system.
+
\subsection x3x0cfg_hostpc_pwr Power Management
Power management on the host system attempts to save power by reducing