aioscilloscope / Notes / October 2026

ngscopeclient at full speed: what NovaOS learned from ThunderScope

ThunderScope's waveforms reach ngscopeclient as fast as the app can draw them, because its server pushes them instead of waiting to be asked. Since release 69, NovaOS does the same on the Rigol DHO900 and MHO900. ngscopeclient 0.3 now shows 64 waveforms a second with all four channels, and 1 Mpts records arrive at the network port's full speed.

Four channels, 64 waveforms a second · ngscopeclient 0.3 on a Windows PC, connected to our DHO924S; top left, the app's own waveform-rate readout.

CH1How ThunderScope does it

We read ThunderScope's gateware, its driver, its TS.NET server and ngscopeclient's driver for it, end to end.

One more thing in ngscopeclient matters: it processes one waveform per drawn frame, for every driver. On our PC that is about 64 a second. So what makes ThunderScope fast in ngscopeclient is how many points each waveform carries, and how little time each one costs on the wire.

CH2Why asking for each waveform tops out

ngscopeclient's Rigol driver asks for every waveform: arm a single capture, poll until it has triggered, then for each channel ask for its scale and its samples. Release 69 made each of those answers as fast as we could, and with one channel the Rigol driver now reaches the app's frame limit too. With four channels it still makes four rounds of requests per waveform, so it shows about half the frame rate.

CH3What NovaOS does now

NovaOS answers ngscopeclient's ThunderScope driver on ports 5025 and 5026, with TS.NET's commands and its push protocol byte for byte. Behind it, nothing is like ThunderScope's:

CH4Measured in ngscopeclient 0.3

Release 69 on our own DHO924S and MHO934, the same Windows PC and the built-in 100 Mb/s network port, waveforms a second as the app counted them:

SetupDHO924S, Rigol driverDHO924S, ThunderScope driverMHO934, Rigol driverMHO934, ThunderScope driver
1 channel, 10 kpts63.464.059.864.0
4 channels, 10 kpts31.864.031.564.0
1 channel, 1 Mpts4.85.94.85.9

64 a second is the app's frame limit: every waveform took one drawn frame. 5.9 a second at 1 Mpts is 11.8 MB/s, the network port's own limit. The scope sent as many waveforms as the app read, so none were made and thrown away.

How to connect

In ngscopeclient, add an oscilloscope with driver thunderscope, transport twinlan and the path <scope address>:5025:5026, or start it with:

ngscopeclient scope:thunderscope:twinlan:192.168.1.50:5025:5026

The Rigol driver keeps working as before, on scope:rigol:lan:<scope address>:5555. Both ports answer on the network and on the USB link, the same as SCPI.

Limits of borrowing a driver

A driver of NovaOS's own for ngscopeclient now runs on our DHO924S and MHO934. It uses the same push at the same speed, 64 waveforms a second with four channels, and reads the scope's own channels, ranges, couplings and triggers when it connects instead of setting them.

Measured on our own DHO924S and MHO934 in October 2026. Thanks to the ThunderScope and ngscopeclient projects for open designs worth learning from, and to Hydron, who asked for faster waveform download.