Skip to content

Installation

Install the UHD toolchain by following the official Ettus guide (Please follow the tutorial for Ubuntu 24.04):

Note: This code has been tested on UHD v4.9.0.1. You can checkout this version using git checkout v4.9.0.1.

This project uses the Aff3ct library for Forward Error Correction (FEC). Install it from source:

Terminal window
sudo apt-get install nlohmann-json3-dev
git clone https://github.com/aff3ct/aff3ct.git
cd aff3ct
git submodule update --init --recursive
mkdir build
cd build
cmake .. -G"Unix Makefiles" -DCMAKE_CXX_COMPILER="g++" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_CXX_FLAGS="-funroll-loops -march=native" -DAFF3CT_COMPILE_EXE="OFF" -DAFF3CT_COMPILE_SHARED_LIB="ON" -DSPU_STACKTRACE="OFF" -DSPU_STACKTRACE_SEGFAULT="OFF" -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -faligned-new"
make -j$(nproc)
sudo make install

Clone the OpenISAC repository:

Terminal window
cd ~
git clone https://github.com/zhouzhiwen2000/OpenISAC.git

The system uses YAML files for runtime configuration.

  • Config filenames: BS reads BS.yaml, and UE reads UE.yaml from the working directory.
  • First run: Template YAML files live in config/. Copy config/BS_X310.yaml / config/BS_B210.yaml or config/UE_X310.yaml / config/UE_B210.yaml to BS.yaml / UE.yaml, then edit them in place. For the B210 TDD duplex preset, copy config/BS_B210_Duplex.yaml and config/UE_B210_Duplex.yaml.

It is recommended to use a conda or venv environment with Python 3.13.

Miniconda Installation Guide:

Create a new conda environment:

Terminal window
conda create -n OpenISAC python=3.13
conda activate OpenISAC
Terminal window
pip install -r requirements.txt

Note: ffmpeg is required for video streaming demonstrations.

  • Ubuntu: sudo apt install ffmpeg
  • Windows: Download from ffmpeg.org and add to PATH, or place executable in the working directory.

If an Nvidia GPU is available, install cupy-cuda12x to enable GPU acceleration:

Note: Please ensure that the CUDA Toolkit is installed before installing CuPy.

Terminal window
pip install cupy-cuda12x

Enable Intel Integrated GPU Acceleration (Optional)

Section titled “Enable Intel Integrated GPU Acceleration (Optional)”

If your device has an Intel integrated GPU (e.g., Intel UHD Graphics, Intel Iris Xe, etc.), you can enable GPU acceleration via dpctl and dpnp. This is especially useful for laptops and desktops without a dedicated Nvidia GPU.

First, ensure your system has the latest Intel GPU driver installed:

Terminal window
pip install dpctl dpnp

Run the following command to check if the Intel GPU is correctly recognized:

Terminal window
python -c "import dpctl; print(dpctl.get_devices())"

If the installation is successful, you should see output similar to:

[<dpctl.SyclDevice [backend_type.level_zero, device_type.gpu, Intel(R) UHD Graphics] at 0x...>]

The OpenISAC frontend automatically detects available GPU backends. The priority order is:

  1. Nvidia GPU (CUDA)
  2. Intel iGPU (dpnp)
  3. CPU (fallback)

No code modifications are required; the system will automatically select the best available backend.