The majority of development is performed on Linux operating systems (primarily Debian) so this is the most well tested platform, however Windows and Mac OS are also supported.
Any 64-bit Intel or AMD processor, or Apple Silicon Mac, should be able to run ngscopeclient. If AVX2 and/or AVX512F support is present ngscopeclient will use special optimized versions of some signal processing functions, however neither instruction set is required. Other (non Apple Silicon) ARM64 platforms may work if a compatible GPU is available, but have not been tested. We don’t actively test on 32-bit platforms due to the significant RAM requirements, but we won’t stop you from trying and would love to hear if you get it working.
A mouse with scroll wheel, or touchpad with scroll gesture support, is mandatory to enable full use of the UI. We may explore alternative input methods for some UI elements in the future.
Any GPU with Vulkan support should be able to run ngscopeclient, however Vulkan 1.2 will deliver better performance. The minimum supported GPUs are:
Note that many virtual machine graphics stacks (e.g. VMWare) do not provide Vulkan unless a PCIe passthrough GPU is being used.
The minimum RAM requirement to launch ngscopeclient is relatively small; however, actual memory consumption is heavily dependent on workload and can easily reach into the tens of gigabytes when doing complex analysis on many channels with deep history.
Typical RAM consumption examples:
Large amounts of GPU RAM are required for working with deep waveforms, especially if you intend to perform complex analysis on them. Analog waveforms are stored in 32-bit floating point format internally, so a single 256 megapoint waveform will consume 1GB of GPU memory. Intermediate results in multi-step filter pipelines require GPU memory as well, even if not displayed.
The maximum supported waveform size depends on your Vulkan implementation but is typically \(2^32\) bytes (4 GB). This translates to one gigapoint analog or four gigapoints digital.
ngscopeclient uses the libscopehal library to communicate with instruments, so any libscopehal-compatible hardware should work with ngscopeclient. See the Oscilloscope Drivers section for more details on which hardware is supported and how to configure specific drivers.
Prebuilt binary packages are available for some of our supported platforms.
The latest released binaries can be downloaded from GitHub at (FIXME url here).
If you are feeling adventurous and want to try bleeding-edge code, or are testing a fix at a developer’s request, packages for a limited set of platforms (currently Ubuntu 20.04, 22.04, 24.04, and Windows) are automatically built each commit as part of the GitHub CI pipeline.
To access development packages, log into GitHub (sorry, development binaries are not available to anonymous users - this is on GitHub’s end and not under our control) and go to https://github.com/ngscopeclient/scopehal-apps/actions. Select build-ubuntu or build-windows as appropriate, click the commit you wish to test, and download the appropriate .msi or .deb package.
ngscopeclient can be compiled on Linux, macOS, and Windows. While the compilation process is generally similar, various steps differ among platform and distro.
Basic requirements:
sudo apt-get install build-essential git cmake pkgconf libgtk-3-dev libsigc++-2.0-dev libyaml-cpp-dev catch2 libglfw3-dev curl xzip libhidapi-dev
On Debian bookworm and later, you can use system-provided Vulkan packages. Skip this if you choose to use the upstream Vulkan SDK instead:
sudo apt-get install libvulkan-dev glslang-dev glslang-tools spirv-tools glslc
To build the LXI component (needed if you have LXI- or VXI-11-based instruments):
sudo apt install liblxi-dev libtirpc-dev
To build the documentation, you will also need LaTeX packages:
sudo apt install texlive texlive-fonts-extra texlive-extra-utils
Basic requirements:
sudo apt install build-essential git cmake pkgconf libgtk-3-dev libsigc++-2.0-dev libyaml-cpp-dev catch2 libglfw3-dev curl xzip libhidapi-dev
On Ubuntu 22.10 and earlier (including 20.04 and 22.04), you will need to use the Vulkan SDK. Instructions for installing this are in a later step. On Ubuntu 23.04 and later, you can instead use system-provided Vulkan packages:
sudo apt-get install libvulkan-dev glslang-dev glslang-tools spirv-tools glslc
To build the LXI component (needed if you have LXI- or VXI-11-based instruments):
sudo apt install liblxi-dev libtirpc-dev
To build the documentation, you will also need LaTeX packages:
sudo apt install texlive texlive-fonts-extra texlive-extra-utils
Basic requirements:
sudo dnf install git gcc g++ cmake make pkgconf gtk3-devel libsigc++30-devel yaml-cpp-devel catch-devel glfw-devel hidapi-devel
System-provided Vulkan packages. Skip these if you choose to use the Vulkan SDK instead:
sudo dnf install vulkan-headers vulkan-loader-devel glslang-devel glslc libshaderc-devel spirv-tools-devel
To build the LXI component (needed if you have LXI- or VXI-11-based instruments):
sudo dnf install liblxi-devel libtirpc-devel
To build the documentation, you will also need LaTeX packages:
sudo dnf install texlive
As Alpine Linux uses musl libc, you will need to use system-provided Vulkan packages, and not the Vulkan SDK.
apk add git gcc g++ cmake make pkgconf gtk+3.0-dev libsigc++-dev yaml-cpp-dev catch2-3 vulkan-loader-dev glslang-dev glslang-static glfw-dev shaderc-dev spirv-tools-dev libhidapi-dev
If you are using an older stable release (such as CentOS 7), you may need to install some dependencies from source.
In many cases, you can install the SDK components from distro-provided repositories, which is covered above. When possible, this is preferred over installing the Vulkan SDK. If you choose not to, or are running a Linux distro that does not provide these packages (for instance, Debian Bullseye, Ubuntu versions prior to 23.04, or other stable distros), the following instructions cover installing and loading the Vulkan SDK.
The latest tested SDK at the time of documentation update is version 1.3.275.0. Newer SDKs are supported, but breaking changes sometimes take place. If you are using a newer SDK and run into problems, please file a bug report.
If you are using Ubuntu 20.04 or 22.04, you may install the .deb packaged SDK release instead of following the instructions below. This may work for Debian as well but is not supported.
Alternatively, to use the tarball packaged SDK, download and unpack the tarball. You can manually download the SDK, or do the following:
cd ~ mkdir VulkanSDK cd VulkanSDK curl -LO 'https://vulkan.lunarg.com/sdk/download/1.3.275.0/linux/vulkansdk-linux-x86_64-1.3.275.0.tar.xz' tar xfv vulkansdk-linux-x86_64-1.3.275.0.tar.xz
And then source the ‘setup-env.sh‘ file:
source "$HOME/VulkanSDK/1.3.275.0/setup-env.sh"
When using the tarball-packaged SDK, you will need to source the ‘setup-env.sh‘ file any time you want to compile or run ngscopeclient. For convenience, you can add this to your ‘.bash_profile‘ or equivalent:
echo "source \"$HOME/VulkanSDK/1.3.275.0/setup-env.sh\"" >> ~/.bash_profile
cd ~ git clone --recursive https://github.com/ngscopeclient/scopehal-apps.git cd scopehal-apps mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release make -j4
You will need Xcode (either from the App Store or the Apple developer site); after installing, run it once for it to install system components. This provides gcc, g++, make, and similar required packages.
With Homebrew (brew.sh):
brew install pkg-config libsigc++ glfw cmake yaml-cpp catch2 libomp hidapi libpng
brew install vulkan-headers vulkan-loader glslang shaderc spirv-tools molten-vk
Download and install the Vulkan SDK.. The latest tested SDK at the time of documentation update is version 1.3.275.0. Newer SDKs are supported, but breaking changes sometimes take place. If you are using a newer SDK and run into problems, please file a bug report.
And then source the ‘setup-env.sh‘ file:
source "$HOME/VulkanSDK/1.3.275.0/setup-env.sh"
When using the SDK, you will need to source the ‘setup-env.sh‘ file any time you want to compile or run ngscopeclient. For convenience, you can add this to your ‘.zprofile‘ or equivalent:
echo "source \"$HOME/VulkanSDK/1.3.275.0/setup-env.sh\"" >> ~/.zprofile
cd ~ git clone --recursive https://github.com/ngscopeclient/scopehal-apps.git cd scopehal-apps mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$(brew --prefix);$(brew --prefix)/opt/libomp" make -j4
On Windows, we make use of the MSYS2 development environment, which gives us access to the MingGW-w64 toolchain. Since this toolchain allows ngscopeclient to be compiled as a native Windows application, the project might be run outside of MSYS2.
The following steps can be done in any MSYS-provided shell.
pacman -S git wget mingw-w64-ucrt-x86\_64-cmake mingw-w64-ucrt-x86\_64-toolchain
pacman -S mingw-w64-ucrt-x86\_64-libsigc++ mingw-w64-ucrt-x86\_64-yaml-cpp mingw-w64-ucrt-x86\_64-glfw mingw-w64-ucrt-x86\_64-catch mingw-w64-ucrt-x86\_64-hidapi mingw-w64-ucrt-x86\_64-libpng
pacman -S mingw-w64-ucrt-x86\_64-vulkan-headers mingw-w64-ucrt-x86\_64-vulkan-loader mingw-w64-ucrt-x86\_64-shaderc mingw-w64-ucrt-x86\_64-glslang mingw-w64-ucrt-x86\_64-spirv-tools
pacman -S mingw-w64-ucrt-x86\_64-ffts
cd ~ git clone --recursive https://github.com/ngscopeclient/scopehal-apps
All following steps are to be done in a UCRT64 shell.
cd scopehal-apps mkdir build cd build cmake .. ninja -j4
Download and install WiX Toolset.
You can download it from https://github.com/wixtoolset/wix3/releases
If you install it to the path "C:\Program Files (x86)\WiX Toolset v3.14" run the following cmake
command instead of cmake .. mentioned earlier:
cmake .. -DWIXPATH="C:\Program Files (x86)\WiX Toolset v3.14\bin"
ninja compilation will now generate the installer after binaries.
Building scopehal and scopehal-apps with MSYS2 will install requierd dependencies in MSYS2’s libpath, that’s why ngscopeclient has to be launched from a MSYS2 shell (use MSI installer to generate a standalone package).
The binaries can be found in the build directory, such as ngscopeclient in $HOME/scopehal-apps/build/src/ngscopeclient.
Use the following commands to run ngscopeclient:
cd src/ngscopeclient/ ./ngscopeclient.exe
Or with some debug options:
./ngscopeclient.exe --debug --trace SCPISocketTransport
When running ngscopeclient with no arguments, an empty session (Fig. 3.1) is created. To perform useful work, you can:
ngscopeclient takes standard liblogtools arguments for controlling console debug verbosity.
If no verbosity level is specified, the default is “notice" (3). (We suggest using --debug for routine use until the v1.0 release to aid in troubleshooting.)