Remote control and monitoring for Siglent digital oscilloscopes — directly from your iPhone or iPad.
SiglentRemote is a native iOS/macOS app that gives you full remote control of your Siglent SDS-series oscilloscope over your local network — no proprietary software, no cloud, no registration required. Just your instrument, your network, and your device.
Connect via TCP/IP on port 5025 (LXI standard) and get instant access to acquisition controls, live measurements, screen capture, and raw waveform data — all from a clean, native SwiftUI interface.
- Run / Stop / Single / Auto Setup — full trigger mode control
- Timebase adjustment — from 1 ns/div to 50 s/div via picker
- Trigger status monitoring — Armed, Triggered, Stop, Auto, Normal, Single
- Real-time frequency, timebase, and trigger status readout
- Configurable auto-refresh interval: 1 s / 2 s / 5 s / 10 s
- Channel measurements: Vpp, RMS, Mean, Min, Max, Period, Frequency
- Support for CH1 and CH2 independently
- V/div scale picker: 1 mV/div to 10 V/div
- Vertical offset with direct SCPI send
- Channel enable / disable
- One-tap BMP screenshot acquisition from the oscilloscope display
- Pinch-to-zoom full-screen viewer
- Save to Photos or Files, Copy to clipboard
- Full raw waveform data capture (CH1, up to 14 Mpts)
- Smart downsampling for fluid rendering (max 10 000 display points)
- Native SwiftUI Charts rendering with cardinal interpolation
- Export to CSV (time in seconds, voltage in volts) via iOS Share Sheet
- Send any SCPI command manually
- Raw response log with timestamps (
>>sent /<<received) - Full response log accessible as a dedicated tab
| Instrument | Status |
|---|---|
| Siglent SDS1202X-E | ✅ Tested |
| Siglent SDS1104X-E | |
| Siglent SDS2000X-E series | |
| Any SCPI oscilloscope on port 5025 | 🔄 Untested |
Note: The app targets the SDS1202X-E SCPI dialect. Other instruments in the SDS-X-E family share the same command set and should be compatible.
| Minimum | |
|---|---|
| iOS | 16.0 |
| macOS | 13.0 (Ventura) |
| Xcode | 15.0 |
| Swift | 5.9 |
| Network | LAN / Wi-Fi (same subnet as oscilloscope) |
On the oscilloscope front panel:
Utility → I/O → LAN
- Set a static IP (recommended) or use DHCP and note the assigned address
- Make sure TCP/IP is enabled
- Port 5025 must be open (default on all Siglent LXI instruments)
- Open SiglentRemote → tap the Settings tab
- Enter the oscilloscope IP address (e.g.
192.168.1.13) - The port (5025) is fixed and requires no configuration
- Go to the Controls tab
- Tap Connect — the status indicator will turn 🟢 Online
- You're in
The project is structured as a standard SwiftUI multi-platform app:
SiglentRemote/
├── SiglentRemoteApp.swift # App entry point (iOS)
├── ContentView.swift # TabView root + shared state
├── OscilloscopeController.swift # ViewModel — TCP/SCPI engine (@Observable)
├── WaveformGraphView.swift # SwiftUI Charts waveform renderer
├── SettingsView.swift # Settings tab (IP, About)
└── SiglentAboutView.swift # About page
SiglentRemote_tvOS/
├── SiglentRemote_tvOSApp.swift # tvOS entry point
└── ContentView_tvOS.swift # tvOS-specific layout
@Observablemacro onOscilloscopeController— single source of truth, no manualobjectWillChangeNWConnection(Network framework) — modern async TCP, no BSD sockets@AppStoragefor IP persistence — zero boilerplate, survives app restarts- SCPI over raw TCP — no library dependencies, pure socket communication
Commands used by the app (Siglent dialect):
| Command | Description |
|---|---|
SCDP |
Screen capture (returns BMP binary) |
TRig_MoDe AUTO|STOP|NORM|SINGLE |
Trigger mode |
ASET |
Auto Setup |
*RST |
Factory reset |
Time_DIV <value> |
Set timebase (e.g. 1MS, 500US) |
HPOS <value>ns |
Horizontal position |
C1:VDIV <value> |
CH1 vertical scale |
C1:OFST <value> |
CH1 vertical offset |
CYMT? |
Query frequency |
SAST? |
Query trigger status |
TDIV? |
Query timebase |
C1:PAVA FREQ|PKPK|RMS|… |
Channel measurements |
C1:WF? ALL |
Waveform preamble |
C1:WF? DAT2 |
Raw waveform data (binary) |
SiglentRemote communicates only with the oscilloscope on your local network.
- ❌ No data sent to external servers
- ❌ No analytics or telemetry
- ❌ No account or registration required
- ✅ All settings stored locally on device
git clone https://github.com/mk4001/SiglentRemote.git
cd SiglentRemote
open SiglentRemote.xcodeprojSelect your target (iOS or macOS), set your development team in Signing & Capabilities, then build and run.
No external dependencies — the project uses only Apple frameworks (
SwiftUI,Network,Charts,UniformTypeIdentifiers).
Bug reports and pull requests are welcome. For major changes, please open an issue first to discuss what you'd like to change.
This project is licensed under the MIT License — see LICENSE for details.
SiglentRemote is an independent third-party application and is not affiliated with, endorsed by, or supported by Siglent Technologies Co., Ltd. Siglent™ is a registered trademark of Siglent Technologies Co., Ltd.