Everything Bode Lab can do, in the order you'll actually use it. Press F1 inside
the app at any time to come straight back to this page. Looking for a quick answer instead?
Try the FAQ.
Bode Lab drives a Rigol DHO4404 oscilloscope and a Rigol DG4202 signal generator over LAN/SCPI - no VISA runtime, no vendor driver install. Enter each instrument's IP address in the connection panel and press Connect. If you don't know the address, click Discover in the ribbon to scan your local network for both instruments automatically.
The same driver also covers the wider Rigol DHO4000 series (12-bit ADC), every other Rigol MSO, DS1000Z, DS2000, DS4000, DS6000, and DS7000-series oscilloscope (8-bit ADC, with extra command pacing for older/slower hardware), and the whole Rigol DG4000 series of signal generators - Bode Lab detects which family it's talking to from the instrument's own identification string and adapts automatically. See which of these are individually tested versus "should work on the same command set".
Wire the generator's output to your device under test (DUT), and the DUT's output back into the scope - the wiring diagram button in the toolbar shows the exact hookup for whichever measurement mode you have selected. Once connected, Bode Lab reads back and displays each channel's probe attenuation ratio (1x/10x) underneath the Probe ratio field, so you can confirm the scope actually accepted the value it was told to use.
See which instruments are actually tested if you're wondering whether a different Rigol model will work.
Set a Start/Stop [Hz] frequency range, choose Logarithmic (even spacing per decade - the usual Bode plot choice, set Points/decade) or Linear spacing (set Number of points), then press Single in the ribbon to run one sweep from Start to Stop. Bode Lab steps the generator through each frequency, reads the response back from the scope, and plots Gain [dB] and Phase [deg] as it goes - you don't need to touch either instrument's own front panel at all. Press Stop to abort a sweep already in progress.
Amplitude [Vpp] and Offset [V] set the generator's stimulus signal (the small text under Amplitude converts it to Vrms for audio-power context only - the generator itself is still driven in Vpp). Input CH/Output CH pick which scope channels read the stimulus and the DUT's response.
Before measuring a real DUT, connect the generator directly to the scope (bypassing the DUT entirely) and press Calibrate in the ribbon. This records the cable/fixture's own contribution across the sweep so it can be subtracted out of every later measurement - without it, cable loss and probe response would show up as if they were part of the DUT.
Turn on the Auto Range toggle to let the scope's vertical scale (V/div) adjust automatically at every sweep point, converging towards 60-80% of screen height before the point is actually measured - so the trace never clips at the top of its range nor disappears into the noise floor at the bottom. Turn it off to trust whatever V/div is currently set on the scope's own front panel instead (useful if you've already dialed in a scale you know is right, or want to force a fixed scale across the whole sweep).
Averaging repeats the acquisition at each point this many times and averages
the waveform on the PC side before computing gain/phase - 1 means no averaging;
supported example values are 1, 2, 4, 8, 16, 32, 64, 128. Higher values trade
sweep speed for a cleaner trace on a noisy signal.
The finer knobs behind Auto Range - settle times, V/div bounds, and the minimum measurable amplitude - live under Settings (gear icon); see Settings, in full below.
The strip along the bottom of the window updates live while a sweep runs. From left to right:
Measuring 1.23 kHz... while stepping through the sweep,
Done when it finishes normally,
Stopped if you pressed Stop,
Calibrating/Calibration done/Calibration cancelled
during a THRU calibration run, or an error message (e.g. an instrument connection problem)
if something went wrong.A point that comes back Fail or Invalid is shown shaded on the chart itself, with the reason available from its marker - see Cursors & automatic analysis below.
Click Save (Memory group) after a sweep to freeze it as an overlay trace, then run a new sweep (after a change to your circuit, say) to compare the two directly on the same plot. Mark one trace as the reference to draw it thicker/darker than the rest, and click Clear to remove every memory trace at once. You can also Import a CSV trace captured elsewhere (e.g. a SPICE export or a hand-computed table) and overlay it the same way.
Turn on Stereo (2-channel), set Right CH to the second output channel, and Bode Lab measures both channels of a stereo device in a single sweep, reporting channel mismatch (in dB, normalized to read 0 dB at the Mismatch f_ref frequency you choose) directly, instead of running the same sweep twice and comparing by eye.
Turn on Impedance mode (Z) and set Rref [Ω] to the
known reference resistor in series with your DUT. The chart and status bar then show
impedance magnitude (log-log) instead of plain gain/phase, with a matching
Z_Ohms column in the CSV export - useful for characterizing filters and loads.
Turn on Measure THD and set THD harmonics (2f..Nf) to the
highest harmonic order to sum (e.g. 5 means 2f, 3f, 4f, 5f - any harmonic at or
above a given point's own Nyquist frequency is skipped regardless). Bode Lab computes total
harmonic distortion from the same captured waveform, alongside the regular sweep, no extra
acquisition needed. This is THD, not THD+N - it doesn't include broadband noise, so it
systematically under-reports compared to a true noise-inclusive measurement; treat it as a
relative comparison tool, not a certification-grade spec.
Click Step Resp. in the ribbon to open a separate window that switches the stimulus to a square wave and reads the time-domain step response directly from the same instrument pair - useful for a quick slew-rate or settling-time check without swapping to a different tool.
Drop cursors/markers directly on the plotted curve to read exact Gain/Phase values at a frequency, and let Bode Lab call out things like the -3 dB bandwidth and any resonant peaks automatically in the Analysis panel. Hovering a point also shows why it was excluded, if it was (clipping, invalid capture, low signal, low SNR - see the status bar above for what each one means).
Every sweep can be exported three ways, from the EXPORT ribbon group:
Save Profile/Load Profile remember just the sweep configuration (frequency range, amplitude, channels, modes...) for reuse across DUTs; Save Project/Load Project save the configuration together with the actual measured results, memory traces, and calibration - for picking up exactly where you left off.
Open Settings (gear icon in the title bar) - every field applies live as you change it.
Shows the app name, copyright, a link back to this website, and a Credits... button listing the third-party open-source components Bode Lab is built on.
Your theme choice, window position, instrument addresses, and last-used sweep settings are all
remembered automatically between launches - stored only on your own computer under
%LocalAppData%\BodeLab, never uploaded anywhere (see the
privacy policy).
F1 - open this manual in your browser.