-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathsetup.sh
More file actions
executable file
·65 lines (57 loc) · 2.31 KB
/
setup.sh
File metadata and controls
executable file
·65 lines (57 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash
# SPDX-FileCopyrightText: © 2024-2025 Jimmy Fitzpatrick <jimmy@spectregrams.org>
# This file is part of SPECTRE
# SPDX-License-Identifier: GPL-3.0-or-later
# Server-side environment variables.
SPECTRE_BIND_HOST="0.0.0.0"
SPECTRE_BIND_PORT="5000"
SPECTRE_PORT_MAP="127.0.0.1:5000:5000"
# Client-side environment variables.
SPECTRE_SERVER_HOST="spectre-server"
SPECTRE_SERVER_PORT="5000"
# Check if the script is run with root privileges.
if [ "$EUID" -ne 0 ]; then
echo "Please run this script as root: sudo ./setup.sh"
exit 1
fi
# Create the group used to give Spectre access to USB devices from named vendors.
SPECTRE_GROUP=spectre-group
if getent group "$SPECTRE_GROUP" > /dev/null; then
echo "Group '$SPECTRE_GROUP' already exists"
else
echo "Creating group '$SPECTRE_GROUP'"
groupadd "$SPECTRE_GROUP"
fi
SPECTRE_GID=$(getent group "$SPECTRE_GROUP" | cut -d: -f3)
# Allow users in the group to access USB devices from named vendors.
UDEV_FILE="/etc/udev/rules.d/99-spectre.rules"
echo "Writing udev rules to $UDEV_FILE"
{
echo '# Ettus Research'
echo "SUBSYSTEM==\"usb\", ENV{ID_VENDOR_ID}==\"2500\", MODE=\"0660\", GROUP=\"$SPECTRE_GROUP\""
echo "# SDRplay"
echo "SUBSYSTEM==\"usb\", ENV{ID_VENDOR_ID}==\"1df7\", MODE=\"0660\", GROUP=\"$SPECTRE_GROUP\""
echo '# HackRF'
echo "SUBSYSTEM==\"usb\", ENV{ID_VENDOR_ID}==\"1d50\", MODE=\"0660\", GROUP=\"$SPECTRE_GROUP\""
echo '# RTL-SDR'
echo "SUBSYSTEM==\"usb\", ENV{ID_VENDOR_ID}==\"0bda\", MODE=\"0660\", GROUP=\"$SPECTRE_GROUP\""
echo '# SDDC'
echo "SUBSYSTEM==\"usb\", ENV{ID_VENDOR_ID}==\"04b4\", MODE=\"0660\", GROUP=\"$SPECTRE_GROUP\""
} > "$UDEV_FILE"
# Apply the new udev rules.
echo "Reloading udev rules"
udevadm control --reload-rules
udevadm trigger
# Write environment variables to the `.env` file, which will be used to interpolate the docker compose configs.
DOTENV_FILE="./.env"
echo "Writing environment variables to $DOTENV_FILE"
{
echo "SPECTRE_GID=$SPECTRE_GID"
echo "SPECTRE_BIND_HOST=$SPECTRE_BIND_HOST"
echo "SPECTRE_BIND_PORT=$SPECTRE_BIND_PORT"
echo "SPECTRE_PORT_MAP=$SPECTRE_PORT_MAP"
echo "SPECTRE_SERVER_HOST=$SPECTRE_SERVER_HOST"
echo "SPECTRE_SERVER_PORT=$SPECTRE_SERVER_PORT"
} > "$DOTENV_FILE"
echo "Setup complete!"
echo "You can now run Spectre with: docker compose up"