Sorry, forgot to mention, AIO v1
I had quite a bit of difficulty installing Intercept on a CM5 + AIOV2 setup. Every time I installed it, something else would break, and since I was still in the process of configuring the system, I kept ending up restoring and rebuilding everything from scratch.
Because of that, I ended up creating this script. AI helped me a lot in understanding all the dependencies, and I put together this installer script to share with the community.
Feel free to modify or improve it, but the main idea was to keep the dependencies under control, avoid removing unrelated packages, and install only what is actually necessary. That made Intercept run in a much more stable and well-behaved way on the system.
Note: Use at your own risk. It works on my uConsole. =)
Linux clockworkpi 6.12.93-v8-16k+ #4 SMP PREEMPT Thu Jun 11 20:31:33 EDT 2026 aarch64 GNU/Linux
```bash
#!/usr/bin/env bash
set -euo pipefail
APP_NAME="intercept"
REPO_URL="https://github.com/smittix/intercept.git"
INSTALL_DIR="$HOME/Apps/intercept"
VENV_DIR="$INSTALL_DIR/.venv"
DESKTOP_DIR="$HOME/Desktop"
LOG_DIR="$HOME/.local/share/intercept"
START_SCRIPT="$HOME/.local/bin/start-intercept"
STOP_SCRIPT="$HOME/.local/bin/stop-intercept"
BLACKLIST_FILE="/etc/modprobe.d/rtl-sdr-blacklist.conf"
PACKAGES=(
git
curl
wget
python3
python3-venv
python3-pip
python3-dev
build-essential
cmake
rtl-sdr
rtl-433
gr-osmosdr
gnuradio
hackrf
aircrack-ng
wireless-tools
iw
net-tools
bluez
bluetooth
gpsd
gpsd-clients
sqlite3
)
usage() {
echo "Usage:"
echo " $0 install"
echo " $0 uninstall"
exit 1
}
install_intercept() {
echo "[INFO] Installation mode."
echo "[INFO] This script does NOT run full-upgrade and does NOT remove existing packages."
echo "[INFO] It installs only missing APT packages and uses an isolated Python venv."
mkdir -p "$HOME/Apps" "$HOME/.local/bin" "$LOG_DIR" "$DESKTOP_DIR"
echo "[+] Updating APT index..."
sudo apt update
echo "[+] Checking dependencies..."
MISSING=()
for pkg in "${PACKAGES[@]}"; do
if dpkg -s "$pkg" >/dev/null 2>&1; then
echo " OK: $pkg"
else
echo " MISSING: $pkg"
MISSING+=("$pkg")
fi
done
if [ "${#MISSING[@]}" -gt 0 ]; then
echo "[+] Installing only missing packages..."
sudo apt install -y "${MISSING[@]}"
else
echo "[+] All main APT dependencies already exist."
fi
echo "[+] Configuring RTL-SDR DVB blacklist if needed..."
if [ ! -f "$BLACKLIST_FILE" ]; then
sudo tee "$BLACKLIST_FILE" >/dev/null <<EOF
blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830
EOF
echo " Created: $BLACKLIST_FILE"
else
echo " Already exists: $BLACKLIST_FILE"
echo " Not modified."
fi
echo "[+] Cloning or updating Intercept..."
if [ ! -d "$INSTALL_DIR/.git" ]; then
git clone "$REPO_URL" "$INSTALL_DIR"
else
cd "$INSTALL_DIR"
git pull --ff-only || echo "[WARNING] Git pull failed; keeping local version."
fi
cd "$INSTALL_DIR"
echo "[+] Creating isolated Python environment..."
if [ ! -d "$VENV_DIR" ]; then
python3 -m venv "$VENV_DIR"
fi
echo "[+] Updating pip/wheel/setuptools only inside the venv..."
"$VENV_DIR/bin/python" -m pip install --upgrade pip wheel setuptools
echo "[+] Installing Python dependencies inside the venv..."
if [ -f "$INSTALL_DIR/requirements.txt" ]; then
"$VENV_DIR/bin/pip" install -r "$INSTALL_DIR/requirements.txt"
else
echo "[WARNING] requirements.txt not found. Installing common libraries."
"$VENV_DIR/bin/pip" install flask flask-socketio geopy pyserial numpy requests psutil
fi
echo "[+] Detecting main file..."
MAIN_FILE=""
for candidate in app.py intercept.py main.py server.py; do
if [ -f "$INSTALL_DIR/$candidate" ]; then
MAIN_FILE="$candidate"
break
fi
done
if [ -z "$MAIN_FILE" ]; then
echo "[ERROR] Could not find app.py, intercept.py, main.py or server.py."
echo "Check the contents of: $INSTALL_DIR"
exit 1
fi
echo " Main file: $MAIN_FILE"
echo "[+] Creating start-intercept command..."
cat > "$START_SCRIPT" <<EOF
#!/usr/bin/env bash
set -euo pipefail
INSTALL_DIR="$INSTALL_DIR"
VENV_DIR="$VENV_DIR"
LOG_DIR="$LOG_DIR"
MAIN_FILE="$MAIN_FILE"
mkdir -p "\$LOG_DIR"
cd "\$INSTALL_DIR"
if pgrep -f "\$INSTALL_DIR/\$MAIN_FILE" >/dev/null 2>&1; then
notify-send "Intercept" "Intercept is already running." 2>/dev/null || true
exit 0
fi
nohup "\$VENV_DIR/bin/python" "\$INSTALL_DIR/\$MAIN_FILE" > "\$LOG_DIR/intercept.log" 2>&1 &
sleep 2
notify-send "Intercept" "Intercept started. Open http://localhost:5000" 2>/dev/null || true
if command -v xdg-open >/dev/null 2>&1; then
xdg-open http://localhost:5000 >/dev/null 2>&1 || true
fi
EOF
chmod +x "$START_SCRIPT"
echo "[+] Creating stop-intercept command..."
cat > "$STOP_SCRIPT" <<EOF
#!/usr/bin/env bash
set -euo pipefail
INSTALL_DIR="$INSTALL_DIR"
MAIN_FILE="$MAIN_FILE"
PIDS=\$(pgrep -f "\$INSTALL_DIR/\$MAIN_FILE" || true)
if [ -z "\$PIDS" ]; then
notify-send "Intercept" "Intercept is not running." 2>/dev/null || true
exit 0
fi
echo "\$PIDS" | xargs kill
sleep 2
PIDS_LEFT=\$(pgrep -f "\$INSTALL_DIR/\$MAIN_FILE" || true)
if [ -n "\$PIDS_LEFT" ]; then
echo "\$PIDS_LEFT" | xargs kill -9
fi
notify-send "Intercept" "Intercept stopped." 2>/dev/null || true
EOF
chmod +x "$STOP_SCRIPT"
echo "[+] Creating Desktop shortcuts..."
cat > "$DESKTOP_DIR/Start Intercept.desktop" <<EOF
[Desktop Entry]
Type=Application
Name=Start Intercept
Comment=Start Intercept SDR Dashboard
Exec=$START_SCRIPT
Icon=utilities-terminal
Terminal=false
Categories=Utility;
EOF
cat > "$DESKTOP_DIR/Stop Intercept.desktop" <<EOF
[Desktop Entry]
Type=Application
Name=Stop Intercept
Comment=Stop Intercept SDR Dashboard
Exec=$STOP_SCRIPT
Icon=process-stop
Terminal=false
Categories=Utility;
EOF
chmod +x "$DESKTOP_DIR/Start Intercept.desktop"
chmod +x "$DESKTOP_DIR/Stop Intercept.desktop"
echo
echo "[OK] Installation completed."
echo
echo "Installed at:"
echo " $INSTALL_DIR"
echo
echo "Commands:"
echo " start-intercept"
echo " stop-intercept"
echo
echo "Interface:"
echo " http://localhost:5000"
echo
echo "Logs:"
echo " $LOG_DIR/intercept.log"
echo
echo "If the RTL-SDR does not appear, reboot:"
echo " sudo reboot"
}
uninstall_intercept() {
echo "[INFO] Uninstall mode."
echo "[INFO] This mode removes only files created by this script."
echo "[INFO] It does NOT remove shared APT packages."
echo "[+] Stopping Intercept if it is running..."
if [ -x "$STOP_SCRIPT" ]; then
"$STOP_SCRIPT" || true
else
pkill -f "$INSTALL_DIR" || true
fi
echo "[+] Removing shortcuts..."
rm -f "$DESKTOP_DIR/Start Intercept.desktop"
rm -f "$DESKTOP_DIR/Stop Intercept.desktop"
echo "[+] Removing local commands..."
rm -f "$START_SCRIPT"
rm -f "$STOP_SCRIPT"
echo "[+] Removing Intercept installation..."
rm -rf "$INSTALL_DIR"
echo "[+] Removing Intercept logs..."
rm -rf "$LOG_DIR"
echo
echo "[OK] Uninstallation completed."
echo
echo "Note:"
echo " The file $BLACKLIST_FILE was NOT removed automatically."
echo " Reason: it may be used by other SDR applications."
echo
echo "If you want to remove it manually:"
echo " sudo rm $BLACKLIST_FILE"
echo " sudo reboot"
}
case "${1:-}" in
install)
install_intercept
;;
uninstall|remove)
uninstall_intercept
;;
*)
usage
;;
esac
```
I’ve had a similar experience with intercept not behaving well. Huge potential for it but the headaches have thinking its not worth it.
I’ll give your script a try in the next few days and let you know how it goes
Had a few minutes last night and tried your script. I wasn’t getting any output in their terminal after a copy+paste to textfile and chmod+x to make it executable. I’ll keep poking at it to see if i can make it work.
Kinda weird folks are having issues with this. We had an issue a few months ago, but Smittix hosts the missing files on the github now.
The script has a good level of verbosity… did it manage to create the folder?
/home/YourUser/Apps/intercept
if the directory was created… run “sudo ./start.sh”… if you want to change something, reinstall things, or add something, use “sudo ./setup.sh” — this one starts the intercept configuration (downloads things, enables things, etc.)
When you run start.sh… you’ll see intercept loading its services and the webserver, and once it loads… just point your browser to: HTTP://127.0.0.1:5050/LOGIN
If everything still goes wrong, copy and paste the script’s output here. Remember that you’ll need to be running Kernel 6.12.94-v8-16k+ and the dependencies… but theoretically the script would handle that for you. Copy and paste the script, I’ll help you, or send it to me in a PM.
Thanks for checking back. I’m travelling without my uconsole rn but will follow up late next week.