oscilloscopelisted
Install: claude install-skill HuMoran/tt-skills
# Oscilloscope Operation Skill (Keysight + RIGOL)
Drives a benchtop scope via a bundled `scope.py`. Vendor auto-detected at connect time via `*IDN?`. Built from multiple emst-core hardware bring-up sessions.
## Supported hardware
| Vendor / Model | Detection | Probe handling | Screenshot |
|---|---|---|---|
| Keysight / Agilent InfiniiVision DSO5012A (fw 06.10) | `*IDN?` contains "KEYSIGHT" or "AGILENT" | AutoProbe locks ×100 — read-only | BMP only (`:DISP:DATA? BMP, SCReen, COLor`) → convert with `sips` |
| RIGOL DS1000Z (tested DS1102Z-E fw 00.06.02) | `*IDN?` contains "RIGOL" | `:CHAN:PROBe` is settable | PNG native (`:DISP:DATA? ON,OFF,PNG`) — viewer-ready |
The two scopes do not need to be plugged in at the same time. The script auto-discovers whichever USB::INSTR resource is present (`scope.py` with no `--addr`).
## Hardware-specific notes
### Keysight DSO5012A
- Default VISA addr: `USB0::2391::5987::MY50340343::0::INSTR`
- ×100 passive probes AutoProbe-locked; `:CHAN1:PROB 1` returns SCPI `-222 "Data out of range"`. The display already shows post-attenuation voltage.
- Old firmware: `:DISP:DATA?` only outputs **BMP**. Save as `.bmp`, convert with `sips -s format png foo.bmp --out foo.png`.
### RIGOL DS1102Z-E
- Default VISA addr: `USB0::6833::1303::DS1ZE224209419::0::INSTR`
- USB endpoints differ from Keysight: bulk OUT = `0x03`, bulk IN = `0x82` (the recover routine auto-discovers).
- DS1102Z-E is **2-channel** (CH1/CH2). The `Vendor` adapter restricts channels