Command-line tool for using DSLogic Plus devices without the DSView GUI. Capture logic analyzer data and export machine-readable waveform files for downstream analysis.
Install the latest published release bundle into ~/.local/opt/dsview-cli and add a launcher in ~/.local/bin:
curl -fsSL https://raw.githubusercontent.com/LISTENAI/dsview-cli/refs/heads/master/scripts/install.sh | shInstall a specific version instead:
curl -fsSL https://raw.githubusercontent.com/LISTENAI/dsview-cli/refs/heads/master/scripts/install.sh | sh -s -- --version v1.2.1The installer keeps the release bundle intact so the executable can still find its sibling runtime/ and resources/ directories.
Supported installer targets:
- Linux x86_64, ARM64
- macOS x86_64 (Intel), ARM64 (Apple Silicon)
Install the latest published release bundle into %LOCALAPPDATA%\Programs\dsview-cli, add a launcher in %LOCALAPPDATA%\Programs\dsview-cli\bin, and append that launcher directory to your user PATH:
irm https://raw.githubusercontent.com/LISTENAI/dsview-cli/refs/heads/master/scripts/install.ps1 | iexInstall a specific version instead:
$script = Join-Path $env:TEMP "dsview-cli-install.ps1"
irm https://raw.githubusercontent.com/LISTENAI/dsview-cli/refs/heads/master/scripts/install.ps1 -OutFile $script
powershell -ExecutionPolicy Bypass -File $script -Version v1.2.1The Windows installer keeps the release bundle intact, adds the bundled DLL directory to the generated launcher, appends the launcher directory to your user PATH, and smoke-tests dsview-cli --version plus devices list --help after install. Restart your shell after installation so the updated PATH is visible.
Supported Windows installer targets:
- Windows x86_64
- Windows ARM64
# Clone with submodules
git clone --recursive https://github.com/LISTENAI/dsview-cli.git
cd dsview-cli
# Build release binary
cargo build --release
# The CLI and bundled runtime are now in target/release/dsview-cli devices list --format textExample output:
Device 1 (handle: 1)
Model: DSLogic Plus
ID: dslogic-plus
Native: DSLogic Plus [0]
dsview-cli capture \
--handle 1 \
--sample-rate-hz 100000000 \
--sample-limit 2048 \
--channels 0,1,2,3 \
--output capture.vcdThis captures 2048 samples at 100 MHz from channels 0-3 and exports to capture.vcd (Value Change Dump format) with a JSON metadata sidecar at capture.json.
The CLI uses a repository-built runtime model:
- During development:
cargo runautomatically uses the runtime built from theDSView/submodule - In release bundles: The CLI, runtime library, and DSLogic Plus resources are packaged together
- Resource discovery: The CLI finds bundled resources relative to the executable location
Release bundle structure:
dsview-cli-v1.2.1-x86_64-unknown-linux-gnu/
├── dsview-cli # CLI executable
├── runtime/
│ └── libdsview_runtime.so # Platform-specific runtime (.so/.dylib/.dll)
└── resources/
├── DSLogicPlus.fw # Firmware
├── DSLogic.fw # Firmware fallback
├── DSLogicPlus.bin # Bitstream
└── DSLogicPlus-pgl12.bin # Bitstream
Use --resource-dir to point to a different resource directory:
dsview-cli devices list --resource-dir /path/to/custom/resourcesThis is the only resource-related flag. The CLI no longer exposes runtime library selection.
Current support: DSLogic Plus only
The v1.0 milestone validates the capture-and-export workflow for DSLogic Plus. Future releases may add support for other DSLogic family devices.
Source builds are supported for:
- Linux: x86_64, ARM64
- macOS: x86_64 (Intel), ARM64 (Apple Silicon)
- Windows: x86_64, ARM64
Published release bundles and the one-line installer currently target:
- Linux: x86_64, ARM64
- macOS: x86_64 (Intel), ARM64 (Apple Silicon)
- Windows: x86_64, ARM64
Windows ARM64 GitHub-hosted runners currently use the windows-11-arm label (public preview in GitHub Actions as of April 2026), so CI coverage for that target may evolve with runner image updates.
sudo apt-get install \
build-essential \
cmake \
pkg-config \
libglib2.0-dev \
libusb-1.0-0-dev \
libfftw3-devIf devices list cannot see your hardware as a non-root user, install the bundled udev rule and replug the device:
sudo cp DSView/DSView/DreamSourceLab.rules /etc/udev/rules.d/99-dsview-cli.rules
sudo udevadm control --reload-rules
sudo udevadm triggerbrew install cmake pkg-config glib libusb fftwInstall dependencies via vcpkg:
vcpkg install glib:x64-windows libusb:x64-windows fftw3:x64-windows pkgconf:x64-windowsRun the full test suite:
cargo test --workspaceRun specific test suites:
# Bundle discovery tests
cargo test -p dsview-core --test bundle_discovery
# CLI contract tests
cargo test -p dsview-cli --test capture_cli
cargo test -p dsview-cli --test devices_cliList all connected DSLogic Plus devices.
Options:
--format <json|text>: Output format (default: json)--resource-dir <PATH>: Override bundled resource directory
Open a device by handle and verify initialization.
Options:
--handle <HANDLE>: Device handle fromdevices list--format <json|text>: Output format (default: json)--resource-dir <PATH>: Override bundled resource directory
Run a bounded capture and export waveform data.
Required options:
--handle <HANDLE>: Device handle fromdevices list--sample-rate-hz <HZ>: Sample rate in Hz (e.g., 100000000 for 100 MHz)--sample-limit <SAMPLES>: Number of samples to capture--channels <IDX,IDX,...>: Comma-separated channel indices (e.g., 0,1,2,3)--output <PATH>: Output VCD file path (must end with .vcd)
Optional:
--metadata-output <PATH>: JSON metadata path (defaults to .vcd path with .json extension)--wait-timeout-ms <MS>: Capture timeout in milliseconds (default: 10000)--poll-interval-ms <MS>: Status polling interval (default: 50)--format <json|text>: Output format (default: json)--resource-dir <PATH>: Override bundled resource directory
Standard waveform interchange format. Compatible with GTKWave and other waveform viewers.
Capture metadata sidecar includes:
- Capture configuration (sample rate, channels, limits)
- Acquisition summary (packets, terminal events, status)
- Artifact paths (VCD and metadata locations)
- Timestamps (ISO 8601 format)
Example:
{
"capture": {
"sample_rate_hz": 100000000,
"requested_sample_limit": 2048,
"actual_sample_count": 2048,
"enabled_channels": [0, 1, 2, 3]
},
"acquisition": {
"completion": "clean_success",
"terminal_event": "normal_end"
},
"artifacts": {
"vcd_path": "/path/to/capture.vcd",
"metadata_path": "/path/to/capture.json"
}
}The DSView/ directory is a git submodule containing the upstream DSView project. This provides the device communication stack (libsigrok4DSL) that the CLI integrates with.
Important: Treat DSView/ as read-only dependency code. Do not modify it for normal development work.
- dsview-cli: Command-line interface and user-facing commands
- dsview-core: Safe Rust orchestration for device/session/config flows
- dsview-sys: Native bindings to DSView/libsigrok integration boundary
The native integration is intentionally isolated behind Rust layers to keep unsafe code contained.
Release bundles are created using tools/package-bundle.py and validated with tools/validate-bundle.py. CI uses these Python helpers to ensure consistent bundle structure across all platforms, including the bundled capture runtime, decode runtime, firmware resources, and decoder scripts, without relying on unstable Cargo script support.
The original DSView CLI Rust code in this repository is licensed under Apache License, Version 2.0. See LICENSE.
The upstream DSView/ submodule and other bundled third-party components keep their own licenses. In particular, the vendored DSView/libsigrok sources ship their existing COPYING files and are not relicensed by this repository.
Contributions are welcome via issues and pull requests. Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this repository is licensed under Apache License, Version 2.0.