/*! \page page_install_binary Binary Installation

\tableofcontents

\section install_win Installation on Windows

We provide UHD software installers for 64-bit 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.
LibUSBx binaries are included in Ettus Research supplied installers
starting from UHD version 4.8. If desired, the installed LibUSB DLL
(at \<UHD Install Dir\>\\bin) may be replaced with a custom, compatible 
version. Refer to \ref install_libUSB

\subsection install_win_installer Installer Packages

Windows installers are provided for a select set of hardware architectures 
and compiler version combinations. These are encoded in the installer file names.
For example a installer ending with the name .._Win64_VS2019.exe indicates 
UHD was build for the 64-bit Windows platform using the Visual Studio 2019 
compiler suite.
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).

After running the Installer for the desired MSVC Compiler consider the 
following post-install tasks.

\subsubsection install_win_post Post-Install Tasks

Install the MSVC Redistributable Package

- Download <a href="https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022
">MSVC Redistributable Package</a> for the hardware architecture encoded in 
the UHD installer file name and run the downloaded installer package.

Using a USB-based device?

- Starting with UHD version 4.9, the UHD Installer package installs a copy 
  of the Windows UHD USB Driver within the UHD installation folder 
  (by default "C:\\Program Files\\UHD"). It also automatically installs 
  all driver installer packages into Windows, eliminating this 
  post-installation step that was required in previous UHD versions.
  
  Alternatively, these may be separately downloaded from the UHD wiki page: 
  <a href="http://files.ettus.com/binaries/misc/erllc_uhd_winusb_driver.zip">erllc_uhd_winusb_driver.zip</a>.
  Manually downloaded driver installer packages must also be installed into Windows
  once per host computer to use a USB-based product with UHD software.
  Perform the following steps for each USB device type:
  + Open the device manager and plug in the USRP device. 
    You will see an unrecognized USB device in the device manager.
  + Right click on the unrecognized USB device and select update/install 
    driver software (may vary for your OS).
  + In the driver installation wizard, select "browse for driver", 
    browse to \<UHD Install Dir\>\\share\\uhd\\usbdriver folder, and select the 
    .inf file for your USRP device type.
  + Continue through the installation wizard until the driver is installed.

\subsection install_win_python Python Packages

With UHD version 4.8 and above, the UHD Python APIs for Windows are made available as
separate binary distribution package (wheel) on <a href="https://pypi.org">pypi.org</a>.
The wheel package is available for the same hardware architecture and compiler version
as the UHD installer package supporting multiple Python versions. For UHD 4.8, these are 
Python 3.10 and 3.12. 

First, ensure that the UHD Installer Package and an appropriate Python version are 
installed on your system, for example:

- \<UHD Install Dir\> typical C:\\Program Files\\UHD
- \<Python Install Dir\> typical \%LocalAppData\%\\Programs\\Python\\Python3xx
- \<python\> executable would then be located under \<Python Install Dir\> e.g. \%LocalAppData\%\\Programs\\Python\\Python3xx\\python.exe

You need to make sure that the version of the UHD Python package (wheel) you want to
install matches the version of the UHD Installer Package you have installed on your 
system. After that, the UHD Python package can be installed using the `pip install`
command. This will automatically download the wheel from the Python Package Index 
<a href="https://pypi.org">pypi.org</a> and install it in the Python environment
you are using. To perform the mentioned steps, use the commands below:

    <UHD Install Dir>\bin\uhd_config_info.exe --version #find the version of UHD
    <python> -m pip install uhd==<version_from_config_info> #install matching wheel
    
To verify that the UHD Python package has been successfully installed, run the python
executable of your environment and import the UHD module:

    <python>
    >>> import uhd

If the 'import uhd' command executes without any error, you can continue \ref python_usage.

\subsubsection Troubleshooting

In case of errors or detected version mismatches, consider version alignment of 
UHD Installer Package and UHD Python Package (wheel). Subsequent commands can
be used to identify the version of the UHD Python Package and to update or
install a specific version. Please make sure that you have opened a new command shell
after updating the UHD Installer Package to ensure that the new version 
of the UHD binaries is used. \n
Note: For more information on how the Windows binaries (DLLs) are searched during 
initialization of the UHD Python module, please refer to Python 3.8 Note in 
section \ref python_install_windows.

To get the UHD version of the currently installed wheel, use:
    
    <python> -m pip show uhd

To get a list of available UHD Python Package versions on 
<a href="https://pypi.org">pypi.org</a>, use the following command:

    <python> -m pip index versions uhd

To upgrade to the latest version, use:
    
    <python> -m pip install --upgrade uhd

To install a specific version, use:
    
    <python> -m pip install uhd==<version>

To identify the Python version you have installed, use the following command:
    
    <python> --version

To identify supported Python versions for the UHD Python Package, you can visit 
the UHD project page: <a href="https://pypi.org/project/uhd/">pypi.org/project/uhd</a>

To update to the latest or a specific UHD Installer Package, please check 
documentation under \ref install_win_installer.

Note: UHD Python Packages (wheels) that do not match the UHD binaries from the
Installer Package might not work correctly at all. Those configurations are
not tested and not supported.

\subsection install_libUSB Manual Install of libUSB (optional)

If you wish to use an alternative version of LibUSB to the one provided with the installer,
you can download the latest version of libUSB from the
<a href="https://github.com/libusb/libusb/releases">LibUSB GitHub releases page</a>.
Each release includes binaries built for various platforms and compiler
versions. It’s crucial that the LibUSB binary corresponds to the platform
and compiler version used for the UHD binaries. This detail is indicated
in the name of the installer executable;
for example, uhd_4.7.0.0-release_Win64_VS2017.exe indicates it was built
for the 64-bit Windows platform using the Visual Studio 2017 compiler suite.
Copy all files from the path \\VS20XX\\MSYY\\dll within the archive to the bin folder
of the UHD installation location (by default "C:\Program Files\UHD\bin").
VS20XX is the Visual Studio version that you find in the name of the UHD installer.
YY is the bitness of your Windows version (32 or 64).

To validate that LibUSB has been successfully installed,
run uhd_find_devices from the bin folder of your UHD installation.

If the program fails to locate the LibUSB binaries an error message is displayed.
This can happen for the following reasons:

1. You’ve copied an incorrect version.
2. The binaries are not in a searchable location for the UHD binaries.
3. A conflicting LibUSB binary installed on your system which is not compatible
   is detected first.


\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 uhd-host

On Fedora systems, an equivalent command would be:

    sudo yum install uhd uhd-devel

Live CD/DVD/USBs are not supported.

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. Live CD/DVD/USBs are not supported.

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 add-apt-repository ppa:ettusresearch/uhd
    sudo apt-get update
    sudo apt-get install libuhd-dev uhd-host

\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:
