RIGOL MSO5000 Live Monitor (Hacked FW Compatible)

  • 1.3K Views
  • Last Post 21 hours ago
baerndorfer posted this 3 weeks ago

Hi all,

because i was not very satisfied with Web-View from Rigol for my MSO5000 i build my own one.

This tool provides a live view and SCPI-based data extraction from a **Rigol MSO5000** oscilloscope with **hacked firmware** via VNC and VISA (SCPI) interfaces.

The script displays:
- Live screenshots from the oscilloscope (via VNC)
- Channel information including coupling, bandwidth, scale, offset, and probe settings
- Trigger and timebase settings
- Raw waveform statistics (Vpp, Vavg, Vrms) for up to 4 channels
- A scrollable debug log for diagnostics

## Requirements

This script is written in Python 3 and depends on the following libraries:

| Library    | Purpose                            |
|------------|------------------------------------|
| `tkinter`  | GUI interface                      |
| `Pillow`   | Image processing for screenshots   |
| `numpy`    | Numerical processing of waveforms  |
| `pyvisa`   | SCPI communication over TCP/IP     |
| `vncdo`    | VNC client to capture screen image |

### Install dependencies

Make sure you have Python 3 installed, then:

```bash
sudo apt install python3-tk python3-pip
pip3 install pillow numpy pyvisa
sudo apt install vncdo
```

> Note: On Debian/Ubuntu systems, `vncdo` is often available as a package. If not, install it via `pip install vncdo`.

##How to Use

```bash
python3 rigol_vnc_liveview4.py
```

You will be prompted in the terminal to enter the IP address of your RIGOL MSO5000.

Make sure:
- The oscilloscope is on the same network.
- VNC is enabled on the oscilloscope.
- The oscilloscope responds to SCPI commands over TCP/IP.

##Hacked Firmware Notice

This script is optimized to **avoid crashing or hanging** when used with unofficial / hacked firmware:
- Timeouts are reduced
- Some known problematic SCPI queries are skipped or blacklisted after failure

##Screenshot Path

By default, screenshots are saved temporarily at:
```
/tmp/oszi_screenshot.png
```

##Customization

You can adjust these in the script:
- `INTERVALL_BILD`: How often to update the screenshot (seconds)
- `INTERVALL_SCPI`: How often to fetch SCPI data (seconds)
- `WAV_POINTS`: Number of waveform points to request per channel

##License

This project is for **personal use only**. Use at your own risk. Not affiliated with Rigol Technologies.

Attached Files

baerndorfer posted this 21 hours ago

so it turns out i can get 1000 samples or 20Mio from scope. nothing between  
in most cases 1000 is ok but if the signal look like white-noise we need more data to get accurate results. there is a testing branch where you can find the mostly unstable versions.
so far it looks good. the GUI gets a bit heavy i think.

still many things to fix...
regards

B

baerndorfer posted this 21 hours ago

inside the folder /utils i have placed waveform_extractor.py
when you execute it we can see how the scope react to our command.

python3 utils/waveform_extractor.py 192.168.1.54 --channel 3 --mode RAW --stop --save
[17:13:50] šŸ”Ž VISA resources: ('TCPIP::192.168.1.54::INSTR',)
[17:13:50] šŸ”Œ Trying to connect to: TCPIP0::192.168.1.54::INSTR
[17:13:50] āœ… Connected: RIGOL TECHNOLOGIES,MSO5074,MS5A233905324,00.01.03.03.00

šŸ“” Connected. Fetching 1000 samples from CHAN3...
šŸ›‘ Acquisition stopped for waveform readout
šŸ”§ Using point mode: RAW
šŸ“Š Sample Rate: 2.000000E+8 Sa/s — Memory Depth: 2.5000E+07 pts
ā³ Downloading waveform data...
āœ… Received full 25000000 samples from scope.
šŸ–¼ļø  Saved plot as CHAN3_25000000pts_RAW_20250801_171404.png
ā–¶ļø Acquisition resumed.

script will bring up a plot that you can see the waveform.

we can zoom in of course...

regards

B

Close