Watchdog is a lightweight SDR “RF tripwire” that monitors one or more frequency ranges and alerts when signals meet your configured parameters (threshold + persistence / hold time).
It supports running multiple SDRs at once (example: 2× HackRF + 1× bladeRF), each assigned to its own band.
- DragonOS Pi64 (Raspberry Pi)
- DragonOS “regular” (x86_64, Lubuntu/Ubuntu-based)
- Ubuntu / Lubuntu / Debian / Raspberry Pi OS (Debian-based)
This project targets Debian/Ubuntu-family Linux first (APT + Python3).
Windows can work, but SDR drivers + Soapy stacks have a lot of gotchas.
A guide is included here: docs/install-windows.md. If you get stuck, open an issue or message me.
sudo apt update
sudo apt install -y git
cd ~
git clone https://github.com/Gang1eri/Watchdog.git
cd Watchdog
chmod +x install-linux.sh
./install-linux.shAfter install, launch Watchdog from your app menu (search “Watchdog”), or run:
cd ~/Watchdog
source .venv/bin/activate
python3 main.pyUpdate later:
cd ~/Watchdog
git pull
./install-linux.shIf you see docs that say ./install_dragonos.sh, that should still work too (it can be a tiny wrapper that calls install-linux.sh).
install-linux.sh installs a per-user launcher at:
~/.local/share/applications/watchdog.desktopIf clicking the app menu icon does nothing, check the log:
tail -n 200 ~/watchdog_menu.logCopy the launcher onto your Desktop:
mkdir -p ~/Desktop
cp ~/.local/share/applications/watchdog.desktop ~/Desktop/Watchdog.desktop
chmod +x ~/Desktop/Watchdog.desktopIf double-click doesn’t launch it, right-click the icon → Allow Launching.
Use this only if you want to understand each step or you’re troubleshooting.
sudo apt update
sudo apt install -y git python3 python3-venv python3-pip python3-pyqt5 python3-pyqt5.qtmultimedia python3-pyqtgraphHackRF tools package name can vary by distro. Try:
sudo apt install -y hackrf || sudo apt install -y hackrf-toolsSanity check:
hackrf_info
hackrf_sweep -h
python3 -c "from PyQt5 import QtWidgets; print('PyQt5 OK')"
python3 -c "from PyQt5.QtMultimedia import QSoundEffect; print('QtMultimedia OK')"cd ~
git clone https://github.com/Gang1eri/Watchdog.git
cd WatchdogBecause PyQt5 is installed with apt (system-wide), your venv must include system site-packages or you may see:
ModuleNotFoundError: No module named 'PyQt5'
python3 -m venv .venv --system-site-packages
source .venv/bin/activate
python -m pip install -U pipUse whatever Linux requirements file your repo provides (commonly requirements-debian.txt):
pip install -r requirements-debian.txtpython3 main.pyCheck:
tail -n 200 ~/watchdog_menu.logThis means a .sh file has Windows (CRLF) line endings. The repo should prevent this via .gitattributes, but if you see it:
sudo apt install -y dos2unix
cd ~/Watchdog
dos2unix packaging/linux/*.sh install*.shThen rerun:
./install-linux.shRecreate the venv with system site packages:
cd ~/Watchdog
deactivate 2>/dev/null || true
rm -rf .venv
python3 -m venv .venv --system-site-packages
source .venv/bin/activate
pip install -r requirements-debian.txt
python3 main.pyIf hackrf_info requires sudo, you may need udev rules. See:
docs/install-debian-pi.md
- Linux / Raspberry Pi OS Bookworm:
docs/install-debian-pi.md - Windows (not the main target):
docs/install-windows.md
MIT (see LICENSE)