Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

〰️ SiglentRemote

Remote control and monitoring for Siglent digital oscilloscopes — directly from your iPhone or iPad.

Platform Swift License TCP


Overview

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.


Features

🎛️ Acquisition Control

  • 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

📊 Live Monitor

  • 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

🖥️ Vertical Controls

  • V/div scale picker: 1 mV/div to 10 V/div
  • Vertical offset with direct SCPI send
  • Channel enable / disable

📸 Screen Capture

  • One-tap BMP screenshot acquisition from the oscilloscope display
  • Pinch-to-zoom full-screen viewer
  • Save to Photos or Files, Copy to clipboard

〰️ Waveform Acquisition

  • 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

🖥️ Manual Console

  • Send any SCPI command manually
  • Raw response log with timestamps (>> sent / << received)
  • Full response log accessible as a dedicated tab

Compatible Instruments

Instrument Status
Siglent SDS1202X-E ✅ Tested
Siglent SDS1104X-E ⚠️ Should work (SCPI compatible)
Siglent SDS2000X-E series ⚠️ Should work (SCPI compatible)
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.


Requirements

Minimum
iOS 16.0
macOS 13.0 (Ventura)
Xcode 15.0
Swift 5.9
Network LAN / Wi-Fi (same subnet as oscilloscope)

Setup Guide

1. Configure the 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)

2. Configure the app

  1. Open SiglentRemote → tap the Settings tab
  2. Enter the oscilloscope IP address (e.g. 192.168.1.13)
  3. The port (5025) is fixed and requires no configuration

3. Connect

  • Go to the Controls tab
  • Tap Connect — the status indicator will turn 🟢 Online
  • You're in

Architecture

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

Key design decisions

  • @Observable macro on OscilloscopeController — single source of truth, no manual objectWillChange
  • NWConnection (Network framework) — modern async TCP, no BSD sockets
  • @AppStorage for IP persistence — zero boilerplate, survives app restarts
  • SCPI over raw TCP — no library dependencies, pure socket communication

SCPI Command Reference

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)

Privacy

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

Build from Source

git clone https://github.com/mk4001/SiglentRemote.git
cd SiglentRemote
open SiglentRemote.xcodeproj

Select 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).


Contributing

Bug reports and pull requests are welcome. For major changes, please open an issue first to discuss what you'd like to change.


License

This project is licensed under the MIT License — see LICENSE for details.


Disclaimer

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.


Made with ❤️ for the electronics community — mf-lab.com

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors