Skip to content

Releases: ngscopeclient/scopehal-apps

Version 0.1.1

01 Jan 06:11

Choose a tag to compare

ngscopeclient v0.1.1 release notes

This is primarily a bug-fix release, although it also adds two new instrument drivers (Batronix Magnova and SiniLink XYS3580)

Platform Support

Supported Platforms

We have tested ngscopeclient on the following platforms and ship official binaries for them.

  • Windows 11 (x86-64)
  • MacOS 15 or newer (x86-64)
  • MacOS 15 or newer (Apple Silicon / arm64)
  • Linux
    • Arch (x86-64)
    • Debian 12 "Bookworm" (x86-64)
    • Debian 13 "Trixie" (x86-64)
    • Fedora 42 (x86-64)
    • Ubuntu 22.04 (x86-64)
    • Ubuntu 24.04 (x86-64)

Unsupported client platforms

We have not tested on ARM Windows or Linux, or Linux distros not listed as supported. We welcome test results, successful or otherwise, if you compile from source on these platforms.

MacOS 13 and 14 support on x86-64 has been officially removed due to GitHub's CI runners no longer supporting them, so we cannot easily validate changes on them. However, there are no known incompatibilities.

Instrument Support

Check the PDF or online user manual for details on driver feature limitations, which drivers support each model, etc.

A "slow" marking indicates that the device is supported, but known to have poor performance due to instrument firmware
limitations. (Many benchtop scopes, even relatively high end ones, are not well optimized for remote control. Delays of hundreds of milliseconds between the trigger and the API reporting availability of data, and multiple seconds to actually download waveform data, are not uncommon on entry level instruments)

Quick summary of known working models (other similar ones may work but are not tested):

  • Agilent: DSO5000, DSO6000/MSO6000, DSOX1200, MSOX-2000, MSOX-3000, MSOX-3000T (slow)
  • Alientek: DP100
  • Andy Haas: Haasoscope Pro
  • ASEQ Instruments: LR1
  • Batronix: Magnova
  • Copper Mountain: Tested on S5180B, all other models use same host software and should also work
  • Digilent: Analog Discovery 2, Analog Discovery Pro
  • edy555: NanoVNA
  • EEVengers: ThunderScope
  • Erik Kaashoek: TinySA Ultra
  • Ettus Research: UHD-based SDRs (receive only)
  • Generic: CSV streaming data over socket, Linux socketcan
  • GW Instek: GPD-X303S
  • Keysight: MSOX-2000, MSOX-3000, MSOX-3000T (slow), DCA 86100A
  • Kuaiqu: SSPS-S, SPPS*D, SPPS-D, R-SPPS
  • Microphase: AntSDR (running UHD firmware, IIO not supported)
  • MultiLane: ML4039-BTP
  • Owon: XDG 2000/3000, XDM1041/1241
  • Pico: 3000D, 6000E, PicoVNA 106/108 (using PicoVNA 5 software)
  • Riden: RD series
  • Rigol: DG4000, DS1100D/E (slow), DS1000Z (slow), MSO5000 (slow), DHO800 (slow), DHO900 (slow), DP832/832A
  • Rohde & Schwarz: HMC8012, HMC804x, RTM3000 (partial), RTO6
  • Siglent: SDG2000X, SDL1000X/X-E, SDS1000X-E (slow), SDS2000X-E (slow), SDS800X HD (slow), SDS1000X HD (slow),
    SDS2000X+ (slow), SDS2000X HD (slow), SDS3000X HD (slow), SDS5000X (slow), SDS6000A, SDS7000A, SPD3303X/X-E, SSG5000X
  • Simulator: oscilloscope, power supply
  • SiniLink: XYS3580
  • Tektronix: MSO5/6 (slow, instrument firmware occasionally crashes)
  • Teledyne LeCroy: DDA5000A, HDO9000, SDA 8Zi, WaveRunner Xi/8000/9000, WaveSurfer 3000 tested and known to work. All
    MAUI-based scopes use the same remoting API and are very likely to work but we didn't have access to every model to
    test. The WaveSurfer line have underpowered CPUs and are significantly slower for remote operation than higher end models.

What's New (since v0.1)

New application features

  • Filters: 8B/10B decode now tries more aggressively to recover comma sync after bitslipping when decoding jittery or noisy data, rather than giving decode errors for the remainder of the waveform (ngscopeclient/scopehal#1025)
  • Filters: Added basic decoding for PCIe message TLPs (hex type and body but no upper layer)
  • Filters: Initial implementation of PCIe BDF decoding for destination addresses in configuration write TLPs (ngscopeclient/scopehal#1030)
  • General: Added --help and --version command line arguments (#931)

New driver features

Other changes

  • GUI: Updated to latest upstream imgui (1.92.5)
  • GUI: Protocol analyzer now displays marker text in the rightmost column if there is no hexdump column, and stretches the column width to leave room for text (#926) rather than defaulting to the leftmost which might be too small to read clearly
  • Packaging: allow version to be embedded in tarballs rather than relying on git (ngscopeclient/scopehal#1008)
  • Tests: Unit tests now use FFTW instead of FFTS because FFTS had portability issues and a GPL dependency is fine for unit tests we don't redistribute (ngscopeclient/scopehal#757)

Bugs fixed (since v0.1)

General

  • Filters: Incorrect loading of CSV files with Windows line endings (ngscopeclient/scopehal#1002)
  • Filters: PCIe link training decode got confused if the waveform started with the link in L0 then it dropped (ngscopeclient/scopehal#1024)
  • GUI: Crash in protocol analyzer dialog caused by deleting packet manager during a partial filter graph refresh (#925)
  • GUI: Crash with vk::OutOfHostMemoryError when application is minimized on a Windows system with an Intel ARC GPU (#893)
  • GUI: Crash with YAML::ParserException when instrument path contains a backslash (#915)
  • GUI: Changing the color of a waveform in the properties dialog did not redraw in the new color until the waveform was moved or the scope triggered again (#924)
  • GUI: DPI scaling issues in the filter graph editor (#868)
  • GUI: Font size in filter graph editor popup menus would change slightly if the menu went out of the parent window (#932)
  • GUI: Typing a new trigger position into the text box in the trigger properties dialog does not actually change the trigger position in hardware (no github ticket)
  • GUI: Protocol analyzer dialogs still show the old title if a filter is renamed (#923)
  • Packaging: tarballs didn't tag binaries with the hash since no .git folder was included and there was no other way to pass that info along (#910)
  • Packaging: Incorrect version dependencies on Debian/Ubuntu packages (#896)
  • Tests: Incorrect buffer size calculation in DeEmbedFilter unit test causing intermittent crashes of the test case in CI (no github ticket)

Drivers

  • Agilent: problems with DSO-X 2022A since it only has eight digital channels (ngscopeclient/scopehal#1015)
  • LeCroy: Crash with std::out_of_range when acquiring wavefrom on WaveSurfer 3000/3000Z (ngscopeclient/scopehal#1026)
  • Siglent: many crashes and malfunctions especially with SDS HD series scopes (ngscopeclient/scopehal#1023)
  • Siglent: function generator configuration refreshes too fast, causing device firmware to freeze (ngscopeclient/scopehal#1008)
  • ThunderScope: trigger position would occasionally be corrupted and get stuck at -9223 seconds (no github ticket)
  • ThunderScope, Pico, Digilent: when waiting for a trigger event the socket TX buffer would never be flushed causing changes to instrument settings to not take effect

Known bugs and issues

It's not perfect, but if we waited until it was we'd never ship. Here's a few of the most notable quirks you might run into.

  • Toolbar icons for "single trigger" and "force trigger" are not visually distinct (#791)
  • Area-under-curve filter is missing proper Y axis grid lines
    (#891)
  • Docking anchors act funny on MacOS (#871)
  • Title bars of free floating dock spaces have too-large fonts (#869)
  • Newly added channels can spawn in plots which are not currently visible making them hard to find (#657)
  • Newly added filters may not have same gain/offset as the plot they spawn in (#652)
  • Eye patterns forget color ramp setting when dragged to a new plot (#556)
  • GUI light mode is impractical to use. Many color defaults are set assuming dark mode and have poor contrast when light mode is selected unless dozens of preferences are individually updated to match, and toolbar icons don't have light mode variants (#526)
  • Filter graph nodes are reference counted and should (occasionally this does not happen due to dangling reference bugs) self-delete when all consumers of their output (waveform views, filter inputs, etc.) are removed. This is non-ideal from a user experience perspective, but can't be fixed without substantial refactorings (planned for v0.2) and we didn't want to delay shipping v0.1.1 any further. v0.2 will eliminate the ...
Read more

Version 0.1

11 Sep 15:54

Choose a tag to compare

Platform Support

Supported Platforms

We have tested ngscopeclient on the following platforms and ship official binaries for them.

  • Windows 11 (x86-64)
  • MacOS 13 or newer (x86-64)
  • MacOS 15 or newer (Apple Silicon / arm64)
  • Linux
    • Arch (x86-64)
    • Debian 12 "Bookworm" (x86-64)
    • Debian 13 "Trixie" (x86-64)
    • Fedora 42 (x86-64)
    • Ubuntu 22.04 (x86-64)
    • Ubuntu 24.04 (x86-64)

Unsupported client platforms

We have not tested on ARM Windows or Linux, or Linux distros not listed as supported. We welcome test results, successful or otherwise, if you compile from source on these platforms.

Instrument Support

Check the PDF or online user manual for details on driver feature limitations, which drivers support each model, etc.

A "slow" marking indicates that the device is supported, but known to have poor performance due to instrument firmware
limitations. (Many benchtop scopes, even relatively high end ones, are not well optimized for remote control. Delays of hundreds of milliseconds between the trigger and the API reporting availability of data, and multiple seconds to actually download waveform data, are not uncommon on entry level instruments)

Quick summary of known working models (other similar ones may work but are not tested):

  • Agilent: DSO5000, DSO6000/MSO6000, DSOX1200, MSOX-2000, MSOX-3000, MSOX-3000T (slow)
  • Alientek: DP100
  • Andy Haas: Haasoscope Pro
  • ASEQ Instruments: LR1
  • Copper Mountain: Tested on S5180B, all other models use same host software and should also work
  • Digilent: Analog Discovery 2, Analog Discovery Pro
  • edy555: NanoVNA
  • EEVengers: ThunderScope
  • Erik Kaashoek: TinySA Ultra
  • Ettus Research: UHD-based SDRs (receive only)
  • Generic: CSV streaming data over socket, Linux socketcan
  • GW Instek: GPD-X303S
  • Keysight: MSOX-2000, MSOX-3000, MSOX-3000T (slow), DCA 86100A
  • Kuaiqu: SSPS-S, SPPS*D, SPPS-D, R-SPPS
  • Microphase: AntSDR (running UHD firmware, IIO not supported)
  • MultiLane: ML4039-BTP
  • Owon: XDG 2000/3000, XDM1041/1241
  • Pico: 3000D, 6000E, PicoVNA 106/108 (using PicoVNA 5 software)
  • Riden: RD series
  • Rigol: DG4000, DS1100D/E (slow), DS1000Z (slow), MSO5000 (slow), DHO800 (slow), DHO900 (slow), DP832/832A
  • Rohde & Schwarz: HMC8012, HMC804x, RTM3000 (partial), RTO6
  • Siglent: SDG2000X, SDL1000X/X-E, SDS1000X-E (slow), SDS2000X-E (slow), SDS800X HD (slow), SDS1000X HD (slow), SDS2000X+ (slow), SDS2000X HD (slow), SDS3000X HD (slow), SDS5000X (slow), SDS6000A, SDS7000A, SPD3303X/X-E, SSG5000X
  • Simulator: oscilloscope, power supply
  • Tektronix: MSO5/6 (slow, instrument firmware occasionally crashes)
  • Teledyne LeCroy: DDA5000A, HDO9000, SDA 8Zi, WaveRunner Xi/8000/9000, WaveSurfer 3000 tested and known to work. All MAUI-based scopes use the same remoting API and are very likely to work but we didn't have access to every model to test. The WaveSurfer line have underpowered CPUs and are significantly slower for remote operation than higher end models.

What's New

Everything is new, this is the first official release!

Known bugs and issues

It's not perfect, but if we waited until it was we'd never ship. Here's a few of the most notable quirks you might run into.

  • Toolbar icons for "single trigger" and "force trigger" are not visually distinct (#791)
  • Area-under-curve filter is missing proper Y axis grid lines
    (#891)
  • Docking anchors act funny on MacOS (#871)
  • Title bars of free floating dock spaces have too-large fonts (#869)
  • Node title bars in filter graph look weird on high-DPI (#868)
  • Newly added channels can spawn in plots which are not currently visible making them hard to find (#657)
  • Newly added filters may not have same gain/offset as the plot they spawn in (#652)
  • Eye patterns forget color ramp setting when dragged to a new plot (#556)
  • GUI light mode is impractical to use. Many color defaults are set assuming dark mode and have poor contrast when light mode is selected unless dozens of preferences are individually updated to match, and toolbar icons don't have light mode variants (#526)
  • Filter graph nodes are reference counted and should (occasionally this does not happen due to dangling reference bugs) self-delete when all consumers of their output (waveform views, filter inputs, etc.) are removed. This is non-ideal from a user experience perspective, but can't be fixed without substantial refactorings (planned for v0.2) and we didn't want to delay shipping v0.1 any further. v0.2 will eliminate the homegrown reference counting in favor of std::shared_ptr which should completely eliminate this class of bug, as well as making the filter graph bidirectionally traversable which will enable manual deletion of filters and many optimizations such as not computing filter block outputs which are not being displayed or used in computations (ngscopeclient/scopehal#992).
  • OS integration including drag-and-drop to open files, double clicking files to open, etc. is incomplete on some platforms (#890)
  • Menu bar on MacOS is attached to the application like on other OSes, rather than at the top of the screen in the native menu (#510)