Ubuntu - Client Installation
This guide will enable you to install SatNOGS client on an Ubuntu 20.04 environment. It has been tested on PC, laptop, and Virtual Machines, all with success. Information is currently being added and announcement will be made when complete. It has been broken down into logical steps that will help allow for any troubleshooting should it be required.
Don't let the long contents fool you. It's not a complicated process and in fact is a great way for new SatNOGS users to experience SatNOGS from their own PC or laptop.
Contents
- 1 Installing SatNOGS on Ubuntu 20.04 - PC
- 1.1 Installation information for gr-satnogs on Ubuntu 20.04
- 1.2 Installation information for Soapy SDR and Device on Ubuntu 20.04
- 1.3 Installation information for gr-soapy on Ubuntu 20.04
- 1.4 Installation information for satnogs-flowgraphs on Ubuntu 20.04
- 1.5 Configuration information for SatNOGS user on Ubuntu 20.04
- 1.6 Configure SatNOGS Client (yes, it's a little different) on Ubuntu 20.04
- 1.7 Configure System Services
- 1.8 Device Blacklisting
Installing SatNOGS on Ubuntu 20.04 - PC
Installation information for gr-satnogs on Ubuntu 20.04
Do not add any repo for GNU Radio. It is not the required version and will cause errors.
sudo apt-get update sudo apt-get upgrade -y
sudo apt-get --purge remove snapd -y
Install required software packages
sudo apt install -y \ libboost-dev \ libitpp-dev \ libboost-date-time-dev \ libboost-filesystem-dev \ libboost-program-options-dev \ libboost-system-dev \ libboost-thread-dev \ libboost-regex-dev \ libboost-test-dev \ swig \ cmake \ build-essential \ pkg-config \ gnuradio-dev \ libconfig++-dev \ libgmp-dev \ liborc-0.4-0 \ liborc-0.4-dev \ liborc-0.4-dev-bin \ nlohmann-json3-dev \ libpng++-dev \ libvorbis-dev \ git \ libusb-1.0-0
Install from source
cd ~ git clone https://gitlab.com/librespacefoundation/satnogs/gr-satnogs.git cd gr-satnogs mkdir build cd build cmake .. make sudo make install cd ~
If you get an error stating: server certificate verification failed. CAfile: none CRLfile: none, then use this git command instead to skip verification.
GIT_SSL_NO_VERIFY=true git clone https://gitlab.com/librespacefoundation/satnogs/gr-satnogs.git
If this is the first time you are building the gr-satnogs module, run:
sudo ldconfig
Installation information for Soapy SDR and Device on Ubuntu 20.04
Install required software packages
sudo apt-get update sudo apt-get install rtl-sdr librtlsdr-dev -y
sudo apt-get install soapysdr-tools python3-soapysdr libsoapysdr-dev -y
Installation information for gr-soapy on Ubuntu 20.04
Install from source
cd ~ git clone https://gitlab.com/librespacefoundation/gr-soapy cd gr-soapy mkdir build cd build cmake .. make sudo make install sudo ldconfig cd ~
Installation information for satnogs-flowgraphs on Ubuntu 20.04
Set & configure PYTHONPATH environment setting
Edit bashrc
sudo nano ~/.bashrc
Add the following to your .bashrc. This will make sure that every time you login the variable will be set.
export PYTHONPATH=/usr/local/lib/python3/dist-packages
If you do not re-login after adding to .bashrc then run the following (same) command in the current session.
export PYTHONPATH=/usr/local/lib/python3/dist-packages
Installation from source
cd ~ git clone https://gitlab.com/librespacefoundation/satnogs/satnogs-flowgraphs.git cd satnogs-flowgraphs mkdir build cd build cmake .. make sudo make install
Configuration information for SatNOGS user on Ubuntu 20.04
Add SatNOGS user
sudo useradd -c "SatNOGS-client" -d /var/lib/satnogs -G plugdev,dialout -m -s /bin/false satnogs
Create the satnogs python virtual environent
Install the required packages.
sudo apt-get install python3.8-venv virtualenv python3-pip -y
Next
sudo -H -u satnogs virtualenv --system-site-packages --python python3 /var/lib/satnogs
Start a SatNOGS user bash and activate the virual environment
sudo -H -u satnogs bash source /var/lib/satnogs/bin/activate pip install satnogs-client pip install gps
Exit the bash
exit
cd /tmp sudo mkdir -p .satnogs/data/incomplete sudo chown -R satnogs:satnogs .satnogs
Configure SatNOGS Client (yes, it's a little different) on Ubuntu 20.04
Create the satnogs-client environment file, make sure the PYTHONPATH is also in there (this is not normally done).
We're using nano (installed on Ubuntu 20.04 by default, though you can also use vi)
sudo nano /etc/default/satnogs-client
Here you will need to add your station information. The setup command does not run to configure this through an interface.
PYTHONPATH=/usr/local/lib/python3/dist-packages SATNOGS_API_TOKEN="" SATNOGS_STATION_ID="" SATNOGS_STATION_LAT="" SATNOGS_STATION_LON="" SATNOGS_STATION_ELEV="" SATNOGS_SOAPY_RX_DEVICE="driver="" SATNOGS_RF_GAIN="" SATNOGS_RX_SAMP_RATE="" SATNOGS_ANTENNA="" UDP_DUMP_HOST="127.0.0.1"
Configure System Services
Create systemd service file on Ubuntu 20.04
Create file using nano (you can use vi)
sudo nano /etc/systemd/system/satnogs-client.service
Now add the following:
[Unit] Description=SatNOGS client
[Service] EnvironmentFile=-/etc/default/satnogs-client ExecStart=/var/lib/satnogs/bin/satnogs-client Restart=on-failure User=satnogs Group=satnogs
[Install] WantedBy=multi-user.target
hamlib, rigctld and rotctld
There is also a dependency with hamlib, rigctld and rotctld, so we also need to add its environment file and the systemd services file.
Install hamlib-utils
sudo apt-get install python3-libhamlib2 libhamlib-utils
Edit hamlib-utils
sudo nano /etc/default/hamlib-utils
Add the following:
ROT_OPTS="" RIG_OPTS="-T 127.0.0.1 -m 1"
Edit rigctld.service
sudo nano /etc/systemd/system/rigctld.service
Add the following:
[Unit] Description=rigctld server [Service] EnvironmentFile=-/etc/default/hamlib-utils ExecStart=/usr/bin/rigctld $RIG_OPTS Restart=on-failure User=satnogs Group=satnogs [Install] WantedBy=multi-user.target
Edit rotctld.service
sudo nano /etc/systemd/system/rotctld.service
Edit rotctld.service
[Unit] Description=rotctld server
[Service] EnvironmentFile=-/etc/default/hamlib-utils ExecStart=/usr/bin/rotctld $ROT_OPTS Restart=on-failure User=satnogs Group=satnogs
[Install] WantedBy=multi-user.target
Reload systemd daemon
After the above is complete, you must reload the systemd daemon so it will use the newly created services.
Execute the following:
sudo systemctl daemon-reload
Now we can enable and start rigctld, rotctld and finally when all the /etc/default/satnogs-client variables are set, the satnogs-client.
sudo systemctl enable rigctld.service sudo systemctl start rigctld.service sudo systemctl status rigctld.service
sudo systemctl enable rotctld.service sudo systemctl start rotctld.service sudo systemctl status rotctld.service
sudo systemctl enable satnogs-client.service sudo systemctl start satnogs-client.service sudo systemctl status satnogs-client.service
If you want to see log information you can use the following commands:
sudo journalctl -f -u rigctld -n 512 sudo journalctl -f -u rotctld -n 512 sudo journalctl -f -u satnogs-client -n 512
Device Blacklisting
Create RTL-SDR blacklisting on Ubuntu 20.04
Create blacklist configuration (you can also use vi)
sudo nano /etc/modprobe.d/blacklist-rtlsdr.conf
Add the following:
blacklist dvb_usb_rtl28xxu
RTL-SDR udev configuration
sudo nano /etc/udev/rules.d/54-rtlsdr.conf
Add the following:
- Copyright 2012-2013 Osmocom rtl-sdr project
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- original RTL2832U vid/pid (hama nano, for example)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2832", MODE:="0660", GROUP="plugdev"
- RTL2832U OEM vid/pid, e.g. ezcap EzTV668 (E4000), Newsky TV28T (E4000/R820T) etc.
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", MODE:="0660", GROUP="plugdev"
- DigitalNow Quad DVB-T PCI-E card (4x FC0012?)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0413", ATTRS{idProduct}=="6680", MODE:="0660", GROUP="plugdev"
- Leadtek WinFast DTV Dongle mini D (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0413", ATTRS{idProduct}=="6f0f", MODE:="0660", GROUP="plugdev"
- Genius TVGo DVB-T03 USB dongle (Ver. B)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0458", ATTRS{idProduct}=="707f", MODE:="0660", GROUP="plugdev"
- Terratec Cinergy T Stick Black (rev 1) (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00a9", MODE:="0660", GROUP="plugdev"
- Terratec NOXON rev 1 (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b3", MODE:="0660", GROUP="plugdev"
- Terratec Deutschlandradio DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b4", MODE:="0660", GROUP="plugdev"
- Terratec NOXON DAB Stick - Radio Energy (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b5", MODE:="0660", GROUP="plugdev"
- Terratec Media Broadcast DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b7", MODE:="0660", GROUP="plugdev"
- Terratec BR DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b8", MODE:="0660", GROUP="plugdev"
- Terratec WDR DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b9", MODE:="0660", GROUP="plugdev"
- Terratec MuellerVerlag DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00c0", MODE:="0660", GROUP="plugdev"
- Terratec Fraunhofer DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00c6", MODE:="0660", GROUP="plugdev"
- Terratec Cinergy T Stick RC (Rev.3) (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00d3", MODE:="0660", GROUP="plugdev"
- Terratec T Stick PLUS (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00d7", MODE:="0660", GROUP="plugdev"
- Terratec NOXON rev 2 (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00e0", MODE:="0660", GROUP="plugdev"
- PixelView PV-DT235U(RN) (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1554", ATTRS{idProduct}=="5020", MODE:="0660", GROUP="plugdev"
- Astrometa DVB-T/DVB-T2 (R828D)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="15f4", ATTRS{idProduct}=="0131", MODE:="0660", GROUP="plugdev"
- Compro Videomate U620F (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0620", MODE:="0660", GROUP="plugdev"
- Compro Videomate U650F (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0650", MODE:="0660", GROUP="plugdev"
- Compro Videomate U680F (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0680", MODE:="0660", GROUP="plugdev"
- GIGABYTE GT-U7300 (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d393", MODE:="0660", GROUP="plugdev"
- DIKOM USB-DVBT HD
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d394", MODE:="0660", GROUP="plugdev"
- Peak 102569AGPK (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d395", MODE:="0660", GROUP="plugdev"
- KWorld KW-UB450-T USB DVB-T Pico TV (TUA9001)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d397", MODE:="0660", GROUP="plugdev"
- Zaapa ZT-MINDVBZP (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d398", MODE:="0660", GROUP="plugdev"
- SVEON STV20 DVB-T USB & FM (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d39d", MODE:="0660", GROUP="plugdev"
- Twintech UT-40 (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3a4", MODE:="0660", GROUP="plugdev"
- ASUS U3100MINI_PLUS_V2 (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3a8", MODE:="0660", GROUP="plugdev"
- SVEON STV27 DVB-T USB & FM (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3af", MODE:="0660", GROUP="plugdev"
- SVEON STV21 DVB-T USB & FM
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3b0", MODE:="0660", GROUP="plugdev"
- Dexatek DK DVB-T Dongle (Logilink VG0002A) (FC2580)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1101", MODE:="0660", GROUP="plugdev"
- Dexatek DK DVB-T Dongle (MSI DigiVox mini II V3.0)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1102", MODE:="0660", GROUP="plugdev"
- Dexatek DK 5217 DVB-T Dongle (FC2580)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1103", MODE:="0660", GROUP="plugdev"
- MSI DigiVox Micro HD (FC2580)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1104", MODE:="0660", GROUP="plugdev"
- Sweex DVB-T USB (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="a803", MODE:="0660", GROUP="plugdev"
- GTek T803 (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="b803", MODE:="0660", GROUP="plugdev"
- Lifeview LV5TDeluxe (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="c803", MODE:="0660", GROUP="plugdev"
- MyGica TD312 (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="d286", MODE:="0660", GROUP="plugdev"
- PROlectrix DV107669 (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="d803", MODE:="0660", GROUP="plugdev"
Udev reload without reboot
sudo udevadm control --reload-rules && sudo udevadm trigger
Volk Profile
volk_profile