-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Important
This wiki is a task-oriented guide. The version-controlled documentation in the main repository is authoritative when a wiki page and repository document differ.
sds200-python is an alpha Python library and command-line toolkit for the
Uniden SDS100, SDS150, and SDS200 scanners. It provides the model-neutral
sdsctl command, a typed Python API, USB serial control for all supported
models, and native Ethernet control and RTSP/RTP audio for the SDS200.
The project is not affiliated with or endorsed by Uniden.
- Installation — install the package and optional features.
- Troubleshooting — diagnose USB, network, TUI, and audio problems.
- Repository README — canonical overview, examples, and project status.
- Supported scanner models — capability and hardware-validation matrix.
- Textual TUI guide — full-screen monitoring, controls, recording, and playback.
- Network audio guide — SDS200 playback, recording, Broadcastify, and Asterisk integration.
- Web dashboard guide — loopback browser monitoring, live events, audio playback, recording, and finalized-WAV playback/download.
- Home Assistant App guide — repository installation, Ingress, scanner controls, audio, persistent recordings, MQTT Discovery, and security boundaries.
- Daemon deployment and upgrade guide — systemd, destination manifests, local clients, migration, and upgrades.
| Model | USB control | Native Ethernet control | RTSP/RTP audio |
|---|---|---|---|
| SDS100 | Yes | No | No |
| SDS150 | Yes | No | No |
| SDS200 | Yes | Yes | Yes |
SDS200 USB, Ethernet control, and network audio have been validated on physical hardware. SDS100 core USB behavior has also been hardware-validated. SDS150 support is specification-backed and awaits physical-hardware validation. See the canonical supported-models guide for exact validation scope and tested firmware.
sdsctl discover
sdsctl discover --network 192.168.0.0/24 --network-onlyOnly probe networks you own or are authorized to scan.
sdsctl info
sdsctl --host SCANNER_IP infosdsctl monitor
sdsctl --host SCANNER_IP monitor
sdsctl --host SCANNER_IP tuisdsctl --host SCANNER_IP audio --play
sdsctl --host SCANNER_IP audio \
--output scanner-audio.wav \
--duration 30Install the web extra, start the daemon, then start the loopback web service in another terminal:
python -m pip install "sds200[web]"
sdsctl --log-level INFO --host SCANNER_IP daemon
sdsctl webOpen http://127.0.0.1:8000/ on the same host. The dashboard consumes daemon
state and services; it does not open a second scanner control or RTSP/RTP audio
connection. Current browser workflows include ordered live updates, explicit
audio playback, daemon-owned recording, and safe playback/download of finalized
recordings.
See the canonical web dashboard guide for security boundaries and exact behavior.
On Home Assistant OS, add
https://github.com/stevenboyd78/sds200-python under
Settings > Apps > App store > Repositories, then install sds200.
The published App uses Home Assistant Ingress for its dashboard, obtains the
configured MQTT service from Supervisor, stores recordings in writable Home
Assistant media storage, and publishes UDP 50000 for SDS200 RTP audio. The
default recording library is /media/sdsctl/recordings; the media-relative
recording_directory option can select another location below /media.
Home Assistant MQTT Discovery exposes ten state/diagnostic components plus seven bounded scanner controls: System, Department, Site, and Channel Hold switches and Previous Channel, Next Channel, and Reconnect Scanner buttons. The App keeps the generic daemon MQTT request-envelope command input disabled.
The App also installs the first-party read-only SDS200 Lovelace card as
/local/sds200/sds200-card.js. Register it once under
Settings > Dashboards > Resources as a JavaScript Module, then add
SDS200 Scanner from the card picker and select the Discovery state entities
through the graphical editor. Scanner controls remain standard Home Assistant
entities rather than a transport inside the card.
See the canonical Home Assistant App guide for configuration and security details.
- Roadmap
- Project vision
- Changelog
- Operational logging
- Daemon deployment and upgrades
- Layered application configuration
- Capture and replay
- Linux udev rule
Review Troubleshooting first. Reproducible bugs and feature requests belong in GitHub Issues. Include the package version or commit, Python and operating-system versions, scanner model and firmware, transport, exact command, and complete sanitized error.
The project support scope is defined in SUPPORT.md. Report security vulnerabilities through SECURITY.md.