Clarify that the optional systemd service configuration requires a distribution that supports systemd.
99 lines
5.5 KiB
Markdown
99 lines
5.5 KiB
Markdown
# SDRconnect Universal Linux Installer
|
|
|
|
A community-maintained installer script for [SDRconnect](https://www.sdrplay.com/sdrconnect/) and RigControl that works across major Linux distribution families.
|
|
|
|
The official SDRPlay installer only supports Debian and Ubuntu. This script extends that support to Arch/Manjaro, Fedora/RHEL, and openSUSE, while preserving full compatibility with Debian-based systems.
|
|
|
|
## What it does
|
|
|
|
1. Detects your Linux distribution and maps dependencies to the correct package names
|
|
2. Installs required system libraries (libusb, ALSA, hamlib, etc.) via your native package manager
|
|
3. Resolves the current SDRconnect and RigControl build hashes *and* the current end-user licence text by parsing SDRPlay's official `install.sh`, falling back to built-in defaults if the upstream lookup fails (a prominent yellow warning is printed if the licence falls back, since the embedded copy may have drifted from upstream)
|
|
4. Downloads the SDRconnect and RigControl binaries from SDRPlay's servers
|
|
5. Verifies download integrity via SHA256 checksums
|
|
6. Installs both applications to `/opt/sdrconnect` and `/opt/rigcontrol`
|
|
7. Configures udev rules for SDRPlay USB hardware
|
|
8. Creates desktop entries and icons (freedesktop.org standard)
|
|
9. Sets up a PATH profile script so the tools are available from the terminal
|
|
10. Optionally configures a systemd service for SDRconnect server mode (This requires a distro that supports systemd).
|
|
11. Generates an uninstaller at `/opt/sdrconnect/sdrconnect-uninstall.sh`
|
|
|
|
## Supported distributions
|
|
|
|
| Family | Distros |
|
|
|----------|--------------------------------------------|
|
|
| Debian | Debian, Ubuntu, Devuan, and derivatives |
|
|
| Arch | Arch, Manjaro, EndeavourOS, Garuda, Artix |
|
|
| Fedora | Fedora, RHEL, CentOS, Rocky, Alma, Nobara |
|
|
| openSUSE | openSUSE (Leap/Tumbleweed), SLES |
|
|
| Mandriva | OpenMandriva, Mageia, and derivatives |
|
|
|
|
|
|
Other derivatives are detected automatically via the `ID_LIKE` field in `/etc/os-release`.
|
|
|
|
### Tested successfully on
|
|
|
|
- Tuxedo OS 3 (i.e. Ubuntu 24.04)
|
|
- Debian 13
|
|
- NOTE: The Debian project is no longer using a standard package name for `libasound2`. Not to worry, apt will automatically select the `libasound2t64` packages it needs. For all derivative distributions, therefore, the package name will remain "libasound2".
|
|
- Devuan 6.1 Excalibur
|
|
- NOTE: server-mode installation is unavailable here, because Devuan does not use systemd. The installer detects this and refuses `SYSTEMD_MODE=install` up front rather than failing mid-install.
|
|
- Manjaro
|
|
- Fedora 44
|
|
- OpenMandriva 6
|
|
- OpenSUSE Tumbleweed 20260430
|
|
|
|
NOTE ALSO: These tests are *only for the installation process*. If there are hardware sound issues, or USB issues, or other problems with your linux installation, these tests do not cover that. Consult your distro's documentation for more information. Good luck! :)
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
chmod +x install_sdrplay_universal.sh
|
|
./install_sdrplay_universal.sh
|
|
```
|
|
|
|
The script will present the SDRPlay license agreement and prompt for acceptance before proceeding.
|
|
|
|
### Options
|
|
|
|
- `--dry-run` — Print what would be done without making changes
|
|
- `ACCEPTLICENSE=1` — Skip the interactive license prompt
|
|
- `DONOTDOWNLOAD=1` — Use local tarballs instead of downloading (place them in the current directory). Also skips the upstream lookup (build hashes and licence text); pin filenames with the override variables below
|
|
- `NOTSUPPORTED=1` — Skip dependency checks entirely (install them yourself)
|
|
- `SYSTEMD_MODE=install SYSTEMD_TARGET=sdrconnectserver` — Enable the server systemd service (requires systemd as PID 1; refuses to run otherwise)
|
|
- `SDRCONNECT_GITBUILD=<hash>` — Pin the SDRconnect build hash, bypassing the upstream lookup
|
|
- `RIGCONTROL_GITBUILD=<hash>` — Pin the RigControl build hash, bypassing the upstream lookup
|
|
|
|
By default the installer fetches the current build hashes *and* the current licence text from SDRPlay's official `install.sh` at runtime, so it tracks both new releases and licence updates without needing edits. If the fetch fails — or the licence block can't be parsed out — it falls back to copies baked into the script and prints a prominent yellow warning so you know the displayed licence may not match the current upstream version.
|
|
|
|
### Adding support for a new distro family
|
|
|
|
Define three functions and add a detection line:
|
|
|
|
```bash
|
|
# 1. Package names for this family
|
|
mydistro_packages(){ echo "curl tar ca-certificates ..."; }
|
|
|
|
# 2. Check if a single package is installed (return 0/1)
|
|
mydistro_check(){ my-pkg-tool query "$1" >/dev/null 2>&1; }
|
|
|
|
# 3. Install one or more packages
|
|
mydistro_install(){
|
|
ensure_sudo
|
|
run_root my-pkg-tool install "$@"
|
|
}
|
|
|
|
# 4. Add detection in detect_distro_family()
|
|
# mydistro) DISTRO_FAMILY="mydistro" ;;
|
|
```
|
|
|
|
## Disclaimer
|
|
|
|
**This is not an official SDRPlay product.** This installer is an independent, community effort based on SDRPlay's official installation script. It is not endorsed, supported, or maintained by SDRPlay Limited.
|
|
|
|
The SDRconnect software itself remains the property of SDRPlay Limited and is subject to their [End User License Agreement](https://www.sdrplay.com). This project only modifies the *installer mechanism* to support additional Linux distributions.
|
|
|
|
Use at your own risk. While this script has been tested on Manjaro, it has not been exhaustively validated across every supported distribution. Your mileage may vary.
|
|
|
|
For official support, visit [sdrplay.com](https://www.sdrplay.com).
|