Skip to content

Using sdsctl

Steven Boyd edited this page Sep 3, 2026 · 2 revisions

Using sdsctl

Start with First connection. The interfaces below share the same scanner and daemon contracts, but they are intended for different jobs.

Command line

Use the command line for discovery, one operation, scripting, or diagnostics:

sdsctl discover
sdsctl info
sdsctl monitor
sdsctl capabilities
sdsctl health

Add --host SCANNER_IP, --port DEVICE, or --profile NAME before the action to select a connection. Run sdsctl --help and sdsctl ACTION --help for the complete current option list.

Terminal interface

Install and launch the full-screen Textual interface:

python -m pip install "sds200[tui]"
sdsctl tui

Press ? for the keyboard reference and Q to quit. Add the playback extra for live and saved audio on a workstation:

python -m pip install "sds200[tui,playback]"

The Textual TUI guide covers layouts, controls, themes, logging, daemon-client mode, audio, and recordings.

After an observe-only Raspberry Pi remote TUI works interactively, follow the managed Pi display workflow to give /dev/tty1 a boot-resilient, least-privilege systemd service. Do not use that service for a control-capable identity or browser kiosk.

Web dashboard

The web dashboard is a client of one foreground daemon. Start the daemon in one terminal and the loopback web service in another:

python -m pip install "sds200[web]"
sdsctl --host SCANNER_IP daemon
sdsctl web

Open http://127.0.0.1:8000/ on the same computer. The default listener is loopback-only. Do not publish it to a LAN by changing the bind address; use the documented authenticated native-TLS mode when remote LAN access is required.

See Web Dashboard for the visual workspace and the canonical web guide for its security and deployment contracts.

Daemon and MQTT

Use the foreground daemon when one process should own scanner control, PSI, audio, recordings, and local clients:

python -m pip install "sds200[mqtt,web]"
sdsctl --host SCANNER_IP daemon
sdsctl daemon-client status
sdsctl daemon-client snapshot
sdsctl tui --daemon-client

The daemon remains in the foreground for a service manager. Stop it with Ctrl+C during an interactive test. Read the daemon deployment guide, daemon API guide, and MQTT guide before enabling a persistent service or commands.

Scanner controls

Prefer typed or semantic controls over raw protocol commands. Representative standalone commands include:

sdsctl hold SYS 100
sdsctl next DEPT 200 100 --count 2
sdsctl previous TGID 300

Indexes are scanner protocol values reported by GSI or GLT. Verify control behavior on the intended scanner before depending on it operationally.

Themes

Built-in web, Home Assistant, and TUI themes are packaged independently. Managed third-party packages can be validated before installation:

sdsctl themes validate /absolute/path/to/themes/web/my-theme
sdsctl themes install /absolute/path/to/themes/web/my-theme
sdsctl themes list

Home Assistant theme packages contain browser JavaScript and require an additional explicit trust option. Read the theme package guide before installing third-party code.

Shell completion

Activate completion for the current shell:

eval "$(sdsctl completion bash)"

For Zsh:

eval "$(sdsctl completion zsh)"

Related tasks

Clone this wiki locally