Skip to content

ryanbytes/sdrtrunk-wabash

 
 

Repository files navigation

Wabash Scanner SDRTrunk

Release Release Builds Downloads License Java 25 Platforms

This is the official public Wabash Scanner SDRTrunk distribution and a GitHub-recognized fork of DSheirer/sdrtrunk. It is not an official upstream SDRTrunk release; upstream credit belongs to the SDRTrunk project and its contributors.

Current release: v2026.07.04.1-wabash. When release assets are attached, binary downloads are published for macOS, Windows, and Linux. macOS builds are ad-hoc signed but not notarized. Windows builds are unsigned.

Why This Fork Exists

This repository provides the public build used by Wabash Scanner: a JavaFX-focused operations interface plus local scanner, tuner, audio, streaming, and long-running runtime improvements. It also includes an isolated UI smoke profile that avoids production configuration, broadcasters, and physical tuner discovery during testing. The branch preserves upstream history, but the Wabash changes are a distribution-oriented body of work, not a clean upstream patch series.

This fork is an operator-focused distribution for the Wabash Scanner stack, not a polished upstream-ready patch series.

What This Fork Adds

JavaFX Operations Interface

  • A redesigned desktop shell with live tuner status, spectrum and waterfall displays, active traffic, stream status, status tiles, audio controls, and event/message inspection in one window.
  • Light, dark, and system-following themes, configurable panel visibility, persistent panel layouts, and a one-click layout reset.
  • Low-CPU visual mode and adjustable waterfall contrast for long-running scanner installations.
  • Direct tools for diagnostics, thread dumps, screenshots, recordings, application logs, channel event logs, and the message recording viewer.
  • Faster access to playlist, channel, alias, RadioReference, icon, and analog-channel editing from the main menus.

Tuner Reliability and Calibration

  • Bounded automatic restart and rediscovery for failed USB tuners, including backoff and an unrecoverable state when repeated restart attempts are exhausted.
  • SDRplay discovery supervision that prevents overlapping native discovery attempts and quarantines repeatedly stale discovery sessions until a manual retry or restart.
  • Conservative RTL R8x startup calibration plus live, applied, and saved PPM diagnostics in the tuner table.
  • Recovery-aware channel placement that clears stale tuner affinity when hardware disappears or returns.

Audio and Streaming

  • Per-output playback controls with persistent volume settings, mute controls, channel levels, and talkgroup status.
  • Built-in test tone, output recovery, and force-unmute actions for diagnosing local audio failures.
  • Bounded broadcaster queues that discard stale recordings and prevent unlimited queue growth.
  • Broadcastify Calls backpressure with pending and in-flight limits, stale-call rejection, retry backoff, and rate-limited skew diagnostics based on call start, capture completion, and upload-attempt timing.

Builds and Releases

  • Java 25 Gradle builds and native jpackage application images.
  • Automated tagged releases for macOS Apple Silicon, macOS Intel, Windows x86_64, and Linux x86_64.
  • Native platform archives attached directly to GitHub Releases.

Install / First Run

Download the archive for your system from the latest release:

  • Apple Silicon Mac: macos-arm64-unsigned.zip
  • Intel Mac: macos-x64-unsigned.zip
  • 64-bit Windows: windows-x64-unsigned.zip
  • 64-bit Linux: linux-x64.tar.gz

Verify the archive against its adjacent .sha256 file on the release page before opening it.

macOS

The macOS application is ad-hoc signed but not notarized. Gatekeeper may block a normal first launch. First, Control-click or right-click sdr-trunk.app, select Open, and confirm the warning. If macOS still blocks this specific app after its checksum has been verified, remove quarantine from the unpacked app only:

xattr -dr com.apple.quarantine "/path/to/sdr-trunk.app"

Do not run quarantine-removal commands against unknown downloads or broad directories.

Windows

The Windows build is unsigned. SmartScreen may warn; select More info, then Run anyway if you have verified the checksum and intend to trust this build. The package has no Windows Defender or SmartScreen approval.

Linux

Extract the archive and run the bundled launcher:

tar -xzf sdrtrunk-wabash-*-linux-x64.tar.gz
chmod +x sdr-trunk/bin/sdr-trunk
./sdr-trunk/bin/sdr-trunk

Depending on the SDR device and distribution, hardware access may also require vendor udev rules or membership in an appropriate device-access group.

You can complete first-run setup without Broadcastify, OpenMHz, or Rdio credentials. Configure streaming services deliberately and never reuse another operator's production configuration. For UI-only testing, see Isolated UI Smoke Test.

Links

This repository is derived from the upstream SDRTrunk project.

Private local runtime configurations, credentials, tuner layouts, and operational logs are intentionally not included.

Build

Source builds require JDK 25. Use the included Gradle wrapper; do not rely on a system Gradle install:

./gradlew test

The build and runtime use preview/incubator JVM flags, including --enable-preview and jdk.incubator.vector.

See the upstream SDRTrunk project for general application documentation and usage guidance.

Support Boundary

Report Wabash-specific UI, binaries, packaging, or runtime problems in this repository's issue tracker. Check general SDRTrunk bugs against upstream SDRTrunk first. Do not ask upstream maintainers to support Wabash-specific binaries, packaging, or operational changes.

Isolated UI Smoke Test

Use the guarded smoke launcher to test the JavaFX interface without reading the normal SDRTrunk profile or touching physical tuners:

tools/run-isolated-smoke.sh

The launcher creates a fresh temporary profile, strips inherited credentials from the child environment, and runs with -Dsdrtrunk.profile.dir=<temporary-directory> and -Dsdrtrunk.profile.uiOnly=true. The profile override forces Java Preferences, settings, playlists, tuner configuration, logs, recordings, and streaming state below the specified directory. Normal launches are unchanged when sdrtrunk.profile.dir is absent.

About

A cross-platform java application for decoding, monitoring, recording and streaming trunked mobile and related radio protocols using Software Defined Radios (SDR). Website:

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Java 99.4%
  • Other 0.6%