What each release changed on the Rigol DHO800/900 and MHO900: features, optimisations and fixes, with the measured number where we have one.
Newest r54 · 8 October 2026 · every release is built for both families; boot times run from kernel start to a live trace
Next
done, in the next release
Already made and measured; it ships with the next release.
FixDHO800/900 DHO sample clock back to stock's load timing (46 writes 50 ms apart, 2.3 s): r54's datasheet timing left the fs/2 interleave spur about 5 dB worse on fresh boots, and a clean spectrum is worth more than two seconds of boot. fs/2 spur −52…−56 dBc (r54) against −58…−63 dBc (stock timing, r53) (measured on r54)
r54
Tried and measured: the DHO's sample clock loaded at its datasheet timing. It was 2 seconds faster, but one interleave spur came out about 5 dB worse, so the next release goes back to stock's timing.
BootDHO800/900 DHO sample clock loaded at the LMX2582's datasheet timing (46 register writes 1 ms apart instead of 50 ms): the load took 0.11 s instead of 2.3 s and the ADC clock, alignment, frequency (within 0.13 ppm) and jitter matched stock's timing, but over six boots the fs/2 interleave spur was about 5 dB worse, so the next release reverts it. PLL load 2.3 s → 0.11 s; fs/2 spur −52…−56 dBc against −58…−63 dBc with stock's timing (plain reboots) (measured on r54)
r53
Your NovaOS settings survive a power cycle, decoders read the full record, the density display costs less, and the MHO's FPGA loads in half the time.
Platform NovaOS's own settings (flex knob, density display, eye and jitter, power analysis, NovaOS decoders) and the screen language now survive a power cycle; they are written once, 1 s after the last change, and an idle scope writes nothing.
Decode NovaOS decoders read the record behind the screen instead of the screen trace, so a whole DMX universe at 5 ms/div or a Modbus exchange at 10 ms/div decodes; rates step in standard values.
Acquisition Fill-paced polling: a filling batch is checked when it should be full instead of every 2 ms, so the density display now costs 1.8 % of the waveform rate at 2 µs/div. 10,158 wfm/s at 2 µs/div (+11 % over the first counted build) (measured on a bench build)
Display Screen brightness on the Display sheet; the screen saver dims the panel and sleep switches it off, on both screens.
Display Persistence clears completely on Clear or a settings change, and the XY plot's Z input blanks its density map too.
BootMHO900 MHO900 bitstream SPI clock set to an even 80 MHz, so the bus runs at 40 MHz: with the odd 88.89 MHz clock the 6.12 driver's divider had run it at 22.2 MHz, not 44.4 MHz. stream 3.04 s → 1.71–1.73 s; FPGA up at 8.8 s (was 10.0 s) (measured on r53)
Fix Reading very deep records reserves memory for at most 16 Mpts up front.
r52
Backlight control, and a boot that reaches systemd a little sooner.
Display The panel's backlight is under NovaOS's control through a small root helper: screen brightness, the saver's dimming and the power key's screen-off.
Boot The early boot reads systemd's own files into the page cache in the background before handing over; on the MHO900 the live trace now comes at 11.8–11.9 s. 12.1–12.5 s → 11.8–11.9 s (MHO900) (measured on r52)
r51
built, not deployed
Built and archived, not deployed: its changes reached the scopes in r52.
Display Flex knob: the multipurpose knobs' assignment on both screens, with a chooser on the studio screen.
Display The XY plot's Z source blanks the beam, as on stock's XYZ plot.
Display Screen saver and sleep on both screens, including SCPI's minutes and low-power forms.
Platform The Files tab previews a chosen picture (PNG, BMP, JPG).
Display Translations: one table per screen area and every sheet complete in every language.
Remote & SCPI The remote view's picture stream is read straight from the GPU's converted frames, with no extra buffer copy on the UI thread.
Platform Every factory calibration file loads the way stock reads it, and the system journal names each file used.
r50
Five more protocol decoders on screen, a faster fast-acquisition mode, and a quicker MHO FPGA load.
Decode Modbus, 1-Wire (with a reset trigger), SWD, JTAG and USB Power Delivery decode on screen and over SCPI through the NovaOS decoder hub, on both families.
Acquisition Fast acquisition uses the FPGA's peak-preserving compressed frames (two points per screen column), so more waveforms reach the density display. 9,991 → 11,705 wfm/s at 2 µs/div; 4 channels 3,603 → 4,222 (measured on a bench build)
BootMHO900 MHO900 FPGA bitstream sent in 60 KiB SPI transfers instead of 4 KiB ones, removing about 1 ms of per-message overhead 2,025 times. 3.47 s → 3.04 s stream (measured on r50)
AnalysisMHO900 An MHO900 with no stored self-calibration offers to run one once it has warmed up.
Display The classic look carries our own marks in place of Rigol's artwork.
r49
Both families now reach a live trace in about 12.5 seconds from kernel start.
BootDHO800/900 DHO FPGA bring-up starts without waiting for the whole system init (it needs only the modules, the read-only calibration mount and the root), at 6.0 s instead of after sysinit. 14.2 s → 12.5 s to a live trace (measured on r46)
BootMHO900 MHO900 boot with this release's FPGA ordering and r46's faster load: a live trace at 12.1–12.7 s from kernel start. 19.6 s (r39) → 12.1–12.7 s (measured on r49)
Display The XY plot counts every waveform too, into its own density map beside the channels'.
PlatformDHO800/900 DHO board health check: the shipped FPGA image has no temperature word (stock reads it as −273 °C), so the check no longer reports it as unreadable and watches the SoC and GPU zones from the start.
Fix Closing a sheet no longer leaves a dark band over the capture history strip.
r48
The UI draws about 65 % more frames per second, with the busy threads placed on the right cores.
Display Threads placed by plan on the RK3399: the UI's main thread on one Cortex-A72, acquisition on the other, density workers on any core; the UI runs much smoother and the waveform rate is kept. 34 → 56 UI frames/s at 20 ns/div (measured on r44)
Display The density display counts every channel combination.
UpdatesMHO900 The MHO900's self-calibration is kept across every system update.
r47
built, not deployed
Built and archived, not deployed: its changes reached the scopes in r48.
Decode NovaOS's own protocol decoders, tested offline on synthetic records: Modbus RTU and ASCII, 1-Wire (reset and presence, standard and overdrive, ROM search, CRC8, DS18x20 scratchpads), SWD, JTAG and USB Power Delivery on the CC line.
Decode The NovaOS decoder hub, a bus mode beside stock's, and DMX512 / RDM as its first on-screen protocol.
Platform Self check from the System sheet: every key and knob, the screen's 15 test colours, touch, and the board's health.
Display Korean and Thai drawn from Noto Sans fonts instead of empty boxes, and the first phase of switching the screens' language.
Remote & SCPI :LAN:DESCription renames the scope's mDNS services.
r46
The MHO's FPGA loads without fixed waits, the waveform-rate dip is gone, and decode catches up with stock.
BootMHO900 MHO900 FPGA load waits for the FPGA's own power-on reset signal instead of a fixed 0.5 s, and reads the 8 MiB bitstream while the supplies settle. INIT_B high 24–26 ms after the supply (stock waits 0.5 s) (measured on r49)
Boot The early boot mounts the read-only calibration partition itself and loads the FPGA's first two kernel modules by name, so the FPGA unit no longer waits for udev's coldplug (the time gain arrives with r49's unit ordering).
Acquisition Waveform-rate dip fixed: past the fill wait a batch is played as soon as a frame lands, not on a 30 ms tick. 90.6 → 178.7 wfm/s, MHO900 untriggered AUTO at 10 µs/div, against the old batching (measured on r45)
Decode 10-bit I2C addresses on both families' tables, live CAN decode follows the CAN-FD data rate and sample points, LIN break detection as stock's, and I2S word size defaults as stock's.
Platform CH341 USB-serial adapters and USB Ethernet (AX88179/178A and CDC/NCM) work as on-demand kernel modules.
r45
Digital phosphor: every acquired waveform now lands in the density display.
Display Density display (digital phosphor) counted in the engine on worker threads, so every acquired waveform is drawn, with a temperature palette, log scale and rare-hit highlighting. coverage 33–89 % → 100 % (measured on a bench build)
Acquisition Fast acquisition: 4–8 times more frames per batch, spreading the per-batch costs. +12 % at 2 µs/div (8,949 → 9,991 wfm/s), +6 % at 20 and 200 ns/div (measured on a bench build)
Remote & SCPI :NOVAos:DPX:* over SCPI: the live rate and coverage, palette, scale, rare hits and fast acquisition; the ruler above the plot shows the live waveform rate.
Fix Roll mode streams again; it had stopped after the first slow frame.
Remote & SCPI :SYSTem:RESet restarts NovaOS, and the factory and LAN reset forms answer with a clear refusal instead of nothing.
Display The classic look gets the same minimum text size as the studio screen.
r44
The DHO reaches a live trace in half the time.
BootDHO800/900 DHO FPGA bring-up: about 15 s of fixed waits replaced by readiness probing; the boot command goes out as soon as the clock is up, the first PCIe probe follows 2 s later, and a boot the FPGA dropped is noticed by its version stamp and sent again. FPGA phase 15.3 s → 2.0 s; live trace 28.7 s → 14.4 s (measured on r44)
AcquisitionMHO900 MHO900 untriggered AUTO: frames are batched up to eight at a time (at most 30 ms) instead of two, cutting the acquisition thread's CPU by about a third. 88 → 32 batches/s (measured on r41)
Analysis The measurement histogram is computed in the engine; MHO900 thresholds are in their channel's unit.
Platform The Files tab copies a file onto another disk.
Display A UX pass over every sheet: larger smallest text for arm's length on the 7-inch panel, clearer SI prefixes, a consistent System sheet.
Remote & SCPI Tektronix-style :TRIGger:A:* forms act on the trigger; :RECord:WRECord:PROMpt beeps at the end of a recording.
r43
Measurements get stock's full set of settings, and trigger levels are stored the way stock stores them.
Analysis Measurement thresholds per source, the amplitude method (Auto, or Manual with top and base from the histogram or max-min), and the measurement histogram.
Analysis The docked measurement panel lists every entry chosen on the Measure sheet, with its value and, while statistics are on, its deviation.
Fix Trigger levels are kept at the input, not the probe tip, in the settings memory as stock keeps them, so stock no longer reads a 10x probe's level ten times too large after NovaOS.
Display The classic screen's Back, Home and Menu keys do what they do on stock.
r42
NovaOS updates itself over the network, the kernel loses 29 % of its size, and power analysis arrives.
Updates Self-update: a signed bundle is staged beside the running system, written verified, booted as a trial, with automatic fallback to the previous version; started from the System sheet, and tested live from this release to the next, fallback included.
Boot Kernel built with only what the boot needs; Wi-Fi, Bluetooth, NFS, XFS, USB audio and the rest load as modules on demand. kernel Image 39.7 → 28.2 MB; 1.2 s less before the kernel starts (measured on r43)
Boot Quiet serial console during boot (115200 baud had printed 39 kB synchronously) and a polled watchdog check instead of a 1 s sleep. kernel phase 6.6 → 3.2 s; early boot 1.9 → 0.9 s (measured on r43)
Boot The boot splash shows a progress bar timed from the scope's own past boots, and warms the UI and GPU library while the FPGA comes up.
FixDHO800/900 PCIe host: a failed link training no longer leaves the RK3399's PCIe PHY unusable until a reboot, so the FPGA probe can be retried.
Analysis Power analysis on both families: power quality (Vrms, Irms, real, apparent and reactive power, power factor, crest factors), ripple, inrush, switching loss and efficiency.
Analysis The full stock measurement set, 41 items (17 vertical, 16 horizontal, 8 other), in stock's order on both families.
Decode CAN-FD decoded per ISO 11898-1:2015 (extended IDs, BRS and ESI, dynamic and fixed stuff bits, the stuff count), and the decode tables for RS232, CAN, FlexRay, 1553B and I2S read like stock's, on screen, in CSV and over SCPI.
Remote & SCPI Remote presence: the top bar shows whether the scope is under local control, remote control or being watched, and by whom, with Disconnect and Revoke.
Remote & SCPI A remote viewer's first join gets the live picture stream at once (it had fallen back to screen captures for a minute), and Home, Menu and Back from Webcontrol act on the screen.
Acquisition Channel deskew acts on the acquisition, and the MIL-STD-1553B trigger's level select works on both families.
r41
SCPI parity: stock command forms your scripts use, now answered on both families.
Remote & SCPI SCPI action forms that were missing now act: :CLEar, :DISPlay:CLEar, :MASK:RESet and :CREate, :HISTogram:RESet, the counter's totalize clear and the record's next, back and play.
Remote & SCPI Navigate, stock's ten reference slots, :SYSTem:KEY:PRESs, :QUICk:OPERation and the Tektronix-style :BUS:B<n> forms on both families.
Decode Decode event tables with stock's columns for every bus; bus position, SPI word width (4–32 bits) and the CAN-FD data-rate switch act on the decoder.
PlatformMHO900 MHO900 setup files are saved in the MHO's own layout (they had used the DHO's), and Bode results save as CSV.
AcquisitionMHO900 MHO900 open-input noise checked against stock on the same scope: the RMS agrees within about 6 % from 1 mV/div to 1 V/div at 1 MΩ. e.g. 1.91 vs 1.86 mV RMS at 0.1 V/div (measured on r41)
Fix The remote view can no longer go blank when its picture stream stalls.
r40
The remote view stops copying the screen and takes the UI's own frames.
Remote & SCPI The remote view takes the UI's frames as they are drawn: NV12 in shared memory, converted on the GPU, with no capture round trip.
Display The measurement strip is computed in one pass per trace.
Fix The record replay bar closes when the scope is live again, and long sheet notes wrap onto two lines.
r39
A faster first boot on the DHO, a lighter UI thread, math formulas, and an MHO trigger that matches stock.
BootDHO800/900 DHO FPGA: probe for the PCIe endpoint from 5 s after boot instead of sleeping a fixed 15 s. first boot after install 45.9 s → 35.8 s (measured on r39)
Analysis Math formulas over CH1–CH4, compiled once and evaluated every frame: SI-prefixed constants, + − × ÷ ^, and functions from abs, sqrt and ln to intg, diff and band filters.
Analysis Eye diagram: a bathtub pane, and mask templates (100BASE-TX, USB high speed and others) fitted to the eye or placed at their volts.
Display The density hit map is reduced to pixel columns on the CPU with one GPU upload per batch; the GPU driver's upload had been most of the UI thread's time.
AcquisitionMHO900 MHO900 trigger hysteresis follows the scale at 2 mV/div and below as stock's does; it had been up to 7.7 times more sensitive and fired on noise.
AcquisitionMHO900 Auto and Auto Config on the MHO900, all eight :AUToset forms.
AcquisitionMHO900 MHO900 50 Ω scale range as stock answers it: 200 µV/div to 1 V/div at the input.
Platform Saves are refused up front when they would not fit, with the sizes in the message, and C: is the same user-file area stock uses.
Remote & SCPI A still screen keeps the remote view fresh (one repeat 150 ms after it settles, then every 2 s), and the UI follows input devices as they come and go.
Fix The remote-view pairing prompt connects again.
r35
Analysis tools arrive on both families, and the MHO900 gets a self-calibration that beats stock's interleave spurs.
AcquisitionMHO900 MHO900 self-calibration of the ADC interleave, run in the field with the inputs open and stored apart from the factory files; STOP aborts with the previous calibration kept. fs/8, fs/4 spurs at 2 GSa/s: 4.73, 5.34 → 0.36, 0.36 mVpk (stock 2.34, 3.96) (measured on r35)
Analysis Eye diagram and jitter on both families: constant, PLL or explicit clock recovery, TIE with RJ, DJ and PJ, data rates up to 625 Mb/s on the DHO and 2 Gb/s on the MHO, also over SCPI under :NOVAos.
Analysis Frequency counter (frequency, period or totalize, 3–6 digits) and DVM (AC RMS, DC, AC+DC RMS, limits and beeper) in the measurement strip.
Analysis Waveform histogram, horizontal for edge jitter or vertical for levels.
Acquisition Segmented record playback: first, previous, play, next and last, loop, reverse, 1 ms to 1 s per frame.
Analysis Identify recognises I2S and MIL-STD-1553B on analog channels and sets their bus triggers, and offers an eye diagram for serial data no bus explains.
FixMHO900 MHO900: the generator key switches the MHO's own generator, and a refused 50 Ω switch is explained on the channel sheet.
Fix Screenshots over SCPI (:DISPlay:DATA?) no longer fail now and then right after a mode change.
Display All 22 studio sheets and views tested on both families, and every character the UI spells has a glyph in its fonts.