<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.satnogs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Acinonyx</id>
	<title>SatNOGS Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.satnogs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Acinonyx"/>
	<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/Special:Contributions/Acinonyx"/>
	<updated>2026-04-20T15:55:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=4037</id>
		<title>SatNOGS Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=4037"/>
		<updated>2026-02-08T09:03:01Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Satnogs-setup.png|thumb]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for provisioning and configuring '''SatNOGS'''. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]]. Instruction on this page assumes that you have successfully established console access on the host machine intended to run SatNOGS.&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
The &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; configuration tool is automatically executed during [[Raspberry Pi#Installation|the installation process]]. However, if needed, you can reconfigure the software at any time by running it again:&lt;br /&gt;
 $ satnogs-setup&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
{{Warning| Configuring SatNOGS can potentially interrupt a running observation!}}The configuration is divided into &amp;lt;code&amp;gt;Basic&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Advanced&amp;lt;/code&amp;gt; submenus. The '''Basic Configuration''' includes the essential settings required to get the station up and running, while further optimization or customization can be done through the '''Advanced Configuration'''. The &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt; menu item displays the current configuration in a single view, and the &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; option deletes all existing configurations. Lastly, the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; menu item provides information about the tool itself.&lt;br /&gt;
Once the configuration is completed, exiting the utility will apply the changes. Please note that this process may take several minutes, depending on the modifications made.{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website. Please don’t share your API key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log into [https://network.satnogs.org/ network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page, right under the user icon, click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
===Advanced Setup===&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
====Radio====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware. Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Rotator====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Artifacts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Scripts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Hamlib====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Development====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Debug====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Obsolete Settings===&lt;br /&gt;
The following options were available in previous versions of SatNOGS and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==Updating SatNOGS Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; automatically checks for new playbooks and prompts the user to update when a new version is available.{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from legacy software===&lt;br /&gt;
{{Warning|IMPORTANT: Some essential features from the previous version are currently unavailable in the newer version. Please review the [[SatNOGS Setup#Missing_features|Missing Features Table]] before proceeding with the upgrade. If any of the missing features are critical to your setup, follow the [[Raspberry_Pi_Legacy|Legacy Software Installation Guide]] to install the legacy software.}}&lt;br /&gt;
====Missing features====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Feature&lt;br /&gt;
!Description&lt;br /&gt;
!Related issue&lt;br /&gt;
|-&lt;br /&gt;
|Rotator support&lt;br /&gt;
|No access to serial devices.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/146 satnogs-ansible#146]&lt;br /&gt;
|-&lt;br /&gt;
|Installation of experimental software&lt;br /&gt;
|This feature is currently unimplemented.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/156 satnogs-ansible#156]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Post and pre-observation scripts&lt;br /&gt;
|No host path for scripts is defined or mounted.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/184 satnogs-ansible#184]&lt;br /&gt;
|-&lt;br /&gt;
|Double curly braces are broken.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/176 satnogs-ansible#176]&lt;br /&gt;
|-&lt;br /&gt;
|Component versions in support report&lt;br /&gt;
|The versions of components in the support report are not available.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-config/-/issues/68 satnogs-config#68]&lt;br /&gt;
|-&lt;br /&gt;
|Editing source code of running software&lt;br /&gt;
|Containers are read-only and no modification on the source code can be made.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/157 satnogs-ansible#157]&lt;br /&gt;
|}&lt;br /&gt;
To upgrade from the legacy SatNOGS software, execute the normal installation command:&lt;br /&gt;
 $ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&lt;br /&gt;
The command will clean-up the old software, install the new one and then bring up the SatNOGS configuraion menu-driver utility.&lt;br /&gt;
&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To verify that the software is set up correctly, execute:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker ps -f 'name=^(satnogs|ansible)_' --format &amp;quot;table {{.Names}}\t{{.Status}}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
NAMES                    STATUS&lt;br /&gt;
ansible_satnogs-config   Up 31 seconds&lt;br /&gt;
ansible_ansible          Up 31 seconds&lt;br /&gt;
satnogs_rigctld          Up 31 seconds&lt;br /&gt;
satnogs_satnogs-client   Up 31 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/var/lib/docker-bindmounts/ansible_ansible/etc/ansible/host_vars/ansible/config.yml&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card), you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Execute &amp;lt;code&amp;gt;$ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Ansible]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=4036</id>
		<title>SatNOGS Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=4036"/>
		<updated>2026-02-08T08:56:15Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Satnogs-setup.png|thumb]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for provisioning and configuring '''SatNOGS'''. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]]. Instruction on this page assumes that you have successfully established console access on the host machine intended to run SatNOGS.&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
The &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; configuration tool is automatically executed during [[Raspberry Pi#Installation|the installation process]]. However, if needed, you can reconfigure the software at any time by running it again:&lt;br /&gt;
 $ satnogs-setup&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
{{Warning| Configuring SatNOGS can potentially interrupt a running observation!}}The configuration is divided into &amp;lt;code&amp;gt;Basic&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Advanced&amp;lt;/code&amp;gt; submenus. The '''Basic Configuration''' includes the essential settings required to get the station up and running, while further optimization or customization can be done through the '''Advanced Configuration'''. The &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt; menu item displays the current configuration in a single view, and the &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; option deletes all existing configurations. Lastly, the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; menu item provides information about the tool itself.&lt;br /&gt;
Once the configuration is completed, exiting the utility will apply the changes. Please note that this process may take several minutes, depending on the modifications made.{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website. Please don’t share your API key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log into [https://network.satnogs.org/ network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page, right under the user icon, click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
===Advanced Setup===&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
====Radio====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware. Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Rotator====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Artifacts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Scripts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Hamlib====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Development====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Debug====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Obsolete Settings===&lt;br /&gt;
The following options were available in previous versions of SatNOGS and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==Updating SatNOGS Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; automatically checks for new playbooks and prompts the user to update when a new version is available.{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from legacy software===&lt;br /&gt;
{{Warning|IMPORTANT: Some essential features from the previous version are currently unavailable in the newer version. Please review the [[SatNOGS Setup#Missing_features|Missing Features Table]] before proceeding with the upgrade. If any of the missing features are critical to your setup, follow the [[Raspberry_Pi_Legacy|Legacy Software Installation Guide]] to install the legacy software.}}&lt;br /&gt;
====Missing features====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Feature&lt;br /&gt;
!Description&lt;br /&gt;
!Related issue&lt;br /&gt;
|-&lt;br /&gt;
|Rotator support&lt;br /&gt;
|No access to serial devices.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/146 satnogs-ansible#146]&lt;br /&gt;
|-&lt;br /&gt;
|Installation of experimental software&lt;br /&gt;
|This feature is currently unimplemented.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/156 satnogs-ansible#156]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Post and pre-observation scripts&lt;br /&gt;
|No host path for scripts is defined or mounted.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/184 satnogs-ansible#184]&lt;br /&gt;
|-&lt;br /&gt;
|Double curly braces are broken.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/176 satnogs-ansible#176]&lt;br /&gt;
|-&lt;br /&gt;
|Component versions in support report&lt;br /&gt;
|The versions of components in the support report are not available.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-config/-/issues/68 satnogs-config#68]&lt;br /&gt;
|-&lt;br /&gt;
|Editing source code of running software&lt;br /&gt;
|Containers are read-only and no modification on the source code can be made.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/157 satnogs-ansible#157]&lt;br /&gt;
|}&lt;br /&gt;
To upgrade from the legacy SatNOGS software, execute the normal installation command:&lt;br /&gt;
 $ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&lt;br /&gt;
The command will clean-up the old software, install the new one and then bring up the SatNOGS configuraion menu-driver utility.&lt;br /&gt;
&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To verify that the software is set up correctly, execute:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker ps -f 'name=^satnogs_' --format &amp;quot;table {{.Names}}\t{{.Status}}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
NAMES                    STATUS&lt;br /&gt;
satnogs_satnogs-client   Up 31 seconds&lt;br /&gt;
satnogs_rigctld          Up 31 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/var/lib/docker-bindmounts/ansible/etc/ansible/host_vars/ansible&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card), you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Execute &amp;lt;code&amp;gt;$ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Ansible]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup_Legacy&amp;diff=3968</id>
		<title>SatNOGS Setup Legacy</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup_Legacy&amp;diff=3968"/>
		<updated>2025-03-21T09:49:35Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for configuring a '''SatNOGS Client''' system. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]].&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
Before starting &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt;, ensure the Raspberry Pi is up to date. This can be done with &amp;lt;code&amp;gt;sudo apt update&amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt;sudo apt upgrade&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
{{Message| In case of getting a similar error to this:&lt;br /&gt;
&amp;lt;code&amp;gt;W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://download.opensuse.org/repositories/home:/librespace:/satnogs/Raspbian_10 ./ InRelease: The following signatures were invalid: EXPKEYSIG 8BD3901736A40B6C home:librespace OBS Project &amp;lt;home:librespace@build.opensuse.org&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Check at https://wiki.satnogs.org/Troubleshooting_Legacy#Invalid_Signature_for_download.opensuse.org on how to solve it}}In case of getting a similar error to &amp;quot;Newer kernel available&amp;quot; annoying message after running sudo apt update:&lt;br /&gt;
&lt;br /&gt;
Package configuration  &lt;br /&gt;
&lt;br /&gt;
┌──────────┤ Pending kernel upgrade ├─────────────────────┐&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                              │&lt;br /&gt;
&lt;br /&gt;
│ Newer kernel available                                                                                         │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                              │&lt;br /&gt;
&lt;br /&gt;
│ The currently running kernel version is 4.19.97-v7l+ which is not the                 │&lt;br /&gt;
&lt;br /&gt;
│ expected kernel version 4.19.93-v8+.                                                                 │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                             │&lt;br /&gt;
&lt;br /&gt;
│ Restarting the system to load the new kernel will not be handled                      │&lt;br /&gt;
&lt;br /&gt;
│ automatically, so you should consider rebooting.                                               │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                             │&lt;br /&gt;
&lt;br /&gt;
│                                 &amp;lt;Ok&amp;gt;                                                                                   │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                             │&lt;br /&gt;
&lt;br /&gt;
└─────────────────────────────────────────────────|&lt;br /&gt;
&lt;br /&gt;
Do a &amp;quot;sudo apt purge needrestart&amp;quot; after doing a reboot after doing a &amp;quot;sudo apt update&amp;quot;{{Message| In case of getting a similar error to this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
E: Repository 'http://archive.raspberrypi.org/debian buster InRelease' changed its 'Suite' value from 'testing' to 'oldstable'&lt;br /&gt;
&lt;br /&gt;
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.&lt;br /&gt;
&lt;br /&gt;
E: Repository 'http://raspbian.raspberrypi.org/raspbian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable'&lt;br /&gt;
&lt;br /&gt;
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Run &amp;lt;code&amp;gt;sudo apt-get update --allow-releaseinfo-change&amp;lt;/code&amp;gt; instead of just &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
(See: [[Troubleshooting Legacy#apt-get update: connection failed|Troubleshooting#apt-get update: connection failed]] ).&lt;br /&gt;
&lt;br /&gt;
After the first boot of the system, packages and the configuration tool itself '''must be updated'''. Follow the [[SatNOGS Client Setup#Updating SatNOGS Client Software|Updating]] instruction found below.&lt;br /&gt;
&lt;br /&gt;
To configure a '''SatNOGS Client''' system:&lt;br /&gt;
&lt;br /&gt;
#SSH into the system and run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;; this will bring up the configuration menu&lt;br /&gt;
#Set '''all''' options in '''Basic Configuration''' (see below)&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt; and the Raspberry Pi will configure itself; this may take some time&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Back&amp;lt;/code&amp;gt; to exit&lt;br /&gt;
{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website, please don’t share your api key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log in to [https://network.satnogs.org network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page right under the user icon click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware.&lt;br /&gt;
Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Advanced Setup==&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
NOTE: To get your station online, you need to set SATNOGS_NETWORK_API_URL to https://network.satnogs.org/api/&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Obsolete Setup Variables==&lt;br /&gt;
The following options were available in previous versions of the SatNOGS client system and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; (available again)&lt;br /&gt;
|gr-satnogs: The PPM correction [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt; (available again)&lt;br /&gt;
|gr-satnogs: SDR device specific arguments [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
Note: This variable was re-purposed to set soapy device and stream arguments, so it's not obsolete anymore.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updating SatNOGS Client Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}&lt;br /&gt;
To update SatNOGS software, including the configuration tool itself:&lt;br /&gt;
&lt;br /&gt;
#SSH into the system and (re-)run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;; this will bring up the configuration menu&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt; to update the configuration tool and all distribution packages to the latest&lt;br /&gt;
#If you are prompted for a reboot during the upgrade, once the upgrade is finished, select &amp;lt;code&amp;gt;Reboot&amp;lt;/code&amp;gt;, SSH back into the system and re-run &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; to continue to the next step&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt; and the Raspberry Pi will update itself; this may take some time&lt;br /&gt;
#Before exit, check at the top that you have the latest satnogs-client and gr-satnogs versions&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Back&amp;lt;/code&amp;gt; to exit&lt;br /&gt;
&lt;br /&gt;
{{Message|You can check your current version of client (and other client software) at the top of window after running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;; alternatively you can generate the support report by going at &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from Debian 'stretch' or 'buster', to 'bullseye'===&lt;br /&gt;
Debian &amp;lt;code&amp;gt;stretch&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;buster&amp;lt;/code&amp;gt; are no longer supported. If you have already installed an older version of Debian or Raspbian SatNOGS image based on &amp;lt;code&amp;gt;buster&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;stretch&amp;lt;/code&amp;gt; (releases &amp;lt;= [https://gitlab.com/librespacefoundation/satnogs/satnogs-pi-gen/-/tags/2020122700 2020122700]), you must upgrade to &amp;lt;code&amp;gt;bullseye&amp;lt;/code&amp;gt; otherwise it will be impossible to receive updates or upgrades in the future.&lt;br /&gt;
====Reflashing and reinstalling====&lt;br /&gt;
The recommended method to upgrade to &amp;lt;code&amp;gt;bullseye&amp;lt;/code&amp;gt; is reflashing the latest Raspbian SatNOGS image (or reinstalling latest Debian). Follow [[Raspberry Pi|Raspberry Pi]] installation instructions and reinstall from scratch.&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To see if satnogs-client has started successfully, check the logs with &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt;:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ systemctl status satnogs-client&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
● satnogs-client.service - SatNOGS client&lt;br /&gt;
   Loaded: loaded (/etc/systemd/system/satnogs-client.service; enabled; vendor preset: enabled)&lt;br /&gt;
   Active: active (running) since Wed 2020-03-04 19:30:56 GMT; 6min ago&lt;br /&gt;
 Main PID: 6309 (satnogs-client)&lt;br /&gt;
    Tasks: 11 (limit: 2200)&lt;br /&gt;
   Memory: 37.9M&lt;br /&gt;
   CGroup: /system.slice/satnogs-client.service&lt;br /&gt;
           └─6309 /var/lib/satnogs/bin/python3 /var/lib/satnogs/bin/satnogs-client&lt;br /&gt;
&lt;br /&gt;
Mar 04 19:30:56 raspberrypi systemd[1]: Started SatNOGS client.&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting Legacy|Troubleshooting]] page.&lt;br /&gt;
&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/etc/ansible/host_vars/localhost&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card) or if you want to downgrade from the experimental software back to the stable releases, you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file at &amp;lt;code&amp;gt;/etc/ansible/host_vars/localhost&amp;lt;/code&amp;gt;&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; and select &amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt; to update the tool itself and then select &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Client Ansible]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup_Legacy&amp;diff=3967</id>
		<title>SatNOGS Setup Legacy</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup_Legacy&amp;diff=3967"/>
		<updated>2025-03-21T09:48:40Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for configuring a '''SatNOGS Client''' system. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]].&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
Before starting &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt;, ensure the Raspberry Pi is up to date. This can be done with &amp;lt;code&amp;gt;sudo apt update&amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt;sudo apt upgrade&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
{{Message| In case of getting a similar error to this:&lt;br /&gt;
&amp;lt;code&amp;gt;W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://download.opensuse.org/repositories/home:/librespace:/satnogs/Raspbian_10 ./ InRelease: The following signatures were invalid: EXPKEYSIG 8BD3901736A40B6C home:librespace OBS Project &amp;lt;home:librespace@build.opensuse.org&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Check at https://wiki.satnogs.org/Troubleshooting_Legacy#Invalid_Signature_for_download.opensuse.org on how to solve it}}In case of getting a similar error to &amp;quot;Newer kernel available&amp;quot; annoying message after running sudo apt update:&lt;br /&gt;
&lt;br /&gt;
Package configuration  &lt;br /&gt;
&lt;br /&gt;
┌──────────┤ Pending kernel upgrade ├─────────────────────┐&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                              │&lt;br /&gt;
&lt;br /&gt;
│ Newer kernel available                                                                                         │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                              │&lt;br /&gt;
&lt;br /&gt;
│ The currently running kernel version is 4.19.97-v7l+ which is not the                 │&lt;br /&gt;
&lt;br /&gt;
│ expected kernel version 4.19.93-v8+.                                                                 │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                             │&lt;br /&gt;
&lt;br /&gt;
│ Restarting the system to load the new kernel will not be handled                      │&lt;br /&gt;
&lt;br /&gt;
│ automatically, so you should consider rebooting.                                               │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                             │&lt;br /&gt;
&lt;br /&gt;
│                                 &amp;lt;Ok&amp;gt;                                                                                   │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                             │&lt;br /&gt;
&lt;br /&gt;
└─────────────────────────────────────────────────|&lt;br /&gt;
&lt;br /&gt;
Do a &amp;quot;sudo apt purge needrestart&amp;quot; after doing a reboot after doing a &amp;quot;sudo apt update&amp;quot;{{Message| In case of getting a similar error to this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
E: Repository 'http://archive.raspberrypi.org/debian buster InRelease' changed its 'Suite' value from 'testing' to 'oldstable'&lt;br /&gt;
&lt;br /&gt;
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.&lt;br /&gt;
&lt;br /&gt;
E: Repository 'http://raspbian.raspberrypi.org/raspbian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable'&lt;br /&gt;
&lt;br /&gt;
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Run &amp;lt;code&amp;gt;sudo apt-get update --allow-releaseinfo-change&amp;lt;/code&amp;gt; instead of just &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
(See: [[Troubleshooting#apt-get update: connection failed]] ).&lt;br /&gt;
&lt;br /&gt;
After the first boot of the system, packages and the configuration tool itself '''must be updated'''. Follow the [[SatNOGS Client Setup#Updating SatNOGS Client Software|Updating]] instruction found below.&lt;br /&gt;
&lt;br /&gt;
To configure a '''SatNOGS Client''' system:&lt;br /&gt;
&lt;br /&gt;
#SSH into the system and run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;; this will bring up the configuration menu&lt;br /&gt;
#Set '''all''' options in '''Basic Configuration''' (see below)&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt; and the Raspberry Pi will configure itself; this may take some time&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Back&amp;lt;/code&amp;gt; to exit&lt;br /&gt;
{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website, please don’t share your api key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log in to [https://network.satnogs.org network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page right under the user icon click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware.&lt;br /&gt;
Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Advanced Setup==&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
NOTE: To get your station online, you need to set SATNOGS_NETWORK_API_URL to https://network.satnogs.org/api/&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Obsolete Setup Variables==&lt;br /&gt;
The following options were available in previous versions of the SatNOGS client system and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; (available again)&lt;br /&gt;
|gr-satnogs: The PPM correction [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt; (available again)&lt;br /&gt;
|gr-satnogs: SDR device specific arguments [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
Note: This variable was re-purposed to set soapy device and stream arguments, so it's not obsolete anymore.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updating SatNOGS Client Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}&lt;br /&gt;
To update SatNOGS software, including the configuration tool itself:&lt;br /&gt;
&lt;br /&gt;
#SSH into the system and (re-)run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;; this will bring up the configuration menu&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt; to update the configuration tool and all distribution packages to the latest&lt;br /&gt;
#If you are prompted for a reboot during the upgrade, once the upgrade is finished, select &amp;lt;code&amp;gt;Reboot&amp;lt;/code&amp;gt;, SSH back into the system and re-run &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; to continue to the next step&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt; and the Raspberry Pi will update itself; this may take some time&lt;br /&gt;
#Before exit, check at the top that you have the latest satnogs-client and gr-satnogs versions&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Back&amp;lt;/code&amp;gt; to exit&lt;br /&gt;
&lt;br /&gt;
{{Message|You can check your current version of client (and other client software) at the top of window after running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;; alternatively you can generate the support report by going at &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from Debian 'stretch' or 'buster', to 'bullseye'===&lt;br /&gt;
Debian &amp;lt;code&amp;gt;stretch&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;buster&amp;lt;/code&amp;gt; are no longer supported. If you have already installed an older version of Debian or Raspbian SatNOGS image based on &amp;lt;code&amp;gt;buster&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;stretch&amp;lt;/code&amp;gt; (releases &amp;lt;= [https://gitlab.com/librespacefoundation/satnogs/satnogs-pi-gen/-/tags/2020122700 2020122700]), you must upgrade to &amp;lt;code&amp;gt;bullseye&amp;lt;/code&amp;gt; otherwise it will be impossible to receive updates or upgrades in the future.&lt;br /&gt;
====Reflashing and reinstalling====&lt;br /&gt;
The recommended method to upgrade to &amp;lt;code&amp;gt;bullseye&amp;lt;/code&amp;gt; is reflashing the latest Raspbian SatNOGS image (or reinstalling latest Debian). Follow [[Raspberry Pi|Raspberry Pi]] installation instructions and reinstall from scratch.&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To see if satnogs-client has started successfully, check the logs with &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt;:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ systemctl status satnogs-client&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
● satnogs-client.service - SatNOGS client&lt;br /&gt;
   Loaded: loaded (/etc/systemd/system/satnogs-client.service; enabled; vendor preset: enabled)&lt;br /&gt;
   Active: active (running) since Wed 2020-03-04 19:30:56 GMT; 6min ago&lt;br /&gt;
 Main PID: 6309 (satnogs-client)&lt;br /&gt;
    Tasks: 11 (limit: 2200)&lt;br /&gt;
   Memory: 37.9M&lt;br /&gt;
   CGroup: /system.slice/satnogs-client.service&lt;br /&gt;
           └─6309 /var/lib/satnogs/bin/python3 /var/lib/satnogs/bin/satnogs-client&lt;br /&gt;
&lt;br /&gt;
Mar 04 19:30:56 raspberrypi systemd[1]: Started SatNOGS client.&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/etc/ansible/host_vars/localhost&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card) or if you want to downgrade from the experimental software back to the stable releases, you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file at &amp;lt;code&amp;gt;/etc/ansible/host_vars/localhost&amp;lt;/code&amp;gt;&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; and select &amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt; to update the tool itself and then select &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Client Ansible]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3966</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3966"/>
		<updated>2025-03-21T09:39:43Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: /* RuntimeError: RTL-SDR device not found. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| &lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with &amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt;&lt;br /&gt;
* Check live the error log with &amp;lt;code&amp;gt;sudo docker logs -f satnogs_satnogs-client&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client SoapySDRUtil --find=&amp;quot;driver=rtlsdr&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===ERROR - Observer job lock acquiring timed out.===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ sudo docker exec -ti satnogs_satnogs-client rtl_test&lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker exec -ti satnogs_satnogs-client timeout -s INT 20s satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --rigctl-host=rigctld --file-path=/tmp/audio-out.ogg --waterfall-file-path=/tmp/waterfall.dat&lt;br /&gt;
$ sudo docker exec -ti satnogs_satnogs-client ls -lah /tmp/audio-out.ogg /tmp/waterfall.dat&lt;br /&gt;
$ sudo docker exec -ti satnogs_satnogs-client rm /tmp/audio-out.ogg /tmp/waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ usbreset&lt;br /&gt;
Usage:&lt;br /&gt;
  usbreset PPPP:VVVV - reset by product and vendor id&lt;br /&gt;
  usbreset BBB/DDD   - reset by bus and device number&lt;br /&gt;
  usbreset &amp;quot;Product&amp;quot; - reset by product name&lt;br /&gt;
&lt;br /&gt;
Devices:&lt;br /&gt;
  Number 001/003  ID 0424:ec00  &lt;br /&gt;
  Number 001/002  ID 0424:9514  &lt;br /&gt;
  Number 001/004  ID 0bda:2838  RTL2838UHIDIR&lt;br /&gt;
$ usbreset 001/004&lt;br /&gt;
Resetting RTL2838UHIDIR ... ok&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3965</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3965"/>
		<updated>2025-03-21T09:12:34Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: /* Not receiving anything? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| &lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with &amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt;&lt;br /&gt;
* Check live the error log with &amp;lt;code&amp;gt;sudo docker logs -f satnogs_satnogs-client&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using &amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client SoapySDRUtil --find=&amp;quot;driver=rtlsdr&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===ERROR - Observer job lock acquiring timed out.===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ sudo docker exec -ti satnogs_satnogs-client rtl_test&lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker exec -ti satnogs_satnogs-client timeout -s INT 20s satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --rigctl-host=rigctld --file-path=/tmp/audio-out.ogg --waterfall-file-path=/tmp/waterfall.dat&lt;br /&gt;
$ sudo docker exec -ti satnogs_satnogs-client ls -lah /tmp/audio-out.ogg /tmp/waterfall.dat&lt;br /&gt;
$ sudo docker exec -ti satnogs_satnogs-client rm /tmp/audio-out.ogg /tmp/waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/bind&lt;br /&gt;
&lt;br /&gt;
This can be placed in the satnogs_post_observation_script for automation.&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3964</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3964"/>
		<updated>2025-03-21T09:11:11Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| &lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with &amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt;&lt;br /&gt;
* Check live the error log with &amp;lt;code&amp;gt;sudo docker logs -f satnogs_satnogs-client&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using &amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client SoapySDRUtil --find=&amp;quot;driver=rtlsdr&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===ERROR - Observer job lock acquiring timed out.===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ sudo docker exec -ti satnogs_satnogs-client rtl_test&lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo timeout -s INT 20s docker exec -ti satnogs_satnogs-client satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --rigctl-host=rigctld --file-path=/tmp/audio-out.ogg --waterfall-file-path=/tmp/waterfall.dat&lt;br /&gt;
$ sudo docker exec -ti satnogs_satnogs-client ls -lah /tmp/audio-out.ogg /tmp/waterfall.dat&lt;br /&gt;
$ sudo docker exec -ti satnogs_satnogs-client rm /tmp/audio-out.ogg /tmp/waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/bind&lt;br /&gt;
&lt;br /&gt;
This can be placed in the satnogs_post_observation_script for automation.&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3963</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3963"/>
		<updated>2025-03-21T09:09:10Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: /* Blank or solid purple waterfall? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| &lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with &amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt;&lt;br /&gt;
* Check live the error log with &amp;lt;code&amp;gt;sudo docker logs -f satnogs_satnogs-client&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using &amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client SoapySDRUtil --find=&amp;quot;driver=rtlsdr&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===ERROR - Observer job lock acquiring timed out.===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ sudo docker exec -ti satnogs_satnogs-client rtl_test&lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo timeout 20s  docker exec -ti satnogs_satnogs-client satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --rigctl-host=rigctld --file-path=/tmp/audio-out.ogg --waterfall-file-path=/tmp/waterfall.dat&lt;br /&gt;
$ sudo docker exec -ti satnogs_satnogs-client ls -lah /tmp/audio-out.ogg /tmp/waterfall.dat&lt;br /&gt;
$ sudo docker exec -ti satnogs_satnogs-client rm /tmp/audio-out.ogg /tmp/waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/bind&lt;br /&gt;
&lt;br /&gt;
This can be placed in the satnogs_post_observation_script for automation.&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3962</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3962"/>
		<updated>2025-03-21T08:59:40Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: /* Not receiving anything? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| &lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with &amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt;&lt;br /&gt;
* Check live the error log with &amp;lt;code&amp;gt;sudo docker logs -f satnogs_satnogs-client&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using &amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client SoapySDRUtil --find=&amp;quot;driver=rtlsdr&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===ERROR - Observer job lock acquiring timed out.===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ sudo docker exec -ti satnogs_satnogs-client rtl_test&lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --file-path=./audio-out.ogg --waterfall-file-path=./waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let it run for a minute or so.  If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/bind&lt;br /&gt;
&lt;br /&gt;
This can be placed in the satnogs_post_observation_script for automation.&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3961</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3961"/>
		<updated>2025-03-21T08:58:54Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| &lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with &amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt;&lt;br /&gt;
* Check live the error log with &amp;lt;code&amp;gt;sudo docker logs -f satnogs_satnogs-client&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using &amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client SoapySDRUtil --find=&amp;quot;driver=rtlsdr&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===ERROR - Observer job lock acquiring timed out.===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ rtl_test &lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --file-path=./audio-out.ogg --waterfall-file-path=./waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let it run for a minute or so.  If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/bind&lt;br /&gt;
&lt;br /&gt;
This can be placed in the satnogs_post_observation_script for automation.&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3960</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3960"/>
		<updated>2025-03-21T08:57:50Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: /* Blank or solid purple waterfall? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| &lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with &amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt;&lt;br /&gt;
* Check live the error log with &amp;lt;code&amp;gt;sudo docker logs -f satnogs_satnogs-client&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using &amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client SoapySDRUtil --find=&amp;quot;driver=rtlsdr&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===ERROR - Observer job lock acquiring timed out.===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ rtl_test &lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --file-path=./audio-out.ogg --waterfall-file-path=./waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let it run for a minute or so.  If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/bind&lt;br /&gt;
&lt;br /&gt;
This can be placed in the satnogs_post_observation_script for automation.&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3959</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3959"/>
		<updated>2025-03-21T08:50:45Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: /* Client troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| &lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with &amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt;&lt;br /&gt;
* Check live the error log with &amp;lt;code&amp;gt;sudo docker logs -f satnogs_satnogs-client&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using &amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client SoapySDRUtil --find=&amp;quot;driver=rtlsdr&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===ERROR - Observer job lock acquiring timed out.===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;journalctl -u satnogs-client.service&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ rtl_test &lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --file-path=./audio-out.ogg --waterfall-file-path=./waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let it run for a minute or so.  If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/bind&lt;br /&gt;
&lt;br /&gt;
This can be placed in the satnogs_post_observation_script for automation.&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3958</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3958"/>
		<updated>2025-03-21T08:47:23Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Fix instruction on how to check presence of RTL-SDR device.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| Before starting check the logs for an error (there are two different commands depending on the installation way):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with &amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt;&lt;br /&gt;
* Check live the error log with &amp;lt;code&amp;gt;sudo docker logs -f satnogs_satnogs-client&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using &amp;lt;code&amp;gt;sudo docker exec -ti satnogs_satnogs-client SoapySDRUtil --find=&amp;quot;driver=rtlsdr&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===ERROR - Observer job lock acquiring timed out.===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;journalctl -u satnogs-client.service&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ rtl_test &lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --file-path=./audio-out.ogg --waterfall-file-path=./waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let it run for a minute or so.  If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/bind&lt;br /&gt;
&lt;br /&gt;
This can be placed in the satnogs_post_observation_script for automation.&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3957</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3957"/>
		<updated>2025-03-21T08:41:54Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Remove deprecated APT repo troubleshooting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| Before starting check the logs for an error (there are two different commands depending on the installation way):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with &amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt;&lt;br /&gt;
* Check live the error log with &amp;lt;code&amp;gt;sudo docker logs -f satnogs_satnogs-client&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using &amp;lt;code&amp;gt;SoapySDRUtil --find&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===ERROR - Observer job lock acquiring timed out.===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;journalctl -u satnogs-client.service&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ rtl_test &lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --file-path=./audio-out.ogg --waterfall-file-path=./waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let it run for a minute or so.  If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/bind&lt;br /&gt;
&lt;br /&gt;
This can be placed in the satnogs_post_observation_script for automation.&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3956</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3956"/>
		<updated>2025-03-21T08:40:11Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Remove troubleshooting of apt-get; not needed on a Docker-based installation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| Before starting check the logs for an error (there are two different commands depending on the installation way):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with &amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt;&lt;br /&gt;
* Check live the error log with &amp;lt;code&amp;gt;sudo docker logs -f satnogs_satnogs-client&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using &amp;lt;code&amp;gt;SoapySDRUtil --find&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===Invalid Signature for download.opensuse.org===&lt;br /&gt;
Example error during satnogs-setup update or apt-get update:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  The following signatures were invalid: EXPKEYSIG 8BD3901736A40B6C home:librespace OBS Project &amp;lt;home:librespace@build.opensuse.org&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fix:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget -qO - http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key &amp;gt; k&lt;br /&gt;
gpg --no-default-keyring --keyring ./temp-keyring.gpg --import k&lt;br /&gt;
gpg --no-default-keyring --keyring ./temp-keyring.gpg --export --output k.gpg&lt;br /&gt;
mkdir /etc/apt/keyrings&lt;br /&gt;
mv k.gpg /etc/apt/keyrings/satnogs2.gpg&lt;br /&gt;
vi /etc/apt/sources.list.d/satnogs.list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Insert a signed-by statement, as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb [signed-by=/etc/apt/keyrings/satnogs2.gpg] /repositories/home:/librespace:/satnogs/Raspbian_11 - openSUSE Download ./&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More info available at https://community.libre.space/t/sudo-apt-update-signature-invalid/7643/7 and https://community.libre.space/t/update-to-the-invalid-signature-problem-in-the-troubleshooting-document/11386&lt;br /&gt;
&lt;br /&gt;
===ERROR - Observer job lock acquiring timed out.===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;journalctl -u satnogs-client.service&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ rtl_test &lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --file-path=./audio-out.ogg --waterfall-file-path=./waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let it run for a minute or so.  If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/bind&lt;br /&gt;
&lt;br /&gt;
This can be placed in the satnogs_post_observation_script for automation.&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting_Legacy&amp;diff=3955</id>
		<title>Troubleshooting Legacy</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting_Legacy&amp;diff=3955"/>
		<updated>2025-03-21T08:38:03Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Undo revision 3949 by Fredy (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| Before starting check the logs for an error:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with &amp;lt;code&amp;gt;journalctl -u satnogs-client.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* Check live the error log &amp;lt;code&amp;gt;journalctl -f -u satnogs-client.service&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using &amp;lt;code&amp;gt;SoapySDRUtil --find&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===Invalid Signature for download.opensuse.org===&lt;br /&gt;
Example error during satnogs-setup update or apt-get update:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  The following signatures were invalid: EXPKEYSIG 8BD3901736A40B6C home:librespace OBS Project &amp;lt;home:librespace@build.opensuse.org&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fix:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget -qO - http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key &amp;gt; k&lt;br /&gt;
gpg --no-default-keyring --keyring ./temp-keyring.gpg --import k&lt;br /&gt;
gpg --no-default-keyring --keyring ./temp-keyring.gpg --export --output k.gpg&lt;br /&gt;
mkdir /etc/apt/keyrings&lt;br /&gt;
mv k.gpg /etc/apt/keyrings/satnogs2.gpg&lt;br /&gt;
vi /etc/apt/sources.list.d/satnogs.list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Insert a signed-by statement, as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb [signed-by=/etc/apt/keyrings/satnogs2.gpg] /repositories/home:/librespace:/satnogs/Raspbian_11 - openSUSE Download ./&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More info available at https://community.libre.space/t/sudo-apt-update-signature-invalid/7643/7 and https://community.libre.space/t/update-to-the-invalid-signature-problem-in-the-troubleshooting-document/11386&lt;br /&gt;
&lt;br /&gt;
===apt-get update: connection failed===&lt;br /&gt;
When using the sudo apt-get update command, we get the following connection error:&lt;br /&gt;
[[File:UpdateFailed.png]]&lt;br /&gt;
&lt;br /&gt;
However, a ping to the Ip address works.&lt;br /&gt;
&lt;br /&gt;
If you use a firewall (Ex: stormshield SN210), it can include a default rule that blocks connection urls containing a dot-slash (&amp;quot;./&amp;quot;). (This rule can be named as follows: &amp;quot;path with self-reference&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This rule must be modified to allow the raspberry to access the repository&lt;br /&gt;
&lt;br /&gt;
===  ERROR - Observer job lock acquiring timed out. ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;journalctl -u satnogs-client.service&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ rtl_test &lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --file-path=./audio-out.ogg --waterfall-file-path=./waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let it run for a minute or so.  If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/bind&lt;br /&gt;
&lt;br /&gt;
This can be placed in the satnogs_post_observation_script for automation.&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3954</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3954"/>
		<updated>2025-03-21T08:36:41Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| Before starting check the logs for an error (there are two different commands depending on the installation way):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with &amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt;&lt;br /&gt;
* Check live the error log with &amp;lt;code&amp;gt;sudo docker logs -f satnogs_satnogs-client&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using &amp;lt;code&amp;gt;SoapySDRUtil --find&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===Invalid Signature for download.opensuse.org===&lt;br /&gt;
Example error during satnogs-setup update or apt-get update:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  The following signatures were invalid: EXPKEYSIG 8BD3901736A40B6C home:librespace OBS Project &amp;lt;home:librespace@build.opensuse.org&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fix:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget -qO - http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key &amp;gt; k&lt;br /&gt;
gpg --no-default-keyring --keyring ./temp-keyring.gpg --import k&lt;br /&gt;
gpg --no-default-keyring --keyring ./temp-keyring.gpg --export --output k.gpg&lt;br /&gt;
mkdir /etc/apt/keyrings&lt;br /&gt;
mv k.gpg /etc/apt/keyrings/satnogs2.gpg&lt;br /&gt;
vi /etc/apt/sources.list.d/satnogs.list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Insert a signed-by statement, as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb [signed-by=/etc/apt/keyrings/satnogs2.gpg] /repositories/home:/librespace:/satnogs/Raspbian_11 - openSUSE Download ./&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More info available at https://community.libre.space/t/sudo-apt-update-signature-invalid/7643/7 and https://community.libre.space/t/update-to-the-invalid-signature-problem-in-the-troubleshooting-document/11386&lt;br /&gt;
&lt;br /&gt;
===apt-get update: connection failed===&lt;br /&gt;
When using the sudo apt-get update command, we get the following connection error:&lt;br /&gt;
[[File:UpdateFailed.png]]&lt;br /&gt;
&lt;br /&gt;
However, a ping to the Ip address works.&lt;br /&gt;
&lt;br /&gt;
If you use a firewall (Ex: stormshield SN210), it can include a default rule that blocks connection urls containing a dot-slash (&amp;quot;./&amp;quot;). (This rule can be named as follows: &amp;quot;path with self-reference&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This rule must be modified to allow the raspberry to access the repository&lt;br /&gt;
&lt;br /&gt;
===ERROR - Observer job lock acquiring timed out.===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;journalctl -u satnogs-client.service&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ rtl_test &lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --file-path=./audio-out.ogg --waterfall-file-path=./waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let it run for a minute or so.  If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/bind&lt;br /&gt;
&lt;br /&gt;
This can be placed in the satnogs_post_observation_script for automation.&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3953</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3953"/>
		<updated>2025-03-21T08:34:44Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| Before starting check the logs for an error (there are two different commands depending on the installation way):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with either &amp;lt;code&amp;gt;journalctl -u satnogs-client.service&amp;lt;/code&amp;gt; (old version) or &amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt; (new version)&lt;br /&gt;
* Check live the error log with either &amp;lt;code&amp;gt;journalctl -f -u satnogs-client.service&amp;lt;/code&amp;gt; (old version) or &amp;lt;code&amp;gt;sudo docker logs -f satnogs_satnogs-client&amp;lt;/code&amp;gt; (new version)}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using &amp;lt;code&amp;gt;SoapySDRUtil --find&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===Invalid Signature for download.opensuse.org===&lt;br /&gt;
Example error during satnogs-setup update or apt-get update:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  The following signatures were invalid: EXPKEYSIG 8BD3901736A40B6C home:librespace OBS Project &amp;lt;home:librespace@build.opensuse.org&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fix:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget -qO - http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key &amp;gt; k&lt;br /&gt;
gpg --no-default-keyring --keyring ./temp-keyring.gpg --import k&lt;br /&gt;
gpg --no-default-keyring --keyring ./temp-keyring.gpg --export --output k.gpg&lt;br /&gt;
mkdir /etc/apt/keyrings&lt;br /&gt;
mv k.gpg /etc/apt/keyrings/satnogs2.gpg&lt;br /&gt;
vi /etc/apt/sources.list.d/satnogs.list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Insert a signed-by statement, as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb [signed-by=/etc/apt/keyrings/satnogs2.gpg] /repositories/home:/librespace:/satnogs/Raspbian_11 - openSUSE Download ./&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More info available at https://community.libre.space/t/sudo-apt-update-signature-invalid/7643/7 and https://community.libre.space/t/update-to-the-invalid-signature-problem-in-the-troubleshooting-document/11386&lt;br /&gt;
&lt;br /&gt;
===apt-get update: connection failed===&lt;br /&gt;
When using the sudo apt-get update command, we get the following connection error:&lt;br /&gt;
[[File:UpdateFailed.png]]&lt;br /&gt;
&lt;br /&gt;
However, a ping to the Ip address works.&lt;br /&gt;
&lt;br /&gt;
If you use a firewall (Ex: stormshield SN210), it can include a default rule that blocks connection urls containing a dot-slash (&amp;quot;./&amp;quot;). (This rule can be named as follows: &amp;quot;path with self-reference&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This rule must be modified to allow the raspberry to access the repository&lt;br /&gt;
&lt;br /&gt;
===  ERROR - Observer job lock acquiring timed out. ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;journalctl -u satnogs-client.service&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ rtl_test &lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --file-path=./audio-out.ogg --waterfall-file-path=./waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let it run for a minute or so.  If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/bind&lt;br /&gt;
&lt;br /&gt;
This can be placed in the satnogs_post_observation_script for automation.&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3952</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting&amp;diff=3952"/>
		<updated>2025-03-21T08:34:08Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Created page with &amp;quot;SatNOGS Client Troubleshooting&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SatNOGS Client Troubleshooting&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Troubleshooting_Legacy&amp;diff=3951</id>
		<title>Troubleshooting Legacy</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Troubleshooting_Legacy&amp;diff=3951"/>
		<updated>2025-03-21T08:32:46Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Acinonyx moved page Troubleshooting to Troubleshooting Legacy without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Client troubleshooting==&lt;br /&gt;
&lt;br /&gt;
{{Message| Before starting check the logs for an error (there are two different commands depending on the installation way):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Check the whole error log with either &amp;lt;code&amp;gt;journalctl -u satnogs-client.service&amp;lt;/code&amp;gt; (old version) or &amp;lt;code&amp;gt;sudo docker logs satnogs_satnogs-client&amp;lt;/code&amp;gt; (new version)&lt;br /&gt;
* Check live the error log with either &amp;lt;code&amp;gt;journalctl -f -u satnogs-client.service&amp;lt;/code&amp;gt; (old version) or &amp;lt;code&amp;gt;sudo docker logs -f satnogs_satnogs-client&amp;lt;/code&amp;gt; (new version)}}&lt;br /&gt;
&lt;br /&gt;
{{Message|If the hints for common issues below don't help solve your issue, you are welcome to post in the forum.  When doing so, please include any error from the logs and the output of the support report generated by the menu item &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;. This helps give context to the logging messages.}}&lt;br /&gt;
===Raise or Set the debug level===&lt;br /&gt;
&lt;br /&gt;
*Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
*Go to '''Advanced Configuration''' and  set the '''Debug level''' to one of the Values below&lt;br /&gt;
*'''Apply''' the change&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''Setting'''&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|'''DEBUG'''&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NOTSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When done debugging, don't forget to reset the log level, or the files will fill up your disk space.&lt;br /&gt;
&lt;br /&gt;
===Client not showing up on the network?===&lt;br /&gt;
&lt;br /&gt;
*Check that you have ticked the &amp;quot;Is it operational?&amp;quot; checkbox on the groundstation page.&lt;br /&gt;
*Check your settings and ensure that the API token and station ID are correct.  You can get these from your profile page on the SatNOGS network site.  If you have accounts in both dev and prod, make sure you're using the token and station ID from the right environment.&lt;br /&gt;
*Check your SATNOGS_NETWORK_API_URL.  It should point to https://network.satnogs.org/api/ (prod) or https://network-dev.satnogs.org/api/ (dev).&lt;br /&gt;
*Check your network connectivity.  Can you ping network.satnogs.org or network-dev.satnogs.org?  Try running &amp;lt;code&amp;gt;curl https://network.satnogs.org&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl https://network-dev.satnogs.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===RuntimeError: RTL-SDR device not found.===&lt;br /&gt;
Seems that the device is not there. Try rebooting and check if Soapy can identify it using &amp;lt;code&amp;gt;SoapySDRUtil --find&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;satnogsclient - ERROR - Cannot connect to socket 127.0.0.1:4533&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The client is trying to connect to rotctld but is unable to.&lt;br /&gt;
&lt;br /&gt;
*If you have a no-rotator setup, ensure that satnogs-client is configured as such; see the [[Raspberry Pi]] page for info on how to do this.&lt;br /&gt;
**These errors may continue to be reported until [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/issues/340 issue #340] is resolved.&lt;br /&gt;
&lt;br /&gt;
*If you do have a rotator, ensure that rotctld is running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some uploads missing &amp;amp; Doppler-correction not working properly===&lt;br /&gt;
The station/client might have a clock offset. This causes a Doppler shift on the waterfall and some observations don't start because of a conflict between the time on the PC of the station and the time of the SatNOGS Network.&lt;br /&gt;
&lt;br /&gt;
===Uploads (waterfall or audio) are missing for a past observation===&lt;br /&gt;
When using &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; for editing/updating the configuration of the station,  the satnogs-client gets restarted. When this happens during an observation the observation will be aborted and no waterfall/audio/data files will be uploaded. Such observations should be voted as ''failed''.&lt;br /&gt;
&lt;br /&gt;
The partial data from such observations is stored in &amp;lt;code&amp;gt;/tmp/.satnogs/data/&amp;lt;/code&amp;gt;, look for files like &amp;lt;code&amp;gt;receiving_{satnogs|waterfall}_123456_2019-01-01T12-23-42.{out|dat}&amp;lt;/code&amp;gt;. They can be manually removed.&lt;br /&gt;
&lt;br /&gt;
===Invalid Signature for download.opensuse.org===&lt;br /&gt;
Example error during satnogs-setup update or apt-get update:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  The following signatures were invalid: EXPKEYSIG 8BD3901736A40B6C home:librespace OBS Project &amp;lt;home:librespace@build.opensuse.org&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fix:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget -qO - http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key &amp;gt; k&lt;br /&gt;
gpg --no-default-keyring --keyring ./temp-keyring.gpg --import k&lt;br /&gt;
gpg --no-default-keyring --keyring ./temp-keyring.gpg --export --output k.gpg&lt;br /&gt;
mkdir /etc/apt/keyrings&lt;br /&gt;
mv k.gpg /etc/apt/keyrings/satnogs2.gpg&lt;br /&gt;
vi /etc/apt/sources.list.d/satnogs.list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Insert a signed-by statement, as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb [signed-by=/etc/apt/keyrings/satnogs2.gpg] /repositories/home:/librespace:/satnogs/Raspbian_11 - openSUSE Download ./&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More info available at https://community.libre.space/t/sudo-apt-update-signature-invalid/7643/7 and https://community.libre.space/t/update-to-the-invalid-signature-problem-in-the-troubleshooting-document/11386&lt;br /&gt;
&lt;br /&gt;
===apt-get update: connection failed===&lt;br /&gt;
When using the sudo apt-get update command, we get the following connection error:&lt;br /&gt;
[[File:UpdateFailed.png]]&lt;br /&gt;
&lt;br /&gt;
However, a ping to the Ip address works.&lt;br /&gt;
&lt;br /&gt;
If you use a firewall (Ex: stormshield SN210), it can include a default rule that blocks connection urls containing a dot-slash (&amp;quot;./&amp;quot;). (This rule can be named as follows: &amp;quot;path with self-reference&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This rule must be modified to allow the raspberry to access the repository&lt;br /&gt;
&lt;br /&gt;
===  ERROR - Observer job lock acquiring timed out. ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Mar 03 20:05:53 satnogs satnogs-client[257]: satnogsclient.scheduler.tasks - ERROR - Observer job lock acquiring timed out.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is shown when a previous Observation failed (due to a hardware issue or some bug) and didn't properly terminate. To fix this issue, first check the logs for the observation that failed to understand the root cause. Then, restart satnogs-client.&lt;br /&gt;
&lt;br /&gt;
==Signal troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Blank or solid purple waterfall?===&lt;br /&gt;
{{Warning|Some information in this section seems outdated or wrong. Please take it with care.&lt;br /&gt;
Once reviewed this banner can be removed.}}&lt;br /&gt;
At the first sign of trouble, put your station into testing mode.&lt;br /&gt;
&lt;br /&gt;
*Make sure the RTLSDR gain is set correctly. Follow the guide at [[Omnidirectional_Station_How_To#Setting_the_gain]] to find a proper gain setting.&amp;lt;br /&amp;gt;Check your gain value is valid. Wrong values can result in blank waterfalls. For example '7.7.' will result in errors (and a blank waterfall - there is an extra '.' at the end).   &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;journalctl -u satnogs-client.service&amp;lt;/code&amp;gt; It might be a big file, but work through it and look for errors.  &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt; Ensure there is sufficient hard drive space. If temp files can not be created, the waterfall might be blank. &amp;lt;br /&amp;gt;Run &amp;lt;code&amp;gt;rtl_test&amp;lt;/code&amp;gt; for about 30 seconds and make sure you can connect with the dongle and that there are no errors.&lt;br /&gt;
&lt;br /&gt;
===Not receiving anything?===&lt;br /&gt;
&lt;br /&gt;
*Make sure the satellite you are testing observations against is active and recently received by others on [https://network.satnogs.org our production network site].  If you click on a satellite name, a popup will appear and give you the option to click on &amp;quot;Past Observations&amp;quot;. If everything in the past shows red, then the problem is likely with that satellite.&lt;br /&gt;
&lt;br /&gt;
*SO-50 is a good satellite to use for testing as it is a strong FM voice signal assuming you have UHF capabilities. Schedule using &amp;quot;PE0SAT - Mode V/U FM Voice - 436.794 MHz&amp;quot;.  Here is an example to compare against: https://network.satnogs.org/observations/3334/&lt;br /&gt;
&lt;br /&gt;
*ISS is a good test for VHF as the APRS digipeater is alive again (as of this writing; check [https://www.issfanclub.com/ issfanclub.com] for up-to-date information). When you schedule it, be sure to select the APRS downlink.&lt;br /&gt;
&lt;br /&gt;
*If you're using an rtlsdr, check that it can be seen and is operating correctly by running rtl_test.  Let it run for 30 seconds or so, then hit Ctrl-c to kill it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi:~ $ rtl_test &lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000001&lt;br /&gt;
&lt;br /&gt;
Using device 0: Generic RTL2832U OEM&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 &lt;br /&gt;
[R82XX] PLL not locked!&lt;br /&gt;
Sampling at 2048000 S/s.&lt;br /&gt;
&lt;br /&gt;
Info: This tool will continuously read from the device, and report if&lt;br /&gt;
samples get lost. If you observe no further output, everything is fine.&lt;br /&gt;
&lt;br /&gt;
Reading samples in async mode...&lt;br /&gt;
^CSignal caught, exiting!&lt;br /&gt;
&lt;br /&gt;
User cancel, exiting...&lt;br /&gt;
Samples per million lost (minimum): 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You can also try a manual run of satnogs_afsk1200_ax25.py to make sure that works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ satnogs_afsk1200_ax25.py --soapy-rx-device=&amp;quot;driver=rtlsdr&amp;quot; --antenna=RX --samp-rate-rx=2.048e6 --rx-freq=444000000 --file-path=./audio-out.ogg --waterfall-file-path=./waterfall.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let it run for a minute or so.  If everything is working, this should create an .ogg file and a .dat file of non-zero size (probably a few MB each).&lt;br /&gt;
&lt;br /&gt;
===Observations seem off-frequency?===&lt;br /&gt;
[[File:Waterfall_3519_2017-04-24T04-48-48_resized.png|frame|Check your location!]]&lt;br /&gt;
&lt;br /&gt;
*'''PPM drift''' While newer SDR devices are very good and stable, there still may be some PPM drift to compensate for if you notice that signals are consistently off center. The SATNOGS_PPM_ERROR setting in /etc/supervisord.d/satnogs.ini can be used to correct for this.&lt;br /&gt;
*'''Clock sync''' Make sure your clock is synced. Ensure ntp is configured and running (especially with the Raspberry Pi which lacks a real time clock)&lt;br /&gt;
*'''Wrong location''' If your signal seems to be on but drifts at the apex like in this image, check to make sure your Latitude, Longitude, and Elevation coordinates are set properly and in the right format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
You can reset USB without having to reboot the system by running these commands:&lt;br /&gt;
&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
    echo “usb1” &amp;gt; /sys/bus/usb/drivers/usb/bind&lt;br /&gt;
&lt;br /&gt;
This can be placed in the satnogs_post_observation_script for automation.&lt;br /&gt;
&lt;br /&gt;
===RF Noise===&lt;br /&gt;
If you notice a noise in the waterfall every time motors are spinning, you will need to:&lt;br /&gt;
&lt;br /&gt;
*Twist each pair or the motor wire&lt;br /&gt;
*Add proper grounding&lt;br /&gt;
*Add capacitor to the DC input of drivers&lt;br /&gt;
*Wrap the motors wire with adhesive aluminum and then connect it to GND on driver side&lt;br /&gt;
*Add ferrites to motors wires&lt;br /&gt;
&lt;br /&gt;
[[File:Rf noise.png|alt=RF Noise|left|thumb|400x400px|Too much RF Noise]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Software_Defined_Radio&amp;diff=3948</id>
		<title>Software Defined Radio</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Software_Defined_Radio&amp;diff=3948"/>
		<updated>2025-02-13T11:03:42Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Mark page as outdated.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Outdated}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Built upon [https://gnuradio.org/ GNU Radio] and [https://github.com/pothosware/SoapySDR/wiki SoapySDR] by using the [https://gitlab.com/librespacefoundation/gr-soapy gr-soapy] module SatNOGS supports a large variety of Software-Defined Radios (SDRs). The gr-soapy module was developed in the [https://sdrmaker.space/ SDR Makerspace] and is maintained by Libre Space Foundation to bring the vendor-neutral SDR support by SoapySDR to the flexible gnuradio ecosystem.&lt;br /&gt;
&lt;br /&gt;
The most cost-effective solution is to use an RTL-SDR with a Raspberry Pi.  More advanced SDRs are also used, but they require more processing power and thus might require a more powerful computing platform than the Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
==Supported Devices==&lt;br /&gt;
&lt;br /&gt;
SoapySDR supports SDR devices through runtime-loadable modules [https://github.com/pothosware/SoapySDR/wiki#plugin-architecture]. You can find all available modules in the [https://github.com/pothosware/SoapySDR/wiki#modules SoapySDR wiki] (see right column). Most SDR modules are installed by default when setting up a SatNOGS station.&lt;br /&gt;
&lt;br /&gt;
The following SDRs are supported by SatNOGS. SatNOGS uses the RTL-SDR as the recommended beginner signal receiver and tuner.  &lt;br /&gt;
The more advanced SDRs may require more processing power than a Raspberry Pi 3b or 4 can offer. &lt;br /&gt;
&lt;br /&gt;
*[[Software Defined Radio#RTL-SDR Support|RTL-SDR]]&lt;br /&gt;
**[https://www.nooelec.com/store/sdr/sdr-receivers.html NooElec NESDR SMArt]&lt;br /&gt;
**[https://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/ RTL-SDR Blog R820T2 RTL2832U]&lt;br /&gt;
**Full band UV HF RTL-SDR USB Tuner Receiver&lt;br /&gt;
&lt;br /&gt;
*[[Software Defined Radio#USRP support|USRP devices]]&lt;br /&gt;
**[https://www.ettus.com/product/category/USRP-Bus-Series USRP B200]&lt;br /&gt;
&lt;br /&gt;
*[[Software Defined Radio#Airspy support|Airspy]]&lt;br /&gt;
*[[Software Defined Radio#LimeSDR support|LimeSuite devices]]&lt;br /&gt;
**[https://limemicro.com/products/boards/limesdr-mini/ LimeSDR mini]&lt;br /&gt;
*[[Software Defined Radio#PlutoSDR support|PlutoSDR]]&lt;br /&gt;
**[https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/adalm-pluto.html#eb-overview ADALM-PLUTO] (untested)&lt;br /&gt;
&lt;br /&gt;
{{Message|There are probably a lot more devices supported since the transition from gr-osmosdr to gr-soapy. Please update this list when you were able to successfully run a SatNOGS station with a new radio family or model. You can also link your station as an example to give others the ability to compare performance.}}&lt;br /&gt;
&lt;br /&gt;
==Supported Devices with closed-source drivers==&lt;br /&gt;
Unfortunately some vendors require closed-source drivers in their SoapySDR modules and thus those modules or dependencies can't be redistributed by others. Thus they must be manually installed by the user. The following devices require closed-source drivers:&lt;br /&gt;
&lt;br /&gt;
*[[Software Defined Radio#SDRPlay support|SDRPlay]]&lt;br /&gt;
&lt;br /&gt;
==Unsupported Devices==&lt;br /&gt;
{{Warning|This section might be outdated due to the transition to gr-soapy. Please update when possible.}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*[https://greatscottgadgets.com/hackrf/ HackRF One] (not compatible with the SatNOGS client on Raspberry Pi, ''Update: works fine now on a Pi4, only tested with the 8GB version of the Pi4. Will probably work with a 2/4GB version too. Not tested on a Pi3, might not be powerful enough to handle 8MS/s'')&lt;br /&gt;
&lt;br /&gt;
==RTL-SDR Support==&lt;br /&gt;
The RTL-SDR is based on two chips -- the versatile [http://www.realtek.com.tw/products/productsView.aspx?Langid=1&amp;amp;PFid=35&amp;amp;Level=4&amp;amp;Conn=3&amp;amp;ProdID=257 RTL2832U chip] and the [https://rtl-sdr.com/wp-content/uploads/2013/04/R820T_datasheet-Non_R-20111130_unlocked.pdf R820T tuner]. The RTL-SDR is currently the cheapest, most common, and most performing solution available in terms of general sensitivity having a frequency range of 24 – 1766 MHz.  A metal enclosure with SMA connector is preferred, along with a stable TCXO (low ppm).  HF coverage is optional.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using RTL-SDR.com V3 Dongle's Bias-T Power Supply===&lt;br /&gt;
The RTL-SDR.com V3 dongle has a built in software activated Bias-T voltage supply intended to be used for applications such as powering inline LNAs (Low Noise Amplifiers).   There are several ways to turn on the voltage, but through initial testing (as of this writing, 17 Aug 2019) it seems that the following procedure works best.&lt;br /&gt;
&lt;br /&gt;
The below relates to Raspberry Pi installs only.   No testing has been performed on other systems as of yet.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Turning on the Bias-T with no LNA installed and a &amp;quot;shorted&amp;quot; style antenna (such as loops, egg-beaters, etc.) can damage the RTL-SDR.com V3 dongle.   Never activate the bias-t with no LNA installed between the antenna and the SDR dongle.}}&lt;br /&gt;
&lt;br /&gt;
'''Requirements:'''&lt;br /&gt;
&lt;br /&gt;
#Raspberry Pi running Raspbian Buster or newer (latest release of SatNogs image, [https://gitlab.com/librespacefoundation/satnogs/satnogs-pi-gen/-/tags 2019091100], is demonstrated to work)&lt;br /&gt;
#[https://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/ RTL-SDR.com V3 SDR dongle]&lt;br /&gt;
#[https://www.rtl-sdr.com/rtl-sdr-blog-v-3-dongles-user-guide/ RTL-SDR.com Bias-T Software Switch] for linux systems&lt;br /&gt;
#LNA capable of being powered via feedline coax (note that some LNAs need modifications to be powered by the coax, and some cannot be powered by the coax at all.  Check the specifications for your LNA prior to attempting to turn on the Bias-T power supply)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Instructions for installing RTL-SDR.com Bias-T Software Switch====&lt;br /&gt;
&lt;br /&gt;
#Log into your SatNogs station either directly or via SSH&lt;br /&gt;
#If your station does not have cmake installed (SatNogs Image 2019091100 does not), install cmake with &amp;lt;code&amp;gt;sudo apt install cmake&amp;lt;/code&amp;gt;&lt;br /&gt;
#Clone the source for the Bias-T software switch with &amp;lt;code&amp;gt;git clone &amp;lt;nowiki&amp;gt;https://github.com/rtlsdrblog/rtl_biast&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;cd rtl_biast&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;mkdir build&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;cd build&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;cmake ..&amp;lt;/code&amp;gt;  (if you get a &amp;lt;code&amp;gt;LibUSB 1.0 required to compile rtl-sdr&amp;lt;/code&amp;gt; error here, then do &amp;lt;code&amp;gt;sudo apt install libusb-1.0-0-dev&amp;lt;/code&amp;gt; prior to attempting &amp;lt;code&amp;gt;cmake ..&amp;lt;/code&amp;gt; again)&lt;br /&gt;
#&amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The software switch should now be installed in the &amp;quot;src&amp;quot; directory.    If you &amp;lt;code&amp;gt;cd src&amp;lt;/code&amp;gt;, you can turn on the bias-t with the command &amp;lt;code&amp;gt;./rtl_biast -b 1&amp;lt;/code&amp;gt; and turn it off with &amp;lt;code&amp;gt;./rtl_biast -b 0&amp;lt;/code&amp;gt;.   Note that the developers of this switch have warned against attempting to &amp;lt;code&amp;gt;sudo make install&amp;lt;/code&amp;gt; so that this command can be executed from ouside the src directory.   Testing has shown this warning to be accurate, so don't plan on running these commands from anywhere but the src directory, or else be sure to use the full path.&lt;br /&gt;
&lt;br /&gt;
Switching the Bias-T on should yield between 4.5V and 5.0V across the center conductor and shield of the coax.   The voltage should rise almost instantly.   When switched off, the voltage seems to decrease gradually, over 5 to 10 seconds.&lt;br /&gt;
&lt;br /&gt;
====Instructions to activate the bias-t for SatNogs Observations automatically:====&lt;br /&gt;
&lt;br /&gt;
#Log into your SatNogs station either directly or via SSH&lt;br /&gt;
#&amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
#select &amp;lt;code&amp;gt;Advanced&amp;lt;/code&amp;gt;&lt;br /&gt;
#for &amp;lt;code&amp;gt;Radio&amp;lt;/code&amp;gt; -&amp;gt;&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, enter a low gain value supported by your RTL-SDR.com V3 dongle (entering &amp;lt;code&amp;gt;rtl_test&amp;lt;/code&amp;gt; at the command line prior to starting &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; will give you all allowable values of RF gain) and select &amp;lt;code&amp;gt;Ok&amp;lt;/code&amp;gt;&lt;br /&gt;
#for &amp;lt;code&amp;gt;Scripts&amp;lt;/code&amp;gt; -&amp;gt;&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT,&amp;lt;/code&amp;gt; enter &amp;lt;code&amp;gt;/home/pi/rtl_biast/build/src/rtl_biast -b 1&amp;lt;/code&amp;gt; and select &amp;lt;code&amp;gt;Ok&amp;lt;/code&amp;gt;&lt;br /&gt;
#for &amp;lt;code&amp;gt;Scripts&amp;lt;/code&amp;gt; -&amp;gt;&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT,&amp;lt;/code&amp;gt; enter &amp;lt;code&amp;gt;/home/pi/rtl_biast/build/src/rtl_biast -b 0&amp;lt;/code&amp;gt; and select &amp;lt;code&amp;gt;Ok&amp;lt;/code&amp;gt;&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Back&amp;lt;/code&amp;gt;&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt; (allow system to update and hit enter when prompted)&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Back&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your station is now set up to turn the Bias-T on for each scheduled observation (using the &amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt; string) and then turn it off at the conclusion of each observation (using the &amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
You should now schedule several observations to fine tune the &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt; value to get the best S/N performance for your station.   Some have reported needing zero RF gain, others have reported low RF gain required (between 5 and 10 db), and others have said they see little benefit even with very high gain. Each station will be different.&lt;br /&gt;
&lt;br /&gt;
====E4000 Tuner Gain Settings====&lt;br /&gt;
The RTLSDR Driver exposes six (!) IF gain settings (IF1 through IF6) for the E4000 tuner, along with a TUNER gain setting, which is actually a combined LNA and Mixer gain control. Details on the gain stages are available in page 28 of the E4000 data-sheet here: https://www.nooelec.com/files/e4000datasheet.pdf&lt;br /&gt;
&lt;br /&gt;
When you follow the '[[Omnidirectional Station How To#Setting the gain|Setting the Gain]]' guide, all gain sliders (IF1 through IF6, and TUNER) should be presented in SoapySDR, allowing the user to adjust them to optimise for best performance. Once the correct values have been determined, you will need to define these specifically in satnogs-setup as follows:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;IF1=6,IF2=3,IF2=2,IF3=0,IF4=0,IF5=2,IF6=3,TUNER=30&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Replacing the values in the line above with the ones you determined)&lt;br /&gt;
&lt;br /&gt;
====R820T Gain Settings====&lt;br /&gt;
Unfortunately librtlsdr only exposes a single gain control for the R820T/T2 tuners, even though multiple gain adjustments are available. Use the standard SATNOGS_RF_GAIN option, with a gain between 0 and 42 (dB), as optimised for your station via the '[[Omnidirectional Station How To#Setting the gain|Setting the Gain]]' guide.&lt;br /&gt;
&lt;br /&gt;
==Airspy support==&lt;br /&gt;
Vendor: [https://airspy.com/ Airspy]&lt;br /&gt;
&lt;br /&gt;
required SoapySDR module: [https://github.com/pothosware/SoapyAirspy/wiki SoapyAirspy]&lt;br /&gt;
&lt;br /&gt;
Example stations:&lt;br /&gt;
&lt;br /&gt;
*[https://network.satnogs.org/stations/1559/ 1559 - DB2OS-VHF-Omni] / [https://network.satnogs.org/observations/6307151/ Observation #6307151]&lt;br /&gt;
&lt;br /&gt;
'''Note than none of the settings below should be entered with the &amp;quot;  &amp;quot; around the value. This is only for better readability in the Wiki !''' &lt;br /&gt;
&lt;br /&gt;
===Gain settings===&lt;br /&gt;
There are two possible gain modes:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt;: (default) Use a single gain value.  Set the overall gain with &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;,e.g. &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;43&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Use granular gain values.  Set the different gain stages separately:&lt;br /&gt;
**without pre-amp: &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**with pre-amp: &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;LNA=9,MIX=6,VGA=11&amp;quot;&amp;lt;/code&amp;gt; (used in [https://network.satnogs.org/stations/49/ 49 - OZ7SAT])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For reference see also the Airspy driver library linearity gain settings in [https://github.com/airspy/airspyone_host/blob/bceca18f9e3a5f89cff78c4d949c71771d92dfd3/libairspy/src/airspy.c#L117-L122 libairspy/src/airspy.c#L117-L122].&lt;br /&gt;
&lt;br /&gt;
The airspy driver offers &amp;quot;Linearity&amp;quot; and &amp;quot;Sensitivity&amp;quot; gain settings, using a look-up table to configure all three gain stages from a single value (optimized for linearity and gain respectively). Those modes are unfortunately not available through the SoapyAirspy module (see [https://github.com/pothosware/SoapyAirspy/pull/14 SoapyAirspy#14]).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Overall&amp;quot; gain mode is a soapy-specific driver-independent mode to configure all gain stages based on the single gain value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;. It tries to evenly distribute the gain, potentially resulting in non-optimal configuration. Thus for achieving optimal results the &amp;quot;Settings Field&amp;quot; mode is recommended, where all three gain stages can be configured separately.&lt;br /&gt;
&lt;br /&gt;
===Sample rates===&lt;br /&gt;
&lt;br /&gt;
*Airspy R2: &amp;lt;code&amp;gt;SATNOGS_RX_SAMPLE_RATE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;2.5e6 or 10e6&amp;lt;/code&amp;gt;&lt;br /&gt;
*Airspy Mini: &amp;lt;code&amp;gt;SATNOGS_RX_SAMPLE_RATE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;3e6 or 6e6&amp;lt;/code&amp;gt;&lt;br /&gt;
*Airspy HF+: &amp;lt;code&amp;gt;SATNOGS_RX_SAMPLE_RATE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;768e3&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
source: [https://twitter.com/DutchSpace/status/1241305651168661504]&lt;br /&gt;
&lt;br /&gt;
If you want to activate the integrated bias tee, set &amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;biastee=true&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bit packing (&amp;quot;Enable packing 4 12-bit samples into 3 16-bit words for 25% less USB trafic.&amp;quot;) could be enabled with &amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;bitpacking=true&amp;quot;&amp;lt;/code&amp;gt; (untested). Device arguments can be concatenated with comma as delimiter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==SDRPlay support==&lt;br /&gt;
Vendor: [http://www.sdrplay.com/ SDRPlay]&lt;br /&gt;
&lt;br /&gt;
required SoapySDR module: [https://github.com/pothosware/SoapySDRPlay SoapySDRPlay]&lt;br /&gt;
&lt;br /&gt;
The following settings [https://network.satnogs.org/observations/?norad=&amp;amp;observer=&amp;amp;station=1354&amp;amp;results=d1&amp;amp;start=2020-02-20+00%3A00&amp;amp;end=2020-02-24+23%3A59 worked well] for an [https://www.sdrplay.com/rspduo/ SDRplay RSPduo] when using cross-yagis and good [https://www.ssb.de/en/amplifiers/preamplifier/vox/100w SSB low-noise amplifiers]:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE=&amp;quot;driver=sdrplay&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE=2e6&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH=600e3&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_RF_GAIN=34&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_ANTENNA=&amp;quot;Tuner 1 50 ohm&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that 14-bits ADC resolution is only available when using sample rates below 6.048 MSPS, above which the resolution is reduced gradually to 12, 10, and 8 bits.&lt;br /&gt;
&lt;br /&gt;
==USRP support==&lt;br /&gt;
Vendor: [https://ettus.com Ettus Research]&lt;br /&gt;
&lt;br /&gt;
required SoapySDR module: [https://github.com/pothosware/SoapyUHD/wiki SoapyUHD]&lt;br /&gt;
&lt;br /&gt;
Recent USRPs that use the Analog Devices [https://www.analog.com/en/products/ad9361.html AD9361 RFIC] can use almost arbitrary sample rates and analog bandwidth settings. It can be an advantage to set the sample rate as high as the host computer can handle and the analog bandwidth to as narrow as meaningful. The following settings [https://network.satnogs.org/observations/?norad=&amp;amp;observer=&amp;amp;station=1353&amp;amp;results=d1&amp;amp;start=2020-02-20+00%3A00&amp;amp;end=2020-02-24+23%3A59 worked well] for a [https://www.ettus.com/all-products/ub210-kit/ USRP B210] when using cross-yagis and good [https://www.ssb.de/en/amplifiers/preamplifier/vox/100w SSB low-noise amplifiers]:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE=&amp;quot;driver=uhd&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE=2e6&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH=600e3&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_RF_GAIN=50&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_ANTENNA=&amp;quot;RX2&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**on the B200 your Antenna options are &amp;lt;code&amp;gt;TX/RX&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;RX2&amp;lt;/code&amp;gt;, be sure you select the right option for your configuration!&lt;br /&gt;
&lt;br /&gt;
==LimeSDR support==&lt;br /&gt;
Vendor: [https://limemicro.com Lime microsystems]&lt;br /&gt;
&lt;br /&gt;
required SoapySDR module: [https://github.com/myriadrf/LimeSuite/tree/master/SoapyLMS7 SoapyLMS7 wrapper]&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;driver=lime&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;2.048e6&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;LNAW&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;TIA=12,PGA=0,LNA=12&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(untested, copied from station 1378)&lt;br /&gt;
&lt;br /&gt;
Example stations:&lt;br /&gt;
&lt;br /&gt;
*[https://network.satnogs.org/stations/1378/ 1378 - Wolbach library]&lt;br /&gt;
&lt;br /&gt;
==PlutoSDR support==&lt;br /&gt;
Vendor: [https://www.analog.com Analog Devices]&lt;br /&gt;
&lt;br /&gt;
required SoapySDR module: [https://github.com/pothosware/SoapyPlutoSDR/wiki SoapyPlutoSDR]&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;driver=plutosdr&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;2e6&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;A_BALANCED&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;50&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==HackRF support==&lt;br /&gt;
Vendor: [https://greatscottgadgets.com/hackrf/ Great Scott Gadgets]&lt;br /&gt;
&lt;br /&gt;
required SoapySDR module: [https://github.com/pothosware/SoapyHackRF SoapyHackRF]&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;driver=hackrf&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;TX/RX&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE=&amp;quot;8e6&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**HackRF supports 8 to 20MS/s. Higher than 8MS/s has not been tested with SatNOGS on a RaspberryPi&lt;br /&gt;
**HackRF can run lower than 8MS/s, but it is not recommended as the ADC's filter is not designed for samplerates lower than 8MS/s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are two possible gain modes:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Overal&amp;quot;, specifying just one global gain:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;64&amp;quot;&amp;lt;/code&amp;gt; (Supported gain range: 0-116dB)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Settings Field&amp;quot;, specifying the individual gains.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;AMP=14,LNA=40,VGA=48&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**AMP: supports 0 (amp disabled) and 14 (amp enabled)&lt;br /&gt;
**LNA: supports 0-40dBin 8dB steps&lt;br /&gt;
**VGA: supports 0-62dB in 2dB steps&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To activate bias-T power on the antenna port:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;bias_tx=true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example stations:&lt;br /&gt;
&lt;br /&gt;
*[https://network.satnogs.org/stations/1868/ 1868 - HB9FXX S-Band]&lt;br /&gt;
&lt;br /&gt;
==Remote==&lt;br /&gt;
Using the SoapySDRServer running on the same machine or over the network.&lt;br /&gt;
&lt;br /&gt;
Required SoapySDRServer module: [https://github.com/pothosware/SoapyRemote/wiki SoapyRemote].&lt;br /&gt;
Optional SoapySDRUtil to probe for SDR and settings.&lt;br /&gt;
Make sure to match the antenna and gain setting from the actual device connected to the remote. Also possible to select remote drivers and other parameters; &amp;lt;code&amp;gt;driver=remote,remote:driver=rtlsdr&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;driver=remote&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;2e6&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;&amp;quot;RX&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;=&amp;lt;code&amp;gt;20.7&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not stable.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
*[https://www.rtl-sdr.com/rtlsdr4everyone-review-of-5-rtl-sdr-dongles/ Review of 5 RTL-SDR Dongles]&lt;br /&gt;
*[https://hackaday.com/2017/09/05/19-rtl-sdr-dongles-reviewed/ 19 RTL-SDR Dongles Reviewed]&lt;br /&gt;
*[https://www.rtl-sdr.com/review-airspy-vs-sdrplay-rsp-vs-hackrf/ Review: Airspy VS. SDRplay RSP VS. HackRF]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
&lt;br /&gt;
__NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3933</id>
		<title>SatNOGS Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3933"/>
		<updated>2025-01-12T07:45:34Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: /* Missing features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Satnogs-setup.png|thumb]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for provisioning and configuring '''SatNOGS'''. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]]. Instruction on this page assumes that you have successfully established console access on the host machine intended to run SatNOGS.&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
The &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; configuration tool is automatically executed during [[Raspberry Pi#Installation|the installation process]]. However, if needed, you can reconfigure the software at any time by running it again:&lt;br /&gt;
 $ satnogs-setup&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
{{Warning| Configuring SatNOGS can potentially interrupt a running observation!}}The configuration is divided into &amp;lt;code&amp;gt;Basic&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Advanced&amp;lt;/code&amp;gt; submenus. The '''Basic Configuration''' includes the essential settings required to get the station up and running, while further optimization or customization can be done through the '''Advanced Configuration'''. The &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt; menu item displays the current configuration in a single view, and the &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; option deletes all existing configurations. Lastly, the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; menu item provides information about the tool itself.&lt;br /&gt;
Once the configuration is completed, exiting the utility will apply the changes. Please note that this process may take several minutes, depending on the modifications made.{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website. Please don’t share your API key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log into [https://network.satnogs.org/ network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page, right under the user icon, click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
===Advanced Setup===&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
====Radio====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware. Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Rotator====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Artifacts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Scripts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Hamlib====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Development====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Debug====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Obsolete Settings===&lt;br /&gt;
The following options were available in previous versions of SatNOGS and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==Updating SatNOGS Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}The software is updated automatically when &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; is executed.{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from legacy software===&lt;br /&gt;
{{Warning|IMPORTANT: Some essential features from the previous version are currently unavailable in the newer version. Please review the [[SatNOGS Setup#Missing_features|Missing Features Table]] before proceeding with the upgrade. If any of the missing features are critical to your setup, follow the [[Raspberry_Pi_Legacy|Legacy Software Installation Guide]] to install the legacy software.}}&lt;br /&gt;
====Missing features====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Feature&lt;br /&gt;
!Description&lt;br /&gt;
!Related issue&lt;br /&gt;
|-&lt;br /&gt;
|Rotator support&lt;br /&gt;
|No access to serial devices.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/146 satnogs-ansible#146]&lt;br /&gt;
|-&lt;br /&gt;
|Installation of experimental software&lt;br /&gt;
|This feature is currently unimplemented.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/156 satnogs-ansible#156]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Post and pre-observation scripts&lt;br /&gt;
|No host path for scripts is defined or mounted.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/184 satnogs-ansible#184]&lt;br /&gt;
|-&lt;br /&gt;
|Double curly braces are broken.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/176 satnogs-ansible#176]&lt;br /&gt;
|-&lt;br /&gt;
|Component versions in support report&lt;br /&gt;
|The versions of components in the support report are not available.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-config/-/issues/68 satnogs-config#68]&lt;br /&gt;
|-&lt;br /&gt;
|Editing source code of running software&lt;br /&gt;
|Containers are read-only and no modification on the source code can be made.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/157 satnogs-ansible#157]&lt;br /&gt;
|}&lt;br /&gt;
To upgrade from the legacy SatNOGS software, execute the normal installation command:&lt;br /&gt;
 $ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&lt;br /&gt;
The command will clean-up the old software, install the new one and then bring up the SatNOGS configuraion menu-driver utility.&lt;br /&gt;
&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To verify that the software is set up correctly, execute:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker ps -f 'name=^satnogs_' --format &amp;quot;table {{.Names}}\t{{.Status}}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
NAMES                    STATUS&lt;br /&gt;
satnogs_satnogs-client   Up 31 seconds&lt;br /&gt;
satnogs_rigctld          Up 31 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/var/lib/docker-bindmounts/ansible/etc/ansible/host_vars/ansible&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card), you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Execute &amp;lt;code&amp;gt;$ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Ansible]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3932</id>
		<title>SatNOGS Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3932"/>
		<updated>2025-01-12T07:42:42Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: /* Upgrading from legacy software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Satnogs-setup.png|thumb]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for provisioning and configuring '''SatNOGS'''. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]]. Instruction on this page assumes that you have successfully established console access on the host machine intended to run SatNOGS.&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
The &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; configuration tool is automatically executed during [[Raspberry Pi#Installation|the installation process]]. However, if needed, you can reconfigure the software at any time by running it again:&lt;br /&gt;
 $ satnogs-setup&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
{{Warning| Configuring SatNOGS can potentially interrupt a running observation!}}The configuration is divided into &amp;lt;code&amp;gt;Basic&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Advanced&amp;lt;/code&amp;gt; submenus. The '''Basic Configuration''' includes the essential settings required to get the station up and running, while further optimization or customization can be done through the '''Advanced Configuration'''. The &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt; menu item displays the current configuration in a single view, and the &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; option deletes all existing configurations. Lastly, the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; menu item provides information about the tool itself.&lt;br /&gt;
Once the configuration is completed, exiting the utility will apply the changes. Please note that this process may take several minutes, depending on the modifications made.{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website. Please don’t share your API key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log into [https://network.satnogs.org/ network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page, right under the user icon, click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
===Advanced Setup===&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
====Radio====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware. Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Rotator====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Artifacts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Scripts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Hamlib====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Development====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Debug====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Obsolete Settings===&lt;br /&gt;
The following options were available in previous versions of SatNOGS and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==Updating SatNOGS Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}The software is updated automatically when &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; is executed.{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from legacy software===&lt;br /&gt;
{{Warning|IMPORTANT: Some essential features from the previous version are currently unavailable in the newer version. Please review the [[SatNOGS Setup#Missing_features|Missing Features Table]] before proceeding with the upgrade. If any of the missing features are critical to your setup, follow the [[Raspberry_Pi_Legacy|Legacy Software Installation Guide]] to install the legacy software.}}&lt;br /&gt;
====Missing features====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Feature&lt;br /&gt;
!Description&lt;br /&gt;
!Related issue&lt;br /&gt;
|-&lt;br /&gt;
|Rotator support&lt;br /&gt;
|No access to serial devices.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/146 satnogs-ansible#146]&lt;br /&gt;
|-&lt;br /&gt;
|Installation of experimental software&lt;br /&gt;
|This feature is currently unimplemented.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/156 satnogs-ansible#156]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Post and pre-observation scripts&lt;br /&gt;
|No path is defined or mounted.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/184 satnogs-ansible#184]&lt;br /&gt;
|-&lt;br /&gt;
|Double curly braces are broken.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/176 satnogs-ansible#176]&lt;br /&gt;
|-&lt;br /&gt;
|Component versions in support report&lt;br /&gt;
|The versions of components in the support report is not available.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-config/-/issues/68 satnogs-config#68]&lt;br /&gt;
|-&lt;br /&gt;
|Cannot modify running software&lt;br /&gt;
|Containers are read-only.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/157 satnogs-ansible#157]&lt;br /&gt;
|}&lt;br /&gt;
To upgrade from the legacy SatNOGS software, execute the normal installation command:&lt;br /&gt;
 $ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&lt;br /&gt;
The command will clean-up the old software, install the new one and then bring up the SatNOGS configuraion menu-driver utility.&lt;br /&gt;
&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To verify that the software is set up correctly, execute:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker ps -f 'name=^satnogs_' --format &amp;quot;table {{.Names}}\t{{.Status}}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
NAMES                    STATUS&lt;br /&gt;
satnogs_satnogs-client   Up 31 seconds&lt;br /&gt;
satnogs_rigctld          Up 31 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/var/lib/docker-bindmounts/ansible/etc/ansible/host_vars/ansible&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card), you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Execute &amp;lt;code&amp;gt;$ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Ansible]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3931</id>
		<title>SatNOGS Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3931"/>
		<updated>2025-01-11T13:57:51Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Improve warning&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Satnogs-setup.png|thumb]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for provisioning and configuring '''SatNOGS'''. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]]. Instruction on this page assumes that you have successfully established console access on the host machine intended to run SatNOGS.&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
The &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; configuration tool is automatically executed during [[Raspberry Pi#Installation|the installation process]]. However, if needed, you can reconfigure the software at any time by running it again:&lt;br /&gt;
 $ satnogs-setup&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
{{Warning| Configuring SatNOGS can potentially interrupt a running observation!}}The configuration is divided into &amp;lt;code&amp;gt;Basic&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Advanced&amp;lt;/code&amp;gt; submenus. The '''Basic Configuration''' includes the essential settings required to get the station up and running, while further optimization or customization can be done through the '''Advanced Configuration'''. The &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt; menu item displays the current configuration in a single view, and the &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; option deletes all existing configurations. Lastly, the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; menu item provides information about the tool itself.&lt;br /&gt;
Once the configuration is completed, exiting the utility will apply the changes. Please note that this process may take several minutes, depending on the modifications made.{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website. Please don’t share your API key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log into [https://network.satnogs.org/ network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page, right under the user icon, click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
===Advanced Setup===&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
====Radio====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware. Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Rotator====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Artifacts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Scripts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Hamlib====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Development====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Debug====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Obsolete Settings===&lt;br /&gt;
The following options were available in previous versions of SatNOGS and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==Updating SatNOGS Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}The software is updated automatically when &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; is executed.{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from legacy software===&lt;br /&gt;
{{Warning|IMPORTANT: Some essential features from the previous version are currently unavailable in the newer version. Please review the [[SatNOGS Setup#Missing_features|Missing Features Table]] before proceeding with the upgrade. If any of the missing features are critical to your setup, follow the [[Raspberry_Pi_Legacy|Legacy Software Installation Guide]] to install the legacy software.}}&lt;br /&gt;
====Missing features====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Feature&lt;br /&gt;
!Description&lt;br /&gt;
!Related issue&lt;br /&gt;
|-&lt;br /&gt;
|Rotator support&lt;br /&gt;
|No access to serial devices.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/146 satnogs-ansible#146]&lt;br /&gt;
|-&lt;br /&gt;
|Installation of experimental software&lt;br /&gt;
|This feature is currently unimplemented.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/156 satnogs-ansible#156]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Post and pre-observation scripts&lt;br /&gt;
|No path is defined or mounted.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/184 satnogs-ansible#184]&lt;br /&gt;
|-&lt;br /&gt;
|Double curly braces are broken.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/176 satnogs-ansible#176]&lt;br /&gt;
|-&lt;br /&gt;
|Component versions in support report&lt;br /&gt;
|The versions of components in the support report is not available.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-config/-/issues/68 satnogs-config#68]&lt;br /&gt;
|-&lt;br /&gt;
|Cannot modify running software&lt;br /&gt;
|Containers are read-only.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/157 satnogs-ansible#157]&lt;br /&gt;
|}&lt;br /&gt;
To update from the legacy SatNOGS software execute the normal installation command:&lt;br /&gt;
 $ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&lt;br /&gt;
The command will clean-up the old software, install the new one and then bring up the SatNOGS configuraion menu-driver utility.&lt;br /&gt;
&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To verify that the software is set up correctly, execute:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker ps -f 'name=^satnogs_' --format &amp;quot;table {{.Names}}\t{{.Status}}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
NAMES                    STATUS&lt;br /&gt;
satnogs_satnogs-client   Up 31 seconds&lt;br /&gt;
satnogs_rigctld          Up 31 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/var/lib/docker-bindmounts/ansible/etc/ansible/host_vars/ansible&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card), you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Execute &amp;lt;code&amp;gt;$ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Ansible]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3930</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3930"/>
		<updated>2025-01-11T13:56:24Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: /* Flashing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:B3342fcc865731d69e0c9d7a8b1abb887185bc13 1 531x500.jpg|alt=Libre Space Foundation Raspberry Pi Case|thumb|Libre Space Foundation Raspberry Pi Case, [https://www.thingiverse.com/thing:3233687 on thingiverse]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi (version 3, 4 and 5) is the reference platform for SatNOGS (see our [[SatNOGS Client Ansible|Ansible guide]] to install SatNOGS on other Linux machines). &lt;br /&gt;
&lt;br /&gt;
{{Message|This page assumes you have an account and a ground station registered on either network.satnogs.org or network-dev.satnogs.org. Make note of your station ID and API Key.}}&lt;br /&gt;
&lt;br /&gt;
==Flashing==&lt;br /&gt;
{{Warning|IMPORTANT: Some essential features from the previous version are currently unavailable in the newer version. Please review the [[SatNOGS Setup#Missing_features|Missing Features Table]] before flashing. If any of the missing features are critical to your setup, follow the [[Raspberry_Pi_Legacy|Legacy Software Installation Guide]] to install the legacy software.}}Use the '''Raspberry Pi Imager''', as outlined in the [https://www.raspberrypi.com/documentation/computers/getting-started.html#raspberry-pi-imager Raspberry Pi OS flashing guidelines], and follow the steps provided there. Along with the official guide, be sure to take into account the instructions provided in the following subsections.  &lt;br /&gt;
&lt;br /&gt;
===OS selection===&lt;br /&gt;
To optimize resource usage and reduce unnecessary running services, choose the Raspberry Pi OS Lite image instead of the full Raspberry Pi OS image. During the OS selection process, navigate to the &amp;lt;code&amp;gt;Raspberry Pi OS (other)&amp;lt;/code&amp;gt; submenu and select &amp;lt;code&amp;gt;Raspberry Pi OS Lite (64-bit)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===OS customization===&lt;br /&gt;
At the very least, you need to:&lt;br /&gt;
&lt;br /&gt;
*Set username and password&lt;br /&gt;
*Set locale settings&lt;br /&gt;
**Time zone&lt;br /&gt;
**Keyboard layout&lt;br /&gt;
*Enable SSH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If connection to the internet is via Wi-Fi, make sure to '''Configure wireless LAN''' as well.&lt;br /&gt;
&lt;br /&gt;
To easily discover the Rapsberry Pi among other Rapsberry Pis in your network, '''set a unique hostname'''.&lt;br /&gt;
&lt;br /&gt;
==Getting console access==&lt;br /&gt;
You can log in the Raspberry Pi by connecting it to a keyboard and monitor or through network via an SSH connection.&lt;br /&gt;
&lt;br /&gt;
===Keyboard and monitor===&lt;br /&gt;
Once your Raspberry Pi is booted, log in with the username and password that you set during the flashing process.&lt;br /&gt;
&lt;br /&gt;
===Network===&lt;br /&gt;
If your network supports [[wikipedia:Zero-configuration_networking|&amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt;]], you can use the hostname of your Raspberry Pi and log in with SSH using the username and password that you set during the flashing process. Example:&lt;br /&gt;
 $ ssh pi@raspberrypi.local&lt;br /&gt;
If &amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt; is not supported then you must manually find the IP address of the Raspberry Pi (e.g. in your router management interface).&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
To install the SatNOGS software on the Raspberry Pi OS or any other supported OS you just log, and execute the following command:&lt;br /&gt;
 $ curl -sfL https://satno.gs/install | sh -s --&lt;br /&gt;
This command executes the '''SatNOGS Setup''' tool which will install all the necessary software and then bring up the SatNOGS configuration menu-driven utility.&lt;br /&gt;
&lt;br /&gt;
Follow [[SatNOGS Setup]] instructions to configure the system.&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3929</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3929"/>
		<updated>2025-01-11T13:51:33Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Add warning for missing features.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:B3342fcc865731d69e0c9d7a8b1abb887185bc13 1 531x500.jpg|alt=Libre Space Foundation Raspberry Pi Case|thumb|Libre Space Foundation Raspberry Pi Case, [https://www.thingiverse.com/thing:3233687 on thingiverse]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi (version 3, 4 and 5) is the reference platform for SatNOGS (see our [[SatNOGS Client Ansible|Ansible guide]] to install SatNOGS on other Linux machines). &lt;br /&gt;
&lt;br /&gt;
{{Message|This page assumes you have an account and a ground station registered on either network.satnogs.org or network-dev.satnogs.org. Make note of your station ID and API Key.}}&lt;br /&gt;
&lt;br /&gt;
==Flashing==&lt;br /&gt;
{{Warning|IMPORTANT: Some key features from the previous version are currently missing in the newer version! Review the [[SatNOGS Setup#Missing_features|missing features]] before flashing!}}Use the '''Raspberry Pi Imager''', as outlined in the [https://www.raspberrypi.com/documentation/computers/getting-started.html#raspberry-pi-imager Raspberry Pi OS flashing guidelines], and follow the steps provided there. Along with the official guide, be sure to take into account the instructions provided in the following subsections.  &lt;br /&gt;
&lt;br /&gt;
===OS selection===&lt;br /&gt;
To optimize resource usage and reduce unnecessary running services, choose the Raspberry Pi OS Lite image instead of the full Raspberry Pi OS image. During the OS selection process, navigate to the &amp;lt;code&amp;gt;Raspberry Pi OS (other)&amp;lt;/code&amp;gt; submenu and select &amp;lt;code&amp;gt;Raspberry Pi OS Lite (64-bit)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===OS customization===&lt;br /&gt;
At the very least, you need to:&lt;br /&gt;
&lt;br /&gt;
*Set username and password&lt;br /&gt;
*Set locale settings&lt;br /&gt;
**Time zone&lt;br /&gt;
**Keyboard layout&lt;br /&gt;
*Enable SSH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If connection to the internet is via Wi-Fi, make sure to '''Configure wireless LAN''' as well.&lt;br /&gt;
&lt;br /&gt;
To easily discover the Rapsberry Pi among other Rapsberry Pis in your network, '''set a unique hostname'''.&lt;br /&gt;
&lt;br /&gt;
==Getting console access==&lt;br /&gt;
You can log in the Raspberry Pi by connecting it to a keyboard and monitor or through network via an SSH connection.&lt;br /&gt;
&lt;br /&gt;
===Keyboard and monitor===&lt;br /&gt;
Once your Raspberry Pi is booted, log in with the username and password that you set during the flashing process.&lt;br /&gt;
&lt;br /&gt;
===Network===&lt;br /&gt;
If your network supports [[wikipedia:Zero-configuration_networking|&amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt;]], you can use the hostname of your Raspberry Pi and log in with SSH using the username and password that you set during the flashing process. Example:&lt;br /&gt;
 $ ssh pi@raspberrypi.local&lt;br /&gt;
If &amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt; is not supported then you must manually find the IP address of the Raspberry Pi (e.g. in your router management interface).&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
To install the SatNOGS software on the Raspberry Pi OS or any other supported OS you just log, and execute the following command:&lt;br /&gt;
 $ curl -sfL https://satno.gs/install | sh -s --&lt;br /&gt;
This command executes the '''SatNOGS Setup''' tool which will install all the necessary software and then bring up the SatNOGS configuration menu-driven utility.&lt;br /&gt;
&lt;br /&gt;
Follow [[SatNOGS Setup]] instructions to configure the system.&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3928</id>
		<title>SatNOGS Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3928"/>
		<updated>2025-01-11T13:40:55Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Add missing features&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Satnogs-setup.png|thumb]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for provisioning and configuring '''SatNOGS'''. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]]. Instruction on this page assumes that you have successfully established console access on the host machine intended to run SatNOGS.&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
The &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; configuration tool is automatically executed during [[Raspberry Pi#Installation|the installation process]]. However, if needed, you can reconfigure the software at any time by running it again:&lt;br /&gt;
 $ satnogs-setup&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
{{Warning| Configuring SatNOGS can potentially interrupt a running observation!}}The configuration is divided into &amp;lt;code&amp;gt;Basic&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Advanced&amp;lt;/code&amp;gt; submenus. The '''Basic Configuration''' includes the essential settings required to get the station up and running, while further optimization or customization can be done through the '''Advanced Configuration'''. The &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt; menu item displays the current configuration in a single view, and the &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; option deletes all existing configurations. Lastly, the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; menu item provides information about the tool itself.&lt;br /&gt;
Once the configuration is completed, exiting the utility will apply the changes. Please note that this process may take several minutes, depending on the modifications made.{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website. Please don’t share your API key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log into [https://network.satnogs.org/ network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page, right under the user icon, click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
===Advanced Setup===&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
====Radio====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware. Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Rotator====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Artifacts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Scripts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Hamlib====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Development====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Debug====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Obsolete Settings===&lt;br /&gt;
The following options were available in previous versions of SatNOGS and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==Updating SatNOGS Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}The software is updated automatically when &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; is executed.{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from legacy software===&lt;br /&gt;
{{Warning|IMPORTANT: Some key features from the previous version are currently missing in the newer version!}}&lt;br /&gt;
&lt;br /&gt;
==== Missing features ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Feature&lt;br /&gt;
!Description&lt;br /&gt;
!Related issue&lt;br /&gt;
|-&lt;br /&gt;
|Rotator support&lt;br /&gt;
|No access to serial devices.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/146 satnogs-ansible#146]&lt;br /&gt;
|-&lt;br /&gt;
|Installation of experimental software&lt;br /&gt;
|This feature is currently unimplemented.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/156 satnogs-ansible#156]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Post and pre-observation scripts&lt;br /&gt;
|No path is defined or mounted.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/184 satnogs-ansible#184]&lt;br /&gt;
|-&lt;br /&gt;
|Double curly braces are broken.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/176 satnogs-ansible#176]&lt;br /&gt;
|-&lt;br /&gt;
|Component versions in support report&lt;br /&gt;
|The versions of components in the support report is not available.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-config/-/issues/68 satnogs-config#68]&lt;br /&gt;
|-&lt;br /&gt;
|Cannot modify running software&lt;br /&gt;
|Containers are read-only.&lt;br /&gt;
|[https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible/-/issues/157 satnogs-ansible#157]&lt;br /&gt;
|}&lt;br /&gt;
To update from the legacy SatNOGS software execute the normal installation command:&lt;br /&gt;
 $ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&lt;br /&gt;
The command will clean-up the old software, install the new one and then bring up the SatNOGS configuraion menu-driver utility.&lt;br /&gt;
&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To verify that the software is set up correctly, execute:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker ps -f 'name=^satnogs_' --format &amp;quot;table {{.Names}}\t{{.Status}}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
NAMES                    STATUS&lt;br /&gt;
satnogs_satnogs-client   Up 31 seconds&lt;br /&gt;
satnogs_rigctld          Up 31 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/var/lib/docker-bindmounts/ansible/etc/ansible/host_vars/ansible&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card), you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Execute &amp;lt;code&amp;gt;$ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Ansible]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3927</id>
		<title>SatNOGS Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3927"/>
		<updated>2025-01-11T13:06:09Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Added missing categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Satnogs-setup.png|thumb]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for provisioning and configuring '''SatNOGS'''. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]]. Instruction on this page assumes that you have successfully established console access on the host machine intended to run SatNOGS.&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
The &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; configuration tool is automatically executed during [[Raspberry Pi#Installation|the installation process]]. However, if needed, you can reconfigure the software at any time by running it again:&lt;br /&gt;
 $ satnogs-setup&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
{{Warning| Configuring SatNOGS can potentially interrupt a running observation!}}The configuration is divided into &amp;lt;code&amp;gt;Basic&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Advanced&amp;lt;/code&amp;gt; submenus. The '''Basic Configuration''' includes the essential settings required to get the station up and running, while further optimization or customization can be done through the '''Advanced Configuration'''. The &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt; menu item displays the current configuration in a single view, and the &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; option deletes all existing configurations. Lastly, the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; menu item provides information about the tool itself.&lt;br /&gt;
Once the configuration is completed, exiting the utility will apply the changes. Please note that this process may take several minutes, depending on the modifications made.{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website. Please don’t share your API key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log into [https://network.satnogs.org/ network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page, right under the user icon, click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
===Advanced Setup===&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
====Radio====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware. Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Rotator====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Artifacts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Scripts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Hamlib====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Development====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Debug====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Obsolete Settings===&lt;br /&gt;
The following options were available in previous versions of SatNOGS and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==Updating SatNOGS Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}The software is updated automatically when &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; is executed.{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from legacy software===&lt;br /&gt;
To update from the legacy SatNOGS software execute the normal installation command:&lt;br /&gt;
 $ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&lt;br /&gt;
The command will clean-up the old software, install the new one and then bring up the SatNOGS configuraion menu-driver utility.&lt;br /&gt;
&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To verify that the software is set up correctly, execute:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker ps -f 'name=^satnogs_' --format &amp;quot;table {{.Names}}\t{{.Status}}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
NAMES                    STATUS&lt;br /&gt;
satnogs_satnogs-client   Up 31 seconds&lt;br /&gt;
satnogs_rigctld          Up 31 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/var/lib/docker-bindmounts/ansible/etc/ansible/host_vars/ansible&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card), you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Execute &amp;lt;code&amp;gt;$ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Ansible]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Client_Setup&amp;diff=3926</id>
		<title>SatNOGS Client Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Client_Setup&amp;diff=3926"/>
		<updated>2025-01-11T13:03:22Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Acinonyx moved page SatNOGS Client Setup to SatNOGS Setup Legacy: Replaced by an updated page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[SatNOGS Setup Legacy]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup_Legacy&amp;diff=3925</id>
		<title>SatNOGS Setup Legacy</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup_Legacy&amp;diff=3925"/>
		<updated>2025-01-11T13:03:21Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Acinonyx moved page SatNOGS Client Setup to SatNOGS Setup Legacy: Replaced by an updated page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for configuring a '''SatNOGS Client''' system. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]].&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
Before starting &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt;, ensure the Raspberry Pi is up to date. This can be done with &amp;lt;code&amp;gt;sudo apt update&amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt;sudo apt upgrade&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
{{Message| In case of getting a similar error to this:&lt;br /&gt;
&amp;lt;code&amp;gt;W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://download.opensuse.org/repositories/home:/librespace:/satnogs/Raspbian_10 ./ InRelease: The following signatures were invalid: EXPKEYSIG 8BD3901736A40B6C home:librespace OBS Project &amp;lt;home:librespace@build.opensuse.org&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Check at https://wiki.satnogs.org/Troubleshooting#Invalid_Signature_for_download.opensuse.org on how to solve it}}In case of getting a similar error to &amp;quot;Newer kernel available&amp;quot; annoying message after running sudo apt update:&lt;br /&gt;
&lt;br /&gt;
Package configuration  &lt;br /&gt;
&lt;br /&gt;
┌──────────┤ Pending kernel upgrade ├─────────────────────┐&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                              │&lt;br /&gt;
&lt;br /&gt;
│ Newer kernel available                                                                                         │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                              │&lt;br /&gt;
&lt;br /&gt;
│ The currently running kernel version is 4.19.97-v7l+ which is not the                 │&lt;br /&gt;
&lt;br /&gt;
│ expected kernel version 4.19.93-v8+.                                                                 │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                             │&lt;br /&gt;
&lt;br /&gt;
│ Restarting the system to load the new kernel will not be handled                      │&lt;br /&gt;
&lt;br /&gt;
│ automatically, so you should consider rebooting.                                               │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                             │&lt;br /&gt;
&lt;br /&gt;
│                                 &amp;lt;Ok&amp;gt;                                                                                   │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                             │&lt;br /&gt;
&lt;br /&gt;
└─────────────────────────────────────────────────|&lt;br /&gt;
&lt;br /&gt;
Do a &amp;quot;sudo apt purge needrestart&amp;quot; after doing a reboot after doing a &amp;quot;sudo apt update&amp;quot;{{Message| In case of getting a similar error to this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
E: Repository 'http://archive.raspberrypi.org/debian buster InRelease' changed its 'Suite' value from 'testing' to 'oldstable'&lt;br /&gt;
&lt;br /&gt;
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.&lt;br /&gt;
&lt;br /&gt;
E: Repository 'http://raspbian.raspberrypi.org/raspbian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable'&lt;br /&gt;
&lt;br /&gt;
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Run &amp;lt;code&amp;gt;sudo apt-get update --allow-releaseinfo-change&amp;lt;/code&amp;gt; instead of just &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
(See: [[Troubleshooting#apt-get update: connection failed]] ).&lt;br /&gt;
&lt;br /&gt;
After the first boot of the system, packages and the configuration tool itself '''must be updated'''. Follow the [[SatNOGS Client Setup#Updating SatNOGS Client Software|Updating]] instruction found below.&lt;br /&gt;
&lt;br /&gt;
To configure a '''SatNOGS Client''' system:&lt;br /&gt;
&lt;br /&gt;
#SSH into the system and run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;; this will bring up the configuration menu&lt;br /&gt;
#Set '''all''' options in '''Basic Configuration''' (see below)&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt; and the Raspberry Pi will configure itself; this may take some time&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Back&amp;lt;/code&amp;gt; to exit&lt;br /&gt;
{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website, please don’t share your api key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log in to [https://network.satnogs.org network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page right under the user icon click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware.&lt;br /&gt;
Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Advanced Setup==&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
NOTE: To get your station online, you need to set SATNOGS_NETWORK_API_URL to https://network.satnogs.org/api/&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Obsolete Setup Variables==&lt;br /&gt;
The following options were available in previous versions of the SatNOGS client system and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; (available again)&lt;br /&gt;
|gr-satnogs: The PPM correction [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt; (available again)&lt;br /&gt;
|gr-satnogs: SDR device specific arguments [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
Note: This variable was re-purposed to set soapy device and stream arguments, so it's not obsolete anymore.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updating SatNOGS Client Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}&lt;br /&gt;
To update SatNOGS software, including the configuration tool itself:&lt;br /&gt;
&lt;br /&gt;
#SSH into the system and (re-)run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;; this will bring up the configuration menu&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt; to update the configuration tool and all distribution packages to the latest&lt;br /&gt;
#If you are prompted for a reboot during the upgrade, once the upgrade is finished, select &amp;lt;code&amp;gt;Reboot&amp;lt;/code&amp;gt;, SSH back into the system and re-run &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; to continue to the next step&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt; and the Raspberry Pi will update itself; this may take some time&lt;br /&gt;
#Before exit, check at the top that you have the latest satnogs-client and gr-satnogs versions&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Back&amp;lt;/code&amp;gt; to exit&lt;br /&gt;
&lt;br /&gt;
{{Message|You can check your current version of client (and other client software) at the top of window after running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;; alternatively you can generate the support report by going at &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from Debian 'stretch' or 'buster', to 'bullseye'===&lt;br /&gt;
Debian &amp;lt;code&amp;gt;stretch&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;buster&amp;lt;/code&amp;gt; are no longer supported. If you have already installed an older version of Debian or Raspbian SatNOGS image based on &amp;lt;code&amp;gt;buster&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;stretch&amp;lt;/code&amp;gt; (releases &amp;lt;= [https://gitlab.com/librespacefoundation/satnogs/satnogs-pi-gen/-/tags/2020122700 2020122700]), you must upgrade to &amp;lt;code&amp;gt;bullseye&amp;lt;/code&amp;gt; otherwise it will be impossible to receive updates or upgrades in the future.&lt;br /&gt;
====Reflashing and reinstalling====&lt;br /&gt;
The recommended method to upgrade to &amp;lt;code&amp;gt;bullseye&amp;lt;/code&amp;gt; is reflashing the latest Raspbian SatNOGS image (or reinstalling latest Debian). Follow [[Raspberry Pi|Raspberry Pi]] installation instructions and reinstall from scratch.&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To see if satnogs-client has started successfully, check the logs with &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt;:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ systemctl status satnogs-client&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
● satnogs-client.service - SatNOGS client&lt;br /&gt;
   Loaded: loaded (/etc/systemd/system/satnogs-client.service; enabled; vendor preset: enabled)&lt;br /&gt;
   Active: active (running) since Wed 2020-03-04 19:30:56 GMT; 6min ago&lt;br /&gt;
 Main PID: 6309 (satnogs-client)&lt;br /&gt;
    Tasks: 11 (limit: 2200)&lt;br /&gt;
   Memory: 37.9M&lt;br /&gt;
   CGroup: /system.slice/satnogs-client.service&lt;br /&gt;
           └─6309 /var/lib/satnogs/bin/python3 /var/lib/satnogs/bin/satnogs-client&lt;br /&gt;
&lt;br /&gt;
Mar 04 19:30:56 raspberrypi systemd[1]: Started SatNOGS client.&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/etc/ansible/host_vars/localhost&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card) or if you want to downgrade from the experimental software back to the stable releases, you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file at &amp;lt;code&amp;gt;/etc/ansible/host_vars/localhost&amp;lt;/code&amp;gt;&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; and select &amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt; to update the tool itself and then select &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Client Ansible]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3924</id>
		<title>SatNOGS Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3924"/>
		<updated>2025-01-11T12:55:46Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Satnogs-setup.png|thumb]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for provisioning and configuring '''SatNOGS'''. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]]. Instruction on this page assumes that you have successfully established console access on the host machine intended to run SatNOGS.&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
The &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; configuration tool is automatically executed during [[Raspberry Pi#Installation|the installation process]]. However, if needed, you can reconfigure the software at any time by running it again:&lt;br /&gt;
 $ satnogs-setup&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
{{Warning| Configuring SatNOGS can potentially interrupt a running observation!}}The configuration is divided into &amp;lt;code&amp;gt;Basic&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Advanced&amp;lt;/code&amp;gt; submenus. The '''Basic Configuration''' includes the essential settings required to get the station up and running, while further optimization or customization can be done through the '''Advanced Configuration'''. The &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt; menu item displays the current configuration in a single view, and the &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; option deletes all existing configurations. Lastly, the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; menu item provides information about the tool itself.&lt;br /&gt;
Once the configuration is completed, exiting the utility will apply the changes. Please note that this process may take several minutes, depending on the modifications made.{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website. Please don’t share your API key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log into [https://network.satnogs.org/ network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page, right under the user icon, click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
===Advanced Setup===&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
====Radio====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware. Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Rotator====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Artifacts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Scripts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Hamlib====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Development====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Debug====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Obsolete Settings===&lt;br /&gt;
The following options were available in previous versions of SatNOGS and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==Updating SatNOGS Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}The software is updated automatically when &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; is executed.{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from legacy software===&lt;br /&gt;
To update from the legacy SatNOGS software execute the normal installation command:&lt;br /&gt;
 $ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&lt;br /&gt;
The command will clean-up the old software, install the new one and then bring up the SatNOGS configuraion menu-driver utility.&lt;br /&gt;
&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To verify that the software is set up correctly, execute:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker ps -f 'name=^satnogs_' --format &amp;quot;table {{.Names}}\t{{.Status}}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
NAMES                    STATUS&lt;br /&gt;
satnogs_satnogs-client   Up 31 seconds&lt;br /&gt;
satnogs_rigctld          Up 31 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/var/lib/docker-bindmounts/ansible/etc/ansible/host_vars/ansible&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card), you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Execute &amp;lt;code&amp;gt;$ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Ansible]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=MediaWiki:Sidebar&amp;diff=3923</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=MediaWiki:Sidebar&amp;diff=3923"/>
		<updated>2025-01-11T12:55:16Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Build&lt;br /&gt;
** Build|[Station] Build a Ground Station&lt;br /&gt;
** Raspberry_Pi|[Station] Install a Raspberry Pi&lt;br /&gt;
** SatNOGS_Setup|[Station] Configure/Update your Station&lt;br /&gt;
** Omnidirectional_Station_How_To|[Station] Omnidirectional Howto&lt;br /&gt;
** Radio|SDR Support&lt;br /&gt;
** Troubleshooting|Client Troubleshooting&lt;br /&gt;
* Operate&lt;br /&gt;
** Satellite_Operator_Guide|Add your Mission&lt;br /&gt;
** Operation|Managing Observations&lt;br /&gt;
** Decode_Telemetry_and_Packets|Decode Telemetry and Packets&lt;br /&gt;
** Telemetry_Dashboards|Telemetry Dashboards&lt;br /&gt;
** :Category:RF Modes|RF Modes&lt;br /&gt;
* Contribute&lt;br /&gt;
** Get_Started|Get Started&lt;br /&gt;
** SatNOGS_DB|Crowd-Sourced Satellite Info&lt;br /&gt;
** Software_contribution|Software Contribution&lt;br /&gt;
** Server_Development_Environment|Server Development Environment&lt;br /&gt;
** Hacking_the_GNURadio_Module_'gr-satnogs'|SatNOGS GNURadio Module&lt;br /&gt;
** SatNOGS_Client_Development|SatNOGS Client Development&lt;br /&gt;
** Adding_a_new_data_decoder|Adding a new data decoder&lt;br /&gt;
** Academic_Papers|Academic Papers citing SatNOGS&lt;br /&gt;
** Provide_documentation|Provide Documentation&lt;br /&gt;
** SatNOGS_Operations_Manual|SatNOGS Operations Manual&lt;br /&gt;
* Learn&lt;br /&gt;
** Rotators|Rotators&lt;br /&gt;
** Antennas|Antennas&lt;br /&gt;
** Understanding_satnogs-flowgraphs| Understanding SatNOGS Flowgraphs&lt;br /&gt;
** SDR_Setup| SatNOGS SDR setup&lt;br /&gt;
** Spectrum_Management | Spectrum Management and Frequency Coordination&lt;br /&gt;
** Glossary|Glossary&lt;br /&gt;
* Contact&lt;br /&gt;
** Get_In_Touch|Get In Touch&lt;br /&gt;
** https://community.libre.space|Forums&lt;br /&gt;
** Press|Press&lt;br /&gt;
* Links&lt;br /&gt;
** https://db.satnogs.org|SatNOGS DB&lt;br /&gt;
** https://network.satnogs.org|SatNOGS Network&lt;br /&gt;
** https://dashboard.satnogs.org|SatNOGS Dashboard&lt;br /&gt;
** https://community.libre.space|SatNOGS Forums&lt;br /&gt;
** https://libre.space|Libre Space Foundation&lt;br /&gt;
** https://status.libre.space|System Status&lt;br /&gt;
* SEARCH&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3922</id>
		<title>SatNOGS Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3922"/>
		<updated>2025-01-11T12:46:28Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Fix link to SatNOGS Ansible&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for provisioning and configuring '''SatNOGS'''. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]]. Instruction on this page assumes that you have successfully established console access on the host machine intended to run SatNOGS.&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
The &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; configuration tool is automatically executed during [[Raspberry Pi#Installation|the installation process]]. However, if needed, you can reconfigure the software at any time by running it again:&lt;br /&gt;
 $ satnogs-setup&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
[[File:Satnogs-setup.png|thumb]]&lt;br /&gt;
{{Warning| Configuring SatNOGS can potentially interrupt a running observation!}}The configuration is divided into &amp;lt;code&amp;gt;Basic&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Advanced&amp;lt;/code&amp;gt; submenus. The '''Basic Configuration''' includes the essential settings required to get the station up and running, while further optimization or customization can be done through the '''Advanced Configuration'''. The &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt; menu item displays the current configuration in a single view, and the &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; option deletes all existing configurations. Lastly, the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; menu item provides information about the tool itself.&lt;br /&gt;
Once the configuration is completed, exiting the utility will apply the changes. Please note that this process may take several minutes, depending on the modifications made.{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website. Please don’t share your API key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log into [https://network.satnogs.org/ network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page, right under the user icon, click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
===Advanced Setup===&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
====Radio====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware. Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Rotator====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Artifacts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Scripts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Hamlib====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Development====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Debug====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Obsolete Settings===&lt;br /&gt;
The following options were available in previous versions of SatNOGS and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==Updating SatNOGS Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}The software is updated automatically when &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; is executed.{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from legacy software===&lt;br /&gt;
To update from the legacy SatNOGS software execute the normal installation command:&lt;br /&gt;
 $ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&lt;br /&gt;
The command will clean-up the old software, install the new one and then bring up the SatNOGS configuraion menu-driver utility.&lt;br /&gt;
&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To verify that the software is set up correctly, execute:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker ps -f 'name=^satnogs_' --format &amp;quot;table {{.Names}}\t{{.Status}}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
NAMES                    STATUS&lt;br /&gt;
satnogs_satnogs-client   Up 31 seconds&lt;br /&gt;
satnogs_rigctld          Up 31 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/var/lib/docker-bindmounts/ansible/etc/ansible/host_vars/ansible&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card), you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Execute &amp;lt;code&amp;gt;$ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Ansible]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Client_Ansible&amp;diff=3921</id>
		<title>SatNOGS Client Ansible</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Client_Ansible&amp;diff=3921"/>
		<updated>2025-01-11T12:45:35Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Acinonyx moved page SatNOGS Client Ansible to SatNOGS Ansible: Project rename&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[SatNOGS Ansible]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Ansible&amp;diff=3920</id>
		<title>SatNOGS Ansible</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Ansible&amp;diff=3920"/>
		<updated>2025-01-11T12:45:34Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Acinonyx moved page SatNOGS Client Ansible to SatNOGS Ansible: Project rename&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Outdated}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
{{Warning|Follow these instructions only if you are provisioning SatNOGS to a host from another host or are installing on the same host. }}&lt;br /&gt;
&lt;br /&gt;
'''SatNOGS Ansible''' makes the actual provisioning of SatNOGS software. It is called, under the hood, when applying the configuration using [[SatNOGS Setup|SatNOGS Setup utility]]. Supported distributions and releases can be found in the [https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible#supported-distributions-and-releases README file of the project].&lt;br /&gt;
&lt;br /&gt;
==Raspbian==&lt;br /&gt;
&lt;br /&gt;
For Raspberry Pi, which is the reference platform for SatNOGS, a custom Raspbian image with '''SatNOGS Ansible''' pre-installed is available. Installation instructions are given in the [[Raspberry_Pi| Raspberry Pi Setup Guide]].&lt;br /&gt;
&lt;br /&gt;
==Debian==&lt;br /&gt;
&lt;br /&gt;
These sections contain generic instructions for installing SatNOGS Client on a Debian system.&lt;br /&gt;
&lt;br /&gt;
==Other distributions==&lt;br /&gt;
&lt;br /&gt;
Other distributions are not supported by '''SatNOGS Ansible''', as the pre-built packages won't be compatible. Thus, while derived from Debian, '''SatNOGS Ansible''' is known to break for Ubuntu and Linux Mint. If you are an experienced user, a manual installation of all components could be possible.&lt;br /&gt;
&lt;br /&gt;
==Installation Guide==&lt;br /&gt;
===Prerequisites===&lt;br /&gt;
&lt;br /&gt;
*A target Debian system. To install Debian please follow the [https://www.debian.org/releases/stretch/installmanual Debian Installation Guide] and chose the net installer if you want to run a headless server. The target system can be the host itself.&lt;br /&gt;
*A user (referenced later as ''youruser'') which is member of 'sudo' group exists on the target system. Don't use the username `satnogs` when you install the Debian system.&lt;br /&gt;
*An SSH server running on the target system.&lt;br /&gt;
*Install installation dependencies: `sudo apt-get install ansible git sshpass python-setuptools`&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
&lt;br /&gt;
On the host system run the following commands:&lt;br /&gt;
 $ git clone &amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client-ansible.git&amp;lt;/nowiki&amp;gt;    # Clone SatNOGS Client Ansible repository&lt;br /&gt;
 $ cd satnogs-client-ansible                                    # Change to cloned repository directory&lt;br /&gt;
 $ git checkout stable                                          # Optionally, check out stable (Debian Buster 10) branch&lt;br /&gt;
 $ cp -r production.dist production                             # Copy dist configuration&lt;br /&gt;
 $ vi production/inventory/hosts                                # Update file with your own target host e.g. 127.0.0.1, user and SSH password&lt;br /&gt;
 $ ssh youruser@yourtargetsystem true                           # Test SSH connection to target system&lt;br /&gt;
 $ ansible-playbook -i production/inventory/hosts -K site.yml   # Run Ansible playbook&lt;br /&gt;
 $ ssh -t youruser@yourtargetsystem sudo satnogs-setup          # Setup SatNOGS client (see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Next Steps===&lt;br /&gt;
&lt;br /&gt;
Follow [[SatNOGS_Client_Setup|SatNOGS Client Setup]] to configure your system and SatNOGS station.&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Ansible&amp;diff=3919</id>
		<title>SatNOGS Ansible</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Ansible&amp;diff=3919"/>
		<updated>2025-01-11T12:45:08Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Marked as outdated.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Outdated}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
{{Warning|Follow these instructions only if you are provisioning SatNOGS to a host from another host or are installing on the same host. }}&lt;br /&gt;
&lt;br /&gt;
'''SatNOGS Ansible''' makes the actual provisioning of SatNOGS software. It is called, under the hood, when applying the configuration using [[SatNOGS Setup|SatNOGS Setup utility]]. Supported distributions and releases can be found in the [https://gitlab.com/librespacefoundation/satnogs/satnogs-ansible#supported-distributions-and-releases README file of the project].&lt;br /&gt;
&lt;br /&gt;
==Raspbian==&lt;br /&gt;
&lt;br /&gt;
For Raspberry Pi, which is the reference platform for SatNOGS, a custom Raspbian image with '''SatNOGS Ansible''' pre-installed is available. Installation instructions are given in the [[Raspberry_Pi| Raspberry Pi Setup Guide]].&lt;br /&gt;
&lt;br /&gt;
==Debian==&lt;br /&gt;
&lt;br /&gt;
These sections contain generic instructions for installing SatNOGS Client on a Debian system.&lt;br /&gt;
&lt;br /&gt;
==Other distributions==&lt;br /&gt;
&lt;br /&gt;
Other distributions are not supported by '''SatNOGS Ansible''', as the pre-built packages won't be compatible. Thus, while derived from Debian, '''SatNOGS Ansible''' is known to break for Ubuntu and Linux Mint. If you are an experienced user, a manual installation of all components could be possible.&lt;br /&gt;
&lt;br /&gt;
==Installation Guide==&lt;br /&gt;
===Prerequisites===&lt;br /&gt;
&lt;br /&gt;
*A target Debian system. To install Debian please follow the [https://www.debian.org/releases/stretch/installmanual Debian Installation Guide] and chose the net installer if you want to run a headless server. The target system can be the host itself.&lt;br /&gt;
*A user (referenced later as ''youruser'') which is member of 'sudo' group exists on the target system. Don't use the username `satnogs` when you install the Debian system.&lt;br /&gt;
*An SSH server running on the target system.&lt;br /&gt;
*Install installation dependencies: `sudo apt-get install ansible git sshpass python-setuptools`&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
&lt;br /&gt;
On the host system run the following commands:&lt;br /&gt;
 $ git clone &amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client-ansible.git&amp;lt;/nowiki&amp;gt;    # Clone SatNOGS Client Ansible repository&lt;br /&gt;
 $ cd satnogs-client-ansible                                    # Change to cloned repository directory&lt;br /&gt;
 $ git checkout stable                                          # Optionally, check out stable (Debian Buster 10) branch&lt;br /&gt;
 $ cp -r production.dist production                             # Copy dist configuration&lt;br /&gt;
 $ vi production/inventory/hosts                                # Update file with your own target host e.g. 127.0.0.1, user and SSH password&lt;br /&gt;
 $ ssh youruser@yourtargetsystem true                           # Test SSH connection to target system&lt;br /&gt;
 $ ansible-playbook -i production/inventory/hosts -K site.yml   # Run Ansible playbook&lt;br /&gt;
 $ ssh -t youruser@yourtargetsystem sudo satnogs-setup          # Setup SatNOGS client (see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Next Steps===&lt;br /&gt;
&lt;br /&gt;
Follow [[SatNOGS_Client_Setup|SatNOGS Client Setup]] to configure your system and SatNOGS station.&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3918</id>
		<title>SatNOGS Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3918"/>
		<updated>2025-01-11T12:38:34Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Fix headings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for provisioning and configuring '''SatNOGS'''. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]]. Instruction on this page assumes that you have successfully established console access on the host machine intended to run SatNOGS.&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
The &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; configuration tool is automatically executed during [[Raspberry Pi#Installation|the installation process]]. However, if needed, you can reconfigure the software at any time by running it again:&lt;br /&gt;
 $ satnogs-setup&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
[[File:Satnogs-setup.png|thumb]]&lt;br /&gt;
{{Warning| Configuring SatNOGS can potentially interrupt a running observation!}}The configuration is divided into &amp;lt;code&amp;gt;Basic&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Advanced&amp;lt;/code&amp;gt; submenus. The '''Basic Configuration''' includes the essential settings required to get the station up and running, while further optimization or customization can be done through the '''Advanced Configuration'''. The &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt; menu item displays the current configuration in a single view, and the &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; option deletes all existing configurations. Lastly, the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; menu item provides information about the tool itself.&lt;br /&gt;
Once the configuration is completed, exiting the utility will apply the changes. Please note that this process may take several minutes, depending on the modifications made.{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website. Please don’t share your API key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log into [https://network.satnogs.org/ network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page, right under the user icon, click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
===Advanced Setup===&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
====Radio====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware. Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Rotator====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Artifacts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Scripts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Hamlib====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Development====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Debug====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Obsolete Settings===&lt;br /&gt;
The following options were available in previous versions of SatNOGS and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==Updating SatNOGS Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}The software is updated automatically when &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; is executed.{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from legacy software===&lt;br /&gt;
To update from the legacy SatNOGS software execute the normal installation command:&lt;br /&gt;
 $ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&lt;br /&gt;
The command will clean-up the old software, install the new one and then bring up the SatNOGS configuraion menu-driver utility.&lt;br /&gt;
&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To verify that the software is set up correctly, execute:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker ps -f 'name=^satnogs_' --format &amp;quot;table {{.Names}}\t{{.Status}}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
NAMES                    STATUS&lt;br /&gt;
satnogs_satnogs-client   Up 31 seconds&lt;br /&gt;
satnogs_rigctld          Up 31 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/var/lib/docker-bindmounts/ansible/etc/ansible/host_vars/ansible&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card), you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Execute &amp;lt;code&amp;gt;$ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Client Ansible]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3917</id>
		<title>SatNOGS Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3917"/>
		<updated>2025-01-11T12:37:18Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Promote heading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for provisioning and configuring '''SatNOGS'''. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]]. Instruction on this page assumes that you have successfully established console access on the host machine intended to run SatNOGS.&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
The &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; configuration tool is automatically executed during [[Raspberry Pi#Installation|the installation process]]. However, if needed, you can reconfigure the software at any time by running it again:&lt;br /&gt;
 $ satnogs-setup&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
[[File:Satnogs-setup.png|thumb]]&lt;br /&gt;
{{Warning| Configuring SatNOGS can potentially interrupt a running observation!}}The configuration is divided into &amp;lt;code&amp;gt;Basic&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Advanced&amp;lt;/code&amp;gt; submenus. The '''Basic Configuration''' includes the essential settings required to get the station up and running, while further optimization or customization can be done through the '''Advanced Configuration'''. The &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt; menu item displays the current configuration in a single view, and the &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; option deletes all existing configurations. Lastly, the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; menu item provides information about the tool itself.&lt;br /&gt;
Once the configuration is completed, exiting the utility will apply the changes. Please note that this process may take several minutes, depending on the modifications made.{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website. Please don’t share your API key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log into [https://network.satnogs.org/ network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page, right under the user icon, click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
==Advanced Setup==&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
===Radio===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware. Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Rotator===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Artifacts===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Scripts===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Hamlib===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Development===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Debug===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Obsolete Settings==&lt;br /&gt;
The following options were available in previous versions of SatNOGS and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==Updating SatNOGS Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}The software is updated automatically when &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; is executed.{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from legacy software===&lt;br /&gt;
To update from the legacy SatNOGS software execute the normal installation command:&lt;br /&gt;
 $ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&lt;br /&gt;
The command will clean-up the old software, install the new one and then bring up the SatNOGS configuraion menu-driver utility.&lt;br /&gt;
&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To verify that the software is set up correctly, execute:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker ps -f 'name=^satnogs_' --format &amp;quot;table {{.Names}}\t{{.Status}}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
NAMES                    STATUS&lt;br /&gt;
satnogs_satnogs-client   Up 31 seconds&lt;br /&gt;
satnogs_rigctld          Up 31 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/var/lib/docker-bindmounts/ansible/etc/ansible/host_vars/ansible&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card), you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Execute &amp;lt;code&amp;gt;$ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Client Ansible]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3916</id>
		<title>SatNOGS Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3916"/>
		<updated>2025-01-11T12:36:39Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Update available variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for provisioning and configuring '''SatNOGS'''. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]]. Instruction on this page assumes that you have successfully established console access on the host machine intended to run SatNOGS.&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
The &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; configuration tool is automatically executed during [[Raspberry Pi#Installation|the installation process]]. However, if needed, you can reconfigure the software at any time by running it again:&lt;br /&gt;
 $ satnogs-setup&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
[[File:Satnogs-setup.png|thumb]]&lt;br /&gt;
{{Warning| Configuring SatNOGS can potentially interrupt a running observation!}}The configuration is divided into &amp;lt;code&amp;gt;Basic&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Advanced&amp;lt;/code&amp;gt; submenus. The '''Basic Configuration''' includes the essential settings required to get the station up and running, while further optimization or customization can be done through the '''Advanced Configuration'''. The &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt; menu item displays the current configuration in a single view, and the &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; option deletes all existing configurations. Lastly, the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; menu item provides information about the tool itself.&lt;br /&gt;
Once the configuration is completed, exiting the utility will apply the changes. Please note that this process may take several minutes, depending on the modifications made.{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website. Please don’t share your API key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log into [https://network.satnogs.org/ network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page, right under the user icon, click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
==Advanced Setup==&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
=== Radio ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware. Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rotator ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Artifacts ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hamlib ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Development ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Debug ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Obsolete Variables ===&lt;br /&gt;
The following options were available in previous versions of SatNOGS and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==Updating SatNOGS Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}The software is updated automatically when &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; is executed.{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from legacy software===&lt;br /&gt;
To update from the legacy SatNOGS software execute the normal installation command:&lt;br /&gt;
 $ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&lt;br /&gt;
The command will clean-up the old software, install the new one and then bring up the SatNOGS configuraion menu-driver utility.&lt;br /&gt;
&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To verify that the software is set up correctly, execute:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker ps -f 'name=^satnogs_' --format &amp;quot;table {{.Names}}\t{{.Status}}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
NAMES                    STATUS&lt;br /&gt;
satnogs_satnogs-client   Up 31 seconds&lt;br /&gt;
satnogs_rigctld          Up 31 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/var/lib/docker-bindmounts/ansible/etc/ansible/host_vars/ansible&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card), you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Execute &amp;lt;code&amp;gt;$ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Client Ansible]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Client_Development&amp;diff=3915</id>
		<title>SatNOGS Client Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Client_Development&amp;diff=3915"/>
		<updated>2025-01-11T12:09:13Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Outdated}}&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
This page describes the setup of a development environment for the&lt;br /&gt;
SatNOGS ground station reference setup based on [https://gitlab.com/librespacefoundation/satnogs/satnogs-client-ansible satnogs-client-ansible].&lt;br /&gt;
It is assumed you have already setup your ground station as explained in [[SatNOGS_Client_Setup]].&lt;br /&gt;
&lt;br /&gt;
==satnogs-flowgraphs==&lt;br /&gt;
For each Satellite Transmitter Mode there is a specific flowgraph in this package. There are generic (e.g. CW) and satellite-specific flowgraphs. The Satellite-Transmitter-Mode-to-flowgraph mapping is defined in satnogs-client. This package is using gr-soapy for SDR hardware support and gr-satnogs for required GNURadio blocks.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==gr-satnogs==&lt;br /&gt;
&lt;br /&gt;
The gnuradio Out-Of-Tree module [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs gr-satnogs] provides blocks required by satnogs-flowgraphs. The gitlab-CI automatically builds the package in docker containers, configured by the [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/blob/master/.gitlab-ci.yml .gitlab-ci.yml]. The built packages for releases are pushed to the librespace:satnogs package repository, the built package for the latest development version on master is pushed to the librespace:satnogs-unstable package repository.&lt;br /&gt;
&lt;br /&gt;
To use a modified gr-satnogs module on a SatNOGS ground station, it’s recommended to clone your fork on your station, build the patched gr-satnogs packages and install it.&lt;br /&gt;
&lt;br /&gt;
To install the latest development version of gr-satnogs on your station, set &amp;lt;code&amp;gt;experimental=True&amp;lt;/code&amp;gt; or configure  in &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Setting up a gr-satnogs development environment===&lt;br /&gt;
&lt;br /&gt;
OUTDATED since [https://gitlab.com/librespacefoundation/satnogs/satnogs-client-ansible/-/commit/336a3206fbeec8e1a5257ce375578f31a92988e4 satnogs-client-ansible@336a320]!&lt;br /&gt;
&lt;br /&gt;
*Fork gr-satnogs&lt;br /&gt;
*Fork gr-satnogs-package&lt;br /&gt;
*Adjust the repository url of gr-satnogs in [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs-package/blob/master/debian/debian/rules#L22 gr-satnogs-package/debian/debian/rules#L22]&lt;br /&gt;
*Adjust the repository url in the version detection in [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs-package/blob/master/.gitlab-ci.yml#L13 gr-satnogs-package/.gitlab-ci.yml#L13] ,[https://gitlab.com/librespacefoundation/satnogs/gr-satnogs-package/blob/master/.gitlab-ci.yml#L30 #L30] ,[https://gitlab.com/librespacefoundation/satnogs/gr-satnogs-package/blob/master/.gitlab-ci.yml#L47 #L47]&lt;br /&gt;
*Wait for the gitlab-CI to build your first version of gr-satnogs-package (~45 min)&lt;br /&gt;
*Install your freshly built gr-satnogs-package by pointing the &amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_PACKAGE&amp;lt;/code&amp;gt; in satnogs-setup to the built artifact/debian package of your architecture (e.g. &amp;lt;code&amp;gt;armhf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;amd64&amp;lt;/code&amp;gt;). The build artifacts are available in your gr-satnogs-package fork by clicking CI/CD, selecting there the latest pipeline, the latest build-job and then in the right column &amp;lt;code&amp;gt;Browse&amp;lt;/code&amp;gt;, path &amp;lt;code&amp;gt;build/debian/output/$your_arch/gr-satnogs_$your_arch.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==satnogs-client==&lt;br /&gt;
The [https://gitlab.com/librespacefoundation/satnogs/satnogs-client satnogs-client] is a python package, and gets installed by satnogs-setup in a python virtual environment using [https://pip.pypa.io/ pip]. The development is done in the  &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
Please note that satnogs-client and satnogs-flowgraphs must be installed in compatible versions, due to (frequent) changes in the arguments available in the demodulation scripts, see [[Compatibility]].&lt;br /&gt;
===Setting up a satnogs-client development environment===&lt;br /&gt;
&lt;br /&gt;
#Fork [https://gitlab.com/librespacefoundation/satnogs/satnogs-client satnogs-client]&lt;br /&gt;
#Clone the repository on your development machine&lt;br /&gt;
#Create a new branch (e.g. station123) with your changes &amp;amp; push it&lt;br /&gt;
#Run satnogs-setup and change the value of &amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt; to point to your repository and branch as described in [[SatNOGS_Client_Setup#Advanced_Setup]]&lt;br /&gt;
#Hit &amp;quot;Apply&amp;quot; in satnogs-setup to finally install your satnogs-client version&lt;br /&gt;
#Profit.&lt;br /&gt;
&lt;br /&gt;
===Miscellaneous development notes===&lt;br /&gt;
&lt;br /&gt;
*[[How to bodge an immediate observation in for testing purposes]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Develop]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3914</id>
		<title>SatNOGS Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup&amp;diff=3914"/>
		<updated>2025-01-10T15:57:19Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Created page with &amp;quot;== Introduction == &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for provisioning and configuring '''SatNOGS'''. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for provisioning and configuring '''SatNOGS'''. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]]. Instruction on this page assumes that you have successfully established console access on the host machine intended to run SatNOGS.&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
The &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; configuration tool is automatically executed during [[Raspberry Pi#Installation|the installation process]]. However, if needed, you can reconfigure the software at any time by running it again:&lt;br /&gt;
 $ satnogs-setup&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
[[File:Satnogs-setup.png|thumb]]&lt;br /&gt;
{{Warning| Configuring SatNOGS can potentially interrupt a running observation!}}The configuration is divided into &amp;lt;code&amp;gt;Basic&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Advanced&amp;lt;/code&amp;gt; submenus. The '''Basic Configuration''' includes the essential settings required to get the station up and running, while further optimization or customization can be done through the '''Advanced Configuration'''. The &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt; menu item displays the current configuration in a single view, and the &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; option deletes all existing configurations. Lastly, the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; menu item provides information about the tool itself.&lt;br /&gt;
&lt;br /&gt;
Once the configuration is completed, exiting the utility will apply the changes. Please note that this process may take several minutes, depending on the modifications made.{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website. Please don’t share your API key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log into [https://network.satnogs.org/ network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page, right under the user icon, click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware. Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
==Advanced Setup==&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
==Obsolete Setup Variables==&lt;br /&gt;
The following options were available in previous versions of the SatNOGS client system and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; (available again)&lt;br /&gt;
|gr-satnogs: The PPM correction [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt; (available again)&lt;br /&gt;
|gr-satnogs: SDR device specific arguments [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
Note: This variable was re-purposed to set soapy device and stream arguments, so it's not obsolete anymore.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==Updating SatNOGS Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}The software is updated automatically when &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; is executed.{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from legacy software===&lt;br /&gt;
To update from the legacy SatNOGS software execute the normal installation command:&lt;br /&gt;
 $ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&lt;br /&gt;
The command will clean-up the old software, install the new one and then bring up the SatNOGS configuraion menu-driver utility.&lt;br /&gt;
&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To verify that the software is set up correctly, execute:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo docker ps -f 'name=^satnogs_' --format &amp;quot;table {{.Names}}\t{{.Status}}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
NAMES                    STATUS&lt;br /&gt;
satnogs_satnogs-client   Up 31 seconds&lt;br /&gt;
satnogs_rigctld          Up 31 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/var/lib/docker-bindmounts/ansible/etc/ansible/host_vars/ansible&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card), you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Execute &amp;lt;code&amp;gt;$ curl -sfL &amp;lt;nowiki&amp;gt;https://satno.gs/install&amp;lt;/nowiki&amp;gt; | sh -s --&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Client Ansible]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3913</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3913"/>
		<updated>2025-01-10T15:42:34Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:B3342fcc865731d69e0c9d7a8b1abb887185bc13 1 531x500.jpg|alt=Libre Space Foundation Raspberry Pi Case|thumb|Libre Space Foundation Raspberry Pi Case, [https://www.thingiverse.com/thing:3233687 on thingiverse]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi (version 3, 4 and 5) is the reference platform for SatNOGS (see our [[SatNOGS Client Ansible|Ansible guide]] to install SatNOGS on other Linux machines). &lt;br /&gt;
&lt;br /&gt;
{{Message|This page assumes you have an account and a ground station registered on either network.satnogs.org or network-dev.satnogs.org. Make note of your station ID and API Key.}}&lt;br /&gt;
&lt;br /&gt;
==Flashing==&lt;br /&gt;
Use the '''Raspberry Pi Imager''', as outlined in the [https://www.raspberrypi.com/documentation/computers/getting-started.html#raspberry-pi-imager Raspberry Pi OS flashing guidelines], and follow the steps provided there. Along with the official guide, be sure to take into account the instructions provided in the following subsections.  &lt;br /&gt;
&lt;br /&gt;
===OS selection===&lt;br /&gt;
To optimize resource usage and reduce unnecessary running services, choose the Raspberry Pi OS Lite image instead of the full Raspberry Pi OS image. During the OS selection process, navigate to the &amp;lt;code&amp;gt;Raspberry Pi OS (other)&amp;lt;/code&amp;gt; submenu and select &amp;lt;code&amp;gt;Raspberry Pi OS Lite (64-bit)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===OS customization===&lt;br /&gt;
At the very least, you need to:&lt;br /&gt;
&lt;br /&gt;
*Set username and password&lt;br /&gt;
*Set locale settings&lt;br /&gt;
**Time zone&lt;br /&gt;
**Keyboard layout&lt;br /&gt;
*Enable SSH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If connection to the internet is via Wi-Fi, make sure to '''Configure wireless LAN''' as well.&lt;br /&gt;
&lt;br /&gt;
To easily discover the Rapsberry Pi among other Rapsberry Pis in your network, '''set a unique hostname'''.&lt;br /&gt;
&lt;br /&gt;
==Getting console access==&lt;br /&gt;
You can log in the Raspberry Pi by connecting it to a keyboard and monitor or through network via an SSH connection.&lt;br /&gt;
&lt;br /&gt;
===Keyboard and monitor===&lt;br /&gt;
Once your Raspberry Pi is booted, log in with the username and password that you set during the flashing process.&lt;br /&gt;
&lt;br /&gt;
===Network===&lt;br /&gt;
If your network supports [[wikipedia:Zero-configuration_networking|&amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt;]], you can use the hostname of your Raspberry Pi and log in with SSH using the username and password that you set during the flashing process. Example:&lt;br /&gt;
 $ ssh pi@raspberrypi.local&lt;br /&gt;
If &amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt; is not supported then you must manually find the IP address of the Raspberry Pi (e.g. in your router management interface).&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
To install the SatNOGS software on the Raspberry Pi OS or any other supported OS you just log, and execute the following command:&lt;br /&gt;
 $ curl -sfL https://satno.gs/install | sh -s --&lt;br /&gt;
This command executes the '''SatNOGS Setup''' tool which will install all the necessary software and then bring up the SatNOGS configuration menu-driven utility.&lt;br /&gt;
&lt;br /&gt;
Follow [[SatNOGS Setup]] instructions to configure the system.&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3912</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3912"/>
		<updated>2025-01-10T15:42:11Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:B3342fcc865731d69e0c9d7a8b1abb887185bc13 1 531x500.jpg|alt=Libre Space Foundation Raspberry Pi Case|thumb|Libre Space Foundation Raspberry Pi Case, [https://www.thingiverse.com/thing:3233687 on thingiverse]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi (version 3, 4 and 5) is the reference platform for SatNOGS (see our [[SatNOGS Client Ansible|Ansible guide]] to install SatNOGS on other Linux machines). &lt;br /&gt;
&lt;br /&gt;
{{Message|This page assumes you have an account and a ground station registered on either network.satnogs.org or network-dev.satnogs.org. Make note of your station ID and API Key.}}&lt;br /&gt;
&lt;br /&gt;
==Flashing==&lt;br /&gt;
Use the '''Raspberry Pi Imager''', as outlined in the [https://www.raspberrypi.com/documentation/computers/getting-started.html#raspberry-pi-imager Raspberry Pi OS flashing guidelines], and follow the steps provided there. Along with the official guide, be sure to take into account the instructions provided in the following subsections.  &lt;br /&gt;
&lt;br /&gt;
===OS selection===&lt;br /&gt;
To optimize resource usage and reduce unnecessary running services, choose the Raspberry Pi OS Lite image instead of the full Raspberry Pi OS image. During the OS selection process, navigate to the &amp;lt;code&amp;gt;Raspberry Pi OS (other)&amp;lt;/code&amp;gt; submenu and select &amp;lt;code&amp;gt;Raspberry Pi OS Lite (64-bit)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===OS customization===&lt;br /&gt;
At the very least, you need to:&lt;br /&gt;
&lt;br /&gt;
*Set username and password&lt;br /&gt;
*Set locale settings&lt;br /&gt;
**Time zone&lt;br /&gt;
**Keyboard layout&lt;br /&gt;
*Enable SSH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If connection to the internet is via Wi-Fi, make sure to '''Configure wireless LAN''' as well.&lt;br /&gt;
&lt;br /&gt;
To easily discover the Rapsberry Pi among other Rapsberry Pis in your network, '''set a unique hostname'''.&lt;br /&gt;
&lt;br /&gt;
==Getting console access==&lt;br /&gt;
You can log in the Raspberry Pi by connecting it to a keyboard and monitor or through network via an SSH connection.&lt;br /&gt;
&lt;br /&gt;
===Keyboard and monitor===&lt;br /&gt;
Once your Raspberry Pi is booted, log in with the username and password that you set during the flashing process.&lt;br /&gt;
&lt;br /&gt;
===Network===&lt;br /&gt;
If your network supports [[wikipedia:Zero-configuration_networking|&amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt;]], you can use the hostname of your Raspberry Pi and log in with SSH using the username and password that you set during the flashing process. Example:&lt;br /&gt;
 $ ssh pi@raspberrypi.local&lt;br /&gt;
If &amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt; is not supported then you must manually find the IP address of the Raspberry Pi (e.g. in your router management interface).&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
To install the SatNOGS software on the Raspberry Pi OS or any other supported OS you just log, and execute the following command:&lt;br /&gt;
 $ curl -sfL https://satno.gs/install | sh -s --&lt;br /&gt;
This command executes the '''SatNOGS Setup''' tool which will install all the necessary software and then bring up the SatNOGS configuration menu-driven utility:&lt;br /&gt;
&lt;br /&gt;
Follow [[SatNOGS Setup]] instructions to configure the system.&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=File:Satnogs-setup.png&amp;diff=3911</id>
		<title>File:Satnogs-setup.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=File:Satnogs-setup.png&amp;diff=3911"/>
		<updated>2025-01-10T14:59:14Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;satnogs-setup&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3910</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3910"/>
		<updated>2025-01-10T14:41:35Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:B3342fcc865731d69e0c9d7a8b1abb887185bc13 1 531x500.jpg|alt=Libre Space Foundation Raspberry Pi Case|thumb|Libre Space Foundation Raspberry Pi Case, [https://www.thingiverse.com/thing:3233687 on thingiverse]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi (version 3, 4 and 5) is the reference platform for SatNOGS (see our [[SatNOGS Client Ansible|Ansible guide]] to install SatNOGS on other Linux machines). &lt;br /&gt;
&lt;br /&gt;
{{Message|This page assumes you have an account and a ground station registered on either network.satnogs.org or network-dev.satnogs.org. Make note of your station ID and API Key.}}&lt;br /&gt;
&lt;br /&gt;
==Flashing==&lt;br /&gt;
Use the '''Raspberry Pi Imager''', as outlined in the [https://www.raspberrypi.com/documentation/computers/getting-started.html#raspberry-pi-imager Raspberry Pi OS flashing guidelines], and follow the steps provided there. Along with the official guide, be sure to take into account the instructions provided in the following subsections.  &lt;br /&gt;
&lt;br /&gt;
===OS selection===&lt;br /&gt;
To optimize resource usage and reduce unnecessary running services, choose the Raspberry Pi OS Lite image instead of the full Raspberry Pi OS image. During the OS selection process, navigate to the &amp;lt;code&amp;gt;Raspberry Pi OS (other)&amp;lt;/code&amp;gt; submenu and select &amp;lt;code&amp;gt;Raspberry Pi OS Lite (64-bit)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===OS customization===&lt;br /&gt;
At the very least, you need to:&lt;br /&gt;
&lt;br /&gt;
*Set username and password&lt;br /&gt;
*Set locale settings&lt;br /&gt;
**Time zone&lt;br /&gt;
**Keyboard layout&lt;br /&gt;
*Enable SSH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If connection to the internet is via Wi-Fi, make sure to '''Configure wireless LAN''' as well.&lt;br /&gt;
&lt;br /&gt;
To easily discover the Rapsberry Pi among other Rapsberry Pis in your network, '''set a unique hostname'''.&lt;br /&gt;
&lt;br /&gt;
==Getting console access==&lt;br /&gt;
You can log in the Raspberry Pi by connecting it to a keyboard and monitor or through network via an SSH connection.&lt;br /&gt;
&lt;br /&gt;
===Keyboard and monitor===&lt;br /&gt;
Once your Raspberry Pi is booted, log in with the username and password that you set during the flashing process.&lt;br /&gt;
&lt;br /&gt;
===Network===&lt;br /&gt;
If your network supports [[wikipedia:Zero-configuration_networking|&amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt;]], you can use the hostname of your Raspberry Pi and log in with SSH using the username and password that you set during the flashing process. Example:&lt;br /&gt;
 $ ssh pi@raspberrypi.local&lt;br /&gt;
If &amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt; is not supported then you must manually find the IP address of the Raspberry Pi (e.g. in your router management interface).&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
To install the SatNOGS software on the Raspberry Pi OS or any other supported OS you just log, and execute the following command:&lt;br /&gt;
 $ curl -sfL https://satno.gs/install | sh -s --&lt;br /&gt;
This command will install all the necessary software and then bring up the '''SatNOGS Setup''' configuration tool:&lt;br /&gt;
&lt;br /&gt;
Follow [[SatNOGS Setup]] instructions to configure the system.&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3909</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3909"/>
		<updated>2025-01-10T14:27:11Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Adapt documentation based on new software stack&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:B3342fcc865731d69e0c9d7a8b1abb887185bc13 1 531x500.jpg|alt=Libre Space Foundation Raspberry Pi Case|thumb|Libre Space Foundation Raspberry Pi Case, [https://www.thingiverse.com/thing:3233687 on thingiverse]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi (version 3, 4 and 5) is the reference platform for SatNOGS (see our [[SatNOGS Client Ansible|Ansible guide]] to install SatNOGS on other Linux machines). &lt;br /&gt;
&lt;br /&gt;
{{Message|This page assumes you have an account and a ground station registered on either network.satnogs.org or network-dev.satnogs.org. Make note of your station ID and API Key.}}&lt;br /&gt;
&lt;br /&gt;
==Flashing==&lt;br /&gt;
Use the '''Raspberry Pi Imager''', as outlined in the [https://www.raspberrypi.com/documentation/computers/getting-started.html#raspberry-pi-imager Raspberry Pi OS flashing guidelines], and follow the steps provided there. Along with the official guide, be sure to take into account the instructions provided in the following subsections.  &lt;br /&gt;
&lt;br /&gt;
=== OS selection ===&lt;br /&gt;
To optimize resource usage and reduce unnecessary running services, choose the Raspberry Pi OS Lite image instead of the full Raspberry Pi OS image. During the OS selection process, navigate to the &amp;lt;code&amp;gt;Raspberry Pi OS (other)&amp;lt;/code&amp;gt; submenu and select &amp;lt;code&amp;gt;Raspberry Pi OS Lite (64-bit)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== OS customization ===&lt;br /&gt;
At the very least, you need to:&lt;br /&gt;
&lt;br /&gt;
* Set username and password&lt;br /&gt;
* Set locale settings&lt;br /&gt;
** Time zone&lt;br /&gt;
** Keyboard layout&lt;br /&gt;
* Enable SSH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If connection to the internet is via Wi-Fi, make sure to '''Configure wireless LAN''' as well.&lt;br /&gt;
&lt;br /&gt;
To easily discover the Rapsberry Pi among other Rapsberry Pis in your network, '''set a unique hostname'''.&lt;br /&gt;
&lt;br /&gt;
==Getting console access==&lt;br /&gt;
You can log in the Raspberry Pi by connecting it to a keyboard and monitor or through network via an SSH connection.&lt;br /&gt;
&lt;br /&gt;
===Keyboard and monitor===&lt;br /&gt;
Once your Raspberry Pi is booted, log in with the username and password that you set during the flashing process.&lt;br /&gt;
&lt;br /&gt;
===Network===&lt;br /&gt;
If your network supports [[wikipedia:Zero-configuration_networking|&amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt;]], you can use the hostname of your Raspberry Pi and log in with SSH using the username and password that you set during the flashing process. Example:&lt;br /&gt;
 $ ssh pi@raspberrypi.local&lt;br /&gt;
If &amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt; is not supported then you must manually find the IP address of the Raspberry Pi (e.g. in your router management interface).&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
To install the SatNOGS software on the Raspberry Pi OS you just logged into, execute the following command:&lt;br /&gt;
 $ curl -sfL https://satno.gs/install | sh -s --&lt;br /&gt;
This command will install all the necessary software and then bring up the '''SatNOGS Setup''' configuration tool:&lt;br /&gt;
&lt;br /&gt;
Follow [[SatNOGS Setup]] instructions to configure the system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Raspberry_Pi_Legacy&amp;diff=3908</id>
		<title>Raspberry Pi Legacy</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Raspberry_Pi_Legacy&amp;diff=3908"/>
		<updated>2025-01-10T13:34:44Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Created page with &amp;quot;File:B3342fcc865731d69e0c9d7a8b1abb887185bc13 1 531x500.jpg|alt=Libre Space Foundation Raspberry Pi Case|thumb|Libre Space Foundation Raspberry Pi Case, [https://www.thingiv...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:B3342fcc865731d69e0c9d7a8b1abb887185bc13 1 531x500.jpg|alt=Libre Space Foundation Raspberry Pi Case|thumb|Libre Space Foundation Raspberry Pi Case, [https://www.thingiverse.com/thing:3233687 on thingiverse]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi (version 3 and 4) is the reference platform for SatNOGS (see our [[SatNOGS Client Ansible|Ansible guide]] to install SatNOGS on other Linux machines). You can try using various distributions for this (eg. Debian/Armbian, Arch, Fedora), but the one we suggest is our custom image based on latest Raspbian.&lt;br /&gt;
&lt;br /&gt;
{{Message|This page assumes you have an account and a ground station registered on either network.satnogs.org or network-dev.satnogs.org. Make note of your station ID and API Key.}}&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
'''&amp;lt;big&amp;gt;Raspbian SatNOGS Image:&amp;lt;/big&amp;gt; &amp;lt;big&amp;gt;[https://gitlab.com/librespacefoundation/satnogs/satnogs-pi-gen/-/jobs/artifacts/2023111400/download?job=release artifacts.zip]&amp;lt;/big&amp;gt; '''  (Release: 2023111400)&lt;br /&gt;
&lt;br /&gt;
Download the latest Raspbian SatNOGS Image from above (or via the &amp;quot;Download&amp;quot; icon on the right side of the [https://gitlab.com/librespacefoundation/satnogs/satnogs-pi-gen/tags latest tag page on GitLab]). This image has the SatNOGS setup script installed, the SSH server enabled and all required packages preinstalled. You will get an &amp;lt;code&amp;gt;artifacts.zip&amp;lt;/code&amp;gt; file with the following content:&lt;br /&gt;
&lt;br /&gt;
*A Zipped image file&lt;br /&gt;
*An Image info file&lt;br /&gt;
*A SHA256 checksum file&lt;br /&gt;
&lt;br /&gt;
===Data integrity verification===&lt;br /&gt;
&lt;br /&gt;
You should verify the data integrity of the artifacts by comparing the SHA256 checksums. On Linux, run &amp;lt;code&amp;gt;sha256sum -c sha256sums&amp;lt;/code&amp;gt; in the directory where the artifacts are downloaded and unzipped.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sha256sum -c sha256sums &lt;br /&gt;
2023-11-14-Raspbian-SatNOGS-master-lite.info: OK&lt;br /&gt;
image_2023-11-14-Raspbian-SatNOGS-master-lite.zip: OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flashing==&lt;br /&gt;
[https://www.raspberrypi.org/documentation/installation/installing-images/README.md Follow the usual Raspbian flashing instructions], and boot your Raspberry Pi.  &lt;br /&gt;
&lt;br /&gt;
You will need to set the login password for your Pi, as well as Wifi settings and Locale settings by clicking the &amp;quot;Advanced&amp;quot;  options before writing the image.&lt;br /&gt;
[[File:Image.png|alt=Gear Icon for Rpi imager|left|thumb|73x73px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==Getting console access==&lt;br /&gt;
You can log in the Raspberry Pi by connecting it to a keyboard and monitor or through network via an SSH connection.&lt;br /&gt;
&lt;br /&gt;
===Keyboard and monitor===&lt;br /&gt;
Once your Raspberry Pi is booted, log in with userID and password that you set during the imaging process.&lt;br /&gt;
&lt;br /&gt;
===Ethernet===&lt;br /&gt;
If you are using wired Ethernet you should get connectivity right away. You just need to find the IP address of Raspberry Pi (e.g. in your router management interface). Log in with SSH using username you set during the image writing process.   &amp;quot;'''pi'''&amp;quot; password &amp;quot;'''raspberry'''&amp;quot;, in this example:&lt;br /&gt;
 $ ssh pi@192.168.1.2&lt;br /&gt;
If your network supports [[wikipedia:Zero-configuration_networking|&amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt;]], then you can use the hostname of your Pi:&lt;br /&gt;
 $ ssh pi@raspberrypi.local&lt;br /&gt;
&lt;br /&gt;
===Pre-boot wireless configuration===&lt;br /&gt;
If neither keyboard/monitor, nor a wired Ethernet are available, you can set up a WiFi connection before boot by mounting the boot partition of the flashed SD card and editing files directly. Note your OS may mount boot partition in a different location. [https://raspberrypi.stackexchange.com/questions/10251/prepare-sd-card-for-wifi-on-headless-pi#comment98121_57023 Windows users have line ending problems]. Suggested actions:&lt;br /&gt;
&lt;br /&gt;
 $ $EDITOR /media/Raspbian_SatNOGS-boot/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
contents: (note key_mgmt options include NONE, WPA-PSK, WPA-EAP)&lt;br /&gt;
&lt;br /&gt;
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
    update_config=1&lt;br /&gt;
    country=US&lt;br /&gt;
    &lt;br /&gt;
    network={&lt;br /&gt;
        ssid=&amp;quot;NETWORK_NAME&amp;quot;&lt;br /&gt;
        psk=&amp;quot;password&amp;quot;&lt;br /&gt;
        key_mgmt=WPA-PSK&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
===Pre-boot user creation===&lt;br /&gt;
The latest version of Raspberry Pi OS, of which the SatNOGS image is based on, '''does not''' have the &amp;quot;'''pi'''&amp;quot; user already upon first boot.&lt;br /&gt;
&lt;br /&gt;
If you wish to login using ssh upon the first boot with the prior default username / password of &amp;quot;pi&amp;quot; / &amp;quot;raspberry&amp;quot;, then:&lt;br /&gt;
&lt;br /&gt;
*Create the file &amp;lt;code&amp;gt;userconf.txt&amp;lt;/code&amp;gt; in the root of the &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; partition of the uSD card.&lt;br /&gt;
*Its contents should be the single line:&lt;br /&gt;
**&amp;lt;code&amp;gt;pi:$6$/XOZsG1X0IAbhXB0$wYZHRkvib0SUKQA3KVAxofPR.JsFAbI2NCue2znGvhRsQobVdllFXyQZ7fMSvAoyEj8MfHtkMeSZT7IRIixg01&amp;lt;/code&amp;gt;&lt;br /&gt;
**(the format is username:encrypted-password)&lt;br /&gt;
&lt;br /&gt;
For more information about this file, see: [https://www.raspberrypi.com/documentation/computers/configuration.html#configuring-a-user Raspberry Pi Documentation - Configuration - Setting up a Headless Raspberry Pi - Configuring a User]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi Setup===&lt;br /&gt;
If you used the advance settings during imaging, this step can be skipped. &lt;br /&gt;
&lt;br /&gt;
Once your Raspberry Pi is booted, log in with the username you set up during the imaging process and run: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo raspi-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will want to be sure to do the following:&lt;br /&gt;
&lt;br /&gt;
*Set a strong, unique password&lt;br /&gt;
*Change localization settings:&lt;br /&gt;
**by default the rpi locale is configured for EN-GB, change as appropriate (ie: to EN_US.UTF-8)&lt;br /&gt;
**set timezone (we recommend UTC so your logs match the times in Network; UTC is under the 'none of the above' submenu)&lt;br /&gt;
**set keyboard layout, again this is defaulting to a UK layout&lt;br /&gt;
**set wifi country&lt;br /&gt;
**expand filesystem (under the Advanced menu)&lt;br /&gt;
*Configure network or WiFi (see [https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md this doc for network configuration instructions])&lt;br /&gt;
*Finish and reboot&lt;br /&gt;
&lt;br /&gt;
===SatNOGS Setup===&lt;br /&gt;
SSH to the Raspberry Pi with userID you set during imaging password.&lt;br /&gt;
&lt;br /&gt;
Follow [[SatNOGS Client Setup]] instructions to configure the system.&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Setup_Legacy&amp;diff=3855</id>
		<title>SatNOGS Setup Legacy</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Setup_Legacy&amp;diff=3855"/>
		<updated>2022-09-10T17:24:31Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: /* Reflashing and reinstalling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; provides a set of scripts for configuring a '''SatNOGS Client''' system. &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; main function is to bring up a menu-driven console configuration utility and provision the system using [[SatNOGS Client Ansible|Ansible]].&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
Before starting &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt;, ensure the Raspberry Pi is up to date. This can be done with &amp;lt;code&amp;gt;sudo apt update&amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt;sudo apt upgrade&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
{{Message| In case of getting a similar error to this:&lt;br /&gt;
&amp;lt;code&amp;gt;W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://download.opensuse.org/repositories/home:/librespace:/satnogs/Raspbian_10 ./ InRelease: The following signatures were invalid: EXPKEYSIG 8BD3901736A40B6C home:librespace OBS Project &amp;lt;home:librespace@build.opensuse.org&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Check at https://wiki.satnogs.org/Troubleshooting#Invalid_Signature_for_download.opensuse.org on how to solve it}}In case of getting a similar error to &amp;quot;Newer kernel available&amp;quot; annoying message after running sudo apt update:&lt;br /&gt;
&lt;br /&gt;
Package configuration  &lt;br /&gt;
&lt;br /&gt;
┌──────────┤ Pending kernel upgrade ├─────────────────────┐&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                              │&lt;br /&gt;
&lt;br /&gt;
│ Newer kernel available                                                                                         │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                              │&lt;br /&gt;
&lt;br /&gt;
│ The currently running kernel version is 4.19.97-v7l+ which is not the                 │&lt;br /&gt;
&lt;br /&gt;
│ expected kernel version 4.19.93-v8+.                                                                 │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                             │&lt;br /&gt;
&lt;br /&gt;
│ Restarting the system to load the new kernel will not be handled                      │&lt;br /&gt;
&lt;br /&gt;
│ automatically, so you should consider rebooting.                                               │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                             │&lt;br /&gt;
&lt;br /&gt;
│                                 &amp;lt;Ok&amp;gt;                                                                                   │&lt;br /&gt;
&lt;br /&gt;
│                                                                                                                             │&lt;br /&gt;
&lt;br /&gt;
└─────────────────────────────────────────────────|&lt;br /&gt;
&lt;br /&gt;
Do a &amp;quot;sudo apt purge needrestart&amp;quot; after doing a reboot after doing a &amp;quot;sudo apt update&amp;quot;{{Message| In case of getting a similar error to this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
E: Repository 'http://archive.raspberrypi.org/debian buster InRelease' changed its 'Suite' value from 'testing' to 'oldstable'&lt;br /&gt;
&lt;br /&gt;
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.&lt;br /&gt;
&lt;br /&gt;
E: Repository 'http://raspbian.raspberrypi.org/raspbian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable'&lt;br /&gt;
&lt;br /&gt;
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Run &amp;lt;code&amp;gt;sudo apt-get update --allow-releaseinfo-change&amp;lt;/code&amp;gt; instead of just &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
(See: [[Troubleshooting#apt-get update: connection failed]] ).&lt;br /&gt;
&lt;br /&gt;
After the first boot of the system, packages and the configuration tool itself '''must be updated'''. Follow the [[SatNOGS Client Setup#Updating SatNOGS Client Software|Updating]] instruction found below.&lt;br /&gt;
&lt;br /&gt;
To configure a '''SatNOGS Client''' system:&lt;br /&gt;
&lt;br /&gt;
#SSH into the system and run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;; this will bring up the configuration menu&lt;br /&gt;
#Set '''all''' options in '''Basic Configuration''' (see below)&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt; and the Raspberry Pi will configure itself; this may take some time&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Back&amp;lt;/code&amp;gt; to exit&lt;br /&gt;
{{Message|You can always reconfigure the software by running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; again.}}&lt;br /&gt;
===Basic Configuration===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|The API token assigned to your ground station on the SatNOGS Network website, please don’t share your api key as this can give access to anyone to upload and change things in network related to your station and its observations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find your API token, log in to [https://network.satnogs.org network.satnogs.org], click on the user icon at the top right corner and then click on the &amp;quot;Dashboard&amp;quot; option. On the top of the dashboard page right under the user icon click the button &amp;quot;API key&amp;quot; to show your API token.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_SOAPY_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;driver=rtlsdr&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/pothosware/SoapyRTLSDR/wiki#modules pothosware/SoapyRTLSDR/wiki#modules] for other SDR modules (linked in the navigation bar at the right side of the page). If multiple devices are attached to your station you should also specify the serial of the desired device here, e.g. &amp;lt;code&amp;gt;driver=uhd,serial=3164495&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ANTENNA&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;RX&amp;lt;/code&amp;gt;. For other devices tested configurations can be found at [[Software_Defined_Radio]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your device is not listed there yet, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1| grep Antennas&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to get available antennas.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_SAMP_RATE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Specify the receiver sampling rate. Recommended value for RTL-SDR: &amp;lt;code&amp;gt;2.048e6&amp;lt;/code&amp;gt; (for 2Msps), other devices will need different sample rates described at [[Software_Defined_Radio]] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SoapySDRUtil --probe 2&amp;gt;&amp;amp;1 | grep Sample&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to find all valid sample rates.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|RF Gain value for your SDR hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt; to see all possible gain values for your hardware.&lt;br /&gt;
Example: For RTL-SDR without pre-amp, 32.8 is a good starting value. Follow [[Omnidirectional Station How To#Setting the gain|Setting the gain]] to find a good gain value.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ELEV&amp;lt;/code&amp;gt;&lt;br /&gt;
|The height of your ground station above sea level in metres.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|The '''numeric ID''' assigned to your station in the SatNOGS Network site when the groundstation was created.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LAT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The latitude of your station.  North is positive, south is negative.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STATION_LON&amp;lt;/code&amp;gt;&lt;br /&gt;
|The longitude of your station.  East is positive, west is negative.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Advanced Setup==&lt;br /&gt;
{{Warning|Changes to the following settings may be required to optimise station performance, or enable support for additional features (e.g. rotator control)}}A more detailed description on setting up a development environment using the SatNOGS reference setup is given in [[SatNOGS_Client_Development]].&lt;br /&gt;
&lt;br /&gt;
NOTE: To get your station online, you need to set SATNOGS_NETWORK_API_URL to https://network.satnogs.org/api/&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt;&lt;br /&gt;
|The local oscillator frequency deviation in ppm (value will be rounded to integer).&lt;br /&gt;
Available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyRTLSDR&lt;br /&gt;
*SoapySDRPlay&lt;br /&gt;
&lt;br /&gt;
Not available with the following modules:&lt;br /&gt;
&lt;br /&gt;
*SoapyUHD&lt;br /&gt;
*SoapyPluto&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_BANDWIDTH&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy baseband filter bandwidth [https://github.com/pothosware/SoapySDR/blob/a489f3dca9d3ccd9b276b95a608ac3ef0299f635/include/SoapySDR/Device.hpp#L904-L910] of RX Channel 0 in Hz (only available on specific devices). TODO: Testing.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Soapy device arguments (currently only accepting the &amp;lt;code&amp;gt;serial&amp;lt;/code&amp;gt; key successfully) and stream arguments.&lt;br /&gt;
NOTE: This parameter / its meaning might change in the near future, see issue [https://gitlab.com/librespacefoundation/satnogs/satnogs-client/-/issues/373 satnogs-client#373].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;&lt;br /&gt;
|Choose the gain mode:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Overall&amp;quot;&amp;lt;/code&amp;gt; (default): Set the gain with the single value from &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;: Ignore &amp;lt;code&amp;gt;SATNOGS_RF_GAIN&amp;lt;/code&amp;gt;, use the settings from &amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt; instead&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_STREAM_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_TUNE_ARGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_OTHER_SETTINGS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Only available if &amp;lt;code&amp;gt;SATNOGS_GAIN_MODE&amp;lt;/code&amp;gt;is&amp;lt;code&amp;gt;&amp;quot;Settings Field&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Available gain settings can be retrieved using &amp;lt;code&amp;gt;SoapySDRUtil --probe=&amp;quot;driver=xxxx`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for Airspy: Use&amp;lt;code&amp;gt;&amp;quot;LNA=12,MIX=8,VGA=11&amp;quot;&amp;lt;/code&amp;gt;See also: [[SDR#Airspy|Airspy support]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DC_REMOVAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_FREQ&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_LO_OFFSET&amp;lt;/code&amp;gt;&lt;br /&gt;
|Don't use this parameter to correct for the local oscillator frequency deviation, use &amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; instead!&lt;br /&gt;
To avoid the SDR carrier at the DC the LO is shifted from the actual frequency a little. Default: &amp;lt;code&amp;gt;100e3&amp;lt;/code&amp;gt; (100 kHz)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_MODEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Hamlib rotator model. If you don't have a rotator (like the [[No rotator|No rotator setup]]), leave it empty.&lt;br /&gt;
Use the macro name for your rotator model from this [https://gist.github.com/kerel-fs/2354ff9c082cd3c1594afc38c67bc32a#hamlib-release-33 list of rotator models in Hamlib]. If you are connecting to a separate rotctld instance, use &amp;lt;code&amp;gt;ROT_MODEL_NETROTCTL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_BAUD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Baud rate for Hamlib rotator serial port, if using a serial-connected rotator.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_PORT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Serial port for Hamlib rotator, OR the network address of a rotctld instance (e.g. &amp;lt;code&amp;gt;localhost:4533&amp;lt;/code&amp;gt; )&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ROT_THRESHOLD&amp;lt;/code&amp;gt;&lt;br /&gt;
|Rotator movement threshold, in degrees. If set, the rotator will only be commanded when the target has moved more than &amp;lt;threshold&amp;gt; degrees away from the current azimuth/elevation position. Default: 4 degrees&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Whether or not to enable the Hamlibs rotator daemon.  Rotctld is a software daemon that provides a network server to control a rotator on a serial port.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;HAMLIB_UTILS_ROT_OPTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|Options for rotcld:&lt;br /&gt;
For a yaesu rotator, use &amp;lt;code&amp;gt;-m 601 -r /dev/ttyACM0 -s 9600 -T 0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a SatNOGS rotator &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyACM0 -C timeout=200&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-m 204 -s 19200 -r /dev/ttyUSB0 -C timeout=200&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PRE_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;SATNOGS_POST_OBSERVATION_SCRIPT&amp;lt;/code&amp;gt;&lt;br /&gt;
|Allows execution of a shell script either pre or post-observation. The following can be entered into the script path to enable passing of information to the script:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{FREQ}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation Centre Frequency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TLE}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Target object TLE data, as a JSON-formatted object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TIMESTAMP}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Start time of the observation, in the format: %Y-%m-%dT%H-%M-%S%z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ID}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Observation ID number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BAUD}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - Baud rate of the modulation used, if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SCRIPT_NAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - The name of the demodulation flow-graph script in use.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EXPERIMENTAL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Install latest (experimental) versions of all software&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_REPOSITORY&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;deb &amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10&amp;lt;/nowiki&amp;gt; ./&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the SatNOGS packages repository key URL. For example, to install unstable package builds use:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://download.opensuse.org/repositories/home:/librespace:/satnogs-unstable/Raspbian_10/Release.key&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;APT_KEY_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to specify an alternative SatNOGS packages repository key ID.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_CLIENT_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you to try a development version of satnogs-client, you can change the URL here.  The URL needs to be in [https://pip.pypa.io/en/stable/reference/pip_install PIP format].  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;git+&amp;lt;nowiki&amp;gt;https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git@master&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'master' branch (the current development version) of satnogs-client&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git+https://gitlab.com/jdoe/satnogs-client.git@new-feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; -- the 'new-feature' branch of jdoe's fork of satnogs-client&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_FLOWGRAPHS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of satnogs-flowgraphs package to be installed. For example:&lt;br /&gt;
&amp;lt;code&amp;gt;0.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;LOG_LEVEL&amp;lt;/code&amp;gt;&lt;br /&gt;
|Define SatNOGS client log level, available values: &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WARNING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_ENABLED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Enable generation and uploading of HDF5 artifacts files to SatNOGS DB. (added in satnogs-client 1.7)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_ARTIFACTS_API_TOKEN&amp;lt;/code&amp;gt;&lt;br /&gt;
|SatNOGS DB API token associated with an account in SatNOGS DB. This token is secret. It is used to upload artifacts to SatNOGS DB. It can be found in SatNOGS DB user page. (added in satnogs-client 1.7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Obsolete Setup Variables==&lt;br /&gt;
The following options were available in previous versions of the SatNOGS client system and have no effect on the latest stable version.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RX_DEVICE&amp;lt;/code&amp;gt;&lt;br /&gt;
|If you are using an RTL-SDR, this is &amp;lt;code&amp;gt;rtlsdr&amp;lt;/code&amp;gt;.  Other devices supported by gr-satnogs include &amp;lt;code&amp;gt;usrpb200&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usrp2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;airspy/airspymini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lime&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;hackrf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_PPM_ERROR&amp;lt;/code&amp;gt; (available again)&lt;br /&gt;
|gr-satnogs: The PPM correction [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_DEV_ARGS&amp;lt;/code&amp;gt; (available again)&lt;br /&gt;
|gr-satnogs: SDR device specific arguments [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
Note: This variable was re-purposed to set soapy device and stream arguments, so it's not obsolete anymore.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_IF_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Intermediate frequency gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_BB_GAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|gr-satnogs: Baseband gain [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/blob/v1.5.1/apps/flowgraphs/README.md#execution-arguements-interface]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SATNOGS_RADIO_GR_SATNOGS_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|This options allows you to change the version of gr-satnogs package to be installed. For example: &amp;lt;code&amp;gt;1.5.1-1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updating SatNOGS Client Software==&lt;br /&gt;
{{Warning| An update can potentially interrupt a running observation!}}&lt;br /&gt;
To update SatNOGS software, including the configuration tool itself:&lt;br /&gt;
&lt;br /&gt;
#SSH into the system and (re-)run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;; this will bring up the configuration menu&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt; to update the configuration tool and all distribution packages to the latest&lt;br /&gt;
#If you are prompted for a reboot during the upgrade, once the upgrade is finished, select &amp;lt;code&amp;gt;Reboot&amp;lt;/code&amp;gt;, SSH back into the system and re-run &amp;lt;code&amp;gt;satnogs-setup&amp;lt;/code&amp;gt; to continue to the next step&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt; and the Raspberry Pi will update itself; this may take some time&lt;br /&gt;
#Before exit, check at the top that you have the latest satnogs-client and gr-satnogs versions&lt;br /&gt;
#Select &amp;lt;code&amp;gt;Back&amp;lt;/code&amp;gt; to exit&lt;br /&gt;
&lt;br /&gt;
{{Message|You can check your current version of client (and other client software) at the top of window after running &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt;; alternatively you can generate the support report by going at &amp;lt;code&amp;gt;Advanced -&amp;gt; Support&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
{{Message|Client version on SatNOGS Network is updated after the first observation with the new client.}}&lt;br /&gt;
===Upgrading from Debian 'stretch' or 'buster', to 'bullseye'===&lt;br /&gt;
Debian &amp;lt;code&amp;gt;stretch&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;buster&amp;lt;/code&amp;gt; are no longer supported. If you have already installed an older version of Debian or Raspbian SatNOGS image based on &amp;lt;code&amp;gt;buster&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;stretch&amp;lt;/code&amp;gt; (releases &amp;lt;= [https://gitlab.com/librespacefoundation/satnogs/satnogs-pi-gen/-/tags/2020122700 2020122700]), you must upgrade to &amp;lt;code&amp;gt;bullseye&amp;lt;/code&amp;gt; otherwise it will be impossible to receive updates or upgrades in the future.&lt;br /&gt;
====Reflashing and reinstalling====&lt;br /&gt;
The recommended method to upgrade to &amp;lt;code&amp;gt;bullseye&amp;lt;/code&amp;gt; is reflashing the latest Raspbian SatNOGS image (or reinstalling latest Debian). Follow [[Raspberry Pi|Raspberry Pi]] installation instructions and reinstall from scratch.&lt;br /&gt;
==Verification of correct installation==&lt;br /&gt;
To see if satnogs-client has started successfully, check the logs with &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt;:&amp;lt;pre&amp;gt;&lt;br /&gt;
$ systemctl status satnogs-client&lt;br /&gt;
&amp;lt;/pre&amp;gt;You should see an output that looks like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
● satnogs-client.service - SatNOGS client&lt;br /&gt;
   Loaded: loaded (/etc/systemd/system/satnogs-client.service; enabled; vendor preset: enabled)&lt;br /&gt;
   Active: active (running) since Wed 2020-03-04 19:30:56 GMT; 6min ago&lt;br /&gt;
 Main PID: 6309 (satnogs-client)&lt;br /&gt;
    Tasks: 11 (limit: 2200)&lt;br /&gt;
   Memory: 37.9M&lt;br /&gt;
   CGroup: /system.slice/satnogs-client.service&lt;br /&gt;
           └─6309 /var/lib/satnogs/bin/python3 /var/lib/satnogs/bin/satnogs-client&lt;br /&gt;
&lt;br /&gt;
Mar 04 19:30:56 raspberrypi systemd[1]: Started SatNOGS client.&lt;br /&gt;
&amp;lt;/pre&amp;gt;If you see that, great -- you're ready to [[Operation|schedule your first observation]]! If not, check out the [[Troubleshooting]] page.&lt;br /&gt;
&lt;br /&gt;
==Backup &amp;amp; Restore the configuration==&lt;br /&gt;
The configuration of your SatNOGS station is stored at &amp;lt;code&amp;gt;/etc/ansible/host_vars/localhost&amp;lt;/code&amp;gt;. If your station software is broken (e.g. due to a corrupt SD card) or if you want to downgrade from the experimental software back to the stable releases, you can perform the following steps:&lt;br /&gt;
&lt;br /&gt;
#Backup the configuration file at &amp;lt;code&amp;gt;/etc/ansible/host_vars/localhost&amp;lt;/code&amp;gt;&lt;br /&gt;
#Re-flash the SD card with a fresh image&lt;br /&gt;
#Restore the configuration file&lt;br /&gt;
#Run &amp;lt;code&amp;gt;sudo satnogs-setup&amp;lt;/code&amp;gt; and select &amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt; to update the tool itself and then select &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[SatNOGS Client Ansible]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3854</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3854"/>
		<updated>2022-09-10T16:42:52Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: Remove Pi4 Workaround&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:B3342fcc865731d69e0c9d7a8b1abb887185bc13 1 531x500.jpg|alt=Libre Space Foundation Raspberry Pi Case|thumb|Libre Space Foundation Raspberry Pi Case, [https://www.thingiverse.com/thing:3233687 on thingiverse]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi (version 3 and 4) is the reference platform for SatNOGS (see our [[SatNOGS Client Ansible|Ansible guide]] to install SatNOGS on other Linux machines). You can try using various distributions for this (eg. Debian/Armbian, Arch, Fedora), but the one we suggest is our custom image based on latest Raspbian.&lt;br /&gt;
&lt;br /&gt;
{{Message|This page assumes you have an account and a ground station registered on either network.satnogs.org or network-dev.satnogs.org. Make note of your station ID and API Key.}}&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
'''&amp;lt;big&amp;gt;Raspbian SatNOGS Image:&amp;lt;/big&amp;gt; &amp;lt;big&amp;gt;[https://gitlab.com/librespacefoundation/satnogs/satnogs-pi-gen/-/jobs/artifacts/2022091000/download?job=release artifacts.zip]&amp;lt;/big&amp;gt; '''  (Release: 2022091000)&lt;br /&gt;
&lt;br /&gt;
Download the latest Raspbian SatNOGS Image from above (or via the &amp;quot;Download&amp;quot; icon on the right side of the [https://gitlab.com/librespacefoundation/satnogs/satnogs-pi-gen/tags latest tag page on GitLab]). This image has the SatNOGS setup script installed, the SSH server enabled and all required packages preinstalled. You will get an &amp;lt;code&amp;gt;artifacts.zip&amp;lt;/code&amp;gt; file with the following content:&lt;br /&gt;
&lt;br /&gt;
*A Zipped image file&lt;br /&gt;
*An Image info file&lt;br /&gt;
*A SHA256 checksum file&lt;br /&gt;
&lt;br /&gt;
===Data integrity verification===&lt;br /&gt;
&lt;br /&gt;
You should verify the data integrity of the artifacts by comparing the SHA256 checksums. On Linux, run &amp;lt;code&amp;gt;sha256sum -c sha256sums&amp;lt;/code&amp;gt; in the directory where the artifacts are downloaded and unzipped.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sha256sum -c sha256sums &lt;br /&gt;
2022-09-10-Raspbian-SatNOGS-master-lite.info: OK&lt;br /&gt;
image_2022-09-10-Raspbian-SatNOGS-master-lite.zip: OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
==Flashing==&lt;br /&gt;
[https://www.raspberrypi.org/documentation/installation/installing-images/README.md Follow the usual Raspbian flashing instructions], and boot your Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
==Getting console access==&lt;br /&gt;
You can log in the Raspberry Pi by connecting it to a keyboard and monitor or through network via an SSH connection.&lt;br /&gt;
&lt;br /&gt;
===Keyboard and monitor===&lt;br /&gt;
Once your Raspberry Pi is booted, log in with username &amp;quot;'''pi'''&amp;quot; password &amp;quot;'''raspberry'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Ethernet===&lt;br /&gt;
If you are using wired Ethernet you should get connectivity right away. You just need to find the IP address of Raspberry Pi (e.g. in your router management interface). Log in with SSH using username &amp;quot;'''pi'''&amp;quot; password &amp;quot;'''raspberry'''&amp;quot;, for example:&lt;br /&gt;
 $ ssh pi@192.168.1.2&lt;br /&gt;
If your network supports [[wikipedia:Zero-configuration_networking|&amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt;]], then you can use the hostname of your Pi:&lt;br /&gt;
 $ ssh pi@raspberrypi.local&lt;br /&gt;
&lt;br /&gt;
===Pre-boot wireless configuration===&lt;br /&gt;
If neither keyboard/monitor, nor a wired Ethernet are available, you can set up a WiFi connection before boot by mounting the boot partition of the flashed SD card and editing files directly. Note your OS may mount boot partition in a different location. [https://raspberrypi.stackexchange.com/questions/10251/prepare-sd-card-for-wifi-on-headless-pi#comment98121_57023 Windows users have line ending problems]. Suggested actions:&lt;br /&gt;
&lt;br /&gt;
 $ $EDITOR /media/Raspbian_SatNOGS-boot/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
contents: (note key_mgmt options include NONE, WPA-PSK, WPA-EAP)&lt;br /&gt;
&lt;br /&gt;
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
    update_config=1&lt;br /&gt;
    country=US&lt;br /&gt;
    &lt;br /&gt;
    network={&lt;br /&gt;
        ssid=&amp;quot;NETWORK_NAME&amp;quot;&lt;br /&gt;
        psk=&amp;quot;password&amp;quot;&lt;br /&gt;
        key_mgmt=WPA-PSK&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi Setup===&lt;br /&gt;
Once your Raspberry Pi is booted, log in with username &amp;quot;'''pi'''&amp;quot; password &amp;quot;'''raspberry'''&amp;quot; and run: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo raspi-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will want to be sure to do the following:&lt;br /&gt;
&lt;br /&gt;
*Set a strong, unique password&lt;br /&gt;
*Change localization settings:&lt;br /&gt;
**by default the rpi locale is configured for EN-GB, change as appropriate (ie: to EN_US.UTF-8)&lt;br /&gt;
**set timezone (we recommend UTC so your logs match the times in Network; UTC is under the 'none of the above' submenu)&lt;br /&gt;
**set keyboard layout, again this is defaulting to a UK layout&lt;br /&gt;
**set wifi country&lt;br /&gt;
**expand filesystem (under the Advanced menu)&lt;br /&gt;
*Configure network or WiFi (see [https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md this doc for network configuration instructions])&lt;br /&gt;
*Finish and reboot&lt;br /&gt;
&lt;br /&gt;
===SatNOGS Setup===&lt;br /&gt;
SSH to the Raspberry Pi with user &amp;quot;'''pi'''&amp;quot; and your new password.&lt;br /&gt;
&lt;br /&gt;
Follow [[SatNOGS Client Setup]] instructions to configure the system.&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3853</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Raspberry_Pi&amp;diff=3853"/>
		<updated>2022-09-10T16:41:56Z</updated>

		<summary type="html">&lt;p&gt;Acinonyx: SSH enabled during build&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:B3342fcc865731d69e0c9d7a8b1abb887185bc13 1 531x500.jpg|alt=Libre Space Foundation Raspberry Pi Case|thumb|Libre Space Foundation Raspberry Pi Case, [https://www.thingiverse.com/thing:3233687 on thingiverse]]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi (version 3 and 4) is the reference platform for SatNOGS (see our [[SatNOGS Client Ansible|Ansible guide]] to install SatNOGS on other Linux machines). You can try using various distributions for this (eg. Debian/Armbian, Arch, Fedora), but the one we suggest is our custom image based on latest Raspbian.&lt;br /&gt;
&lt;br /&gt;
{{Message|This page assumes you have an account and a ground station registered on either network.satnogs.org or network-dev.satnogs.org. Make note of your station ID and API Key.}}&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
'''&amp;lt;big&amp;gt;Raspbian SatNOGS Image:&amp;lt;/big&amp;gt; &amp;lt;big&amp;gt;[https://gitlab.com/librespacefoundation/satnogs/satnogs-pi-gen/-/jobs/artifacts/2022091000/download?job=release artifacts.zip]&amp;lt;/big&amp;gt; '''  (Release: 2022091000)&lt;br /&gt;
&lt;br /&gt;
Download the latest Raspbian SatNOGS Image from above (or via the &amp;quot;Download&amp;quot; icon on the right side of the [https://gitlab.com/librespacefoundation/satnogs/satnogs-pi-gen/tags latest tag page on GitLab]). This image has the SatNOGS setup script installed, the SSH server enabled and all required packages preinstalled. You will get an &amp;lt;code&amp;gt;artifacts.zip&amp;lt;/code&amp;gt; file with the following content:&lt;br /&gt;
&lt;br /&gt;
*A Zipped image file&lt;br /&gt;
*An Image info file&lt;br /&gt;
*A SHA256 checksum file&lt;br /&gt;
&lt;br /&gt;
===Data integrity verification===&lt;br /&gt;
&lt;br /&gt;
You should verify the data integrity of the artifacts by comparing the SHA256 checksums. On Linux, run &amp;lt;code&amp;gt;sha256sum -c sha256sums&amp;lt;/code&amp;gt; in the directory where the artifacts are downloaded and unzipped.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sha256sum -c sha256sums &lt;br /&gt;
2022-09-10-Raspbian-SatNOGS-master-lite.info: OK&lt;br /&gt;
image_2022-09-10-Raspbian-SatNOGS-master-lite.zip: OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Pi4 Workaround===&lt;br /&gt;
&lt;br /&gt;
With newer Pi4 models there where missing firmware files in the image, for now we have created a temporary solution.&lt;br /&gt;
The updated image can be downloaded via the following [https://cloud.libre.space/s/4cfcK6H4joCdyCm link]&lt;br /&gt;
&lt;br /&gt;
Data integrity information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
md5: 5128e134554ef32aa7eb31267305b302&lt;br /&gt;
sha256: c769ead89686f6b232a79f23637dedec018aa73982ec31e387e61d4d60029d52&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Flashing==&lt;br /&gt;
[https://www.raspberrypi.org/documentation/installation/installing-images/README.md Follow the usual Raspbian flashing instructions], and boot your Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
==Getting console access==&lt;br /&gt;
You can log in the Raspberry Pi by connecting it to a keyboard and monitor or through network via an SSH connection.&lt;br /&gt;
&lt;br /&gt;
===Keyboard and monitor===&lt;br /&gt;
Once your Raspberry Pi is booted, log in with username &amp;quot;'''pi'''&amp;quot; password &amp;quot;'''raspberry'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Ethernet===&lt;br /&gt;
If you are using wired Ethernet you should get connectivity right away. You just need to find the IP address of Raspberry Pi (e.g. in your router management interface). Log in with SSH using username &amp;quot;'''pi'''&amp;quot; password &amp;quot;'''raspberry'''&amp;quot;, for example:&lt;br /&gt;
 $ ssh pi@192.168.1.2&lt;br /&gt;
If your network supports [[wikipedia:Zero-configuration_networking|&amp;lt;code&amp;gt;zeroconf&amp;lt;/code&amp;gt;]], then you can use the hostname of your Pi:&lt;br /&gt;
 $ ssh pi@raspberrypi.local&lt;br /&gt;
&lt;br /&gt;
===Pre-boot wireless configuration===&lt;br /&gt;
If neither keyboard/monitor, nor a wired Ethernet are available, you can set up a WiFi connection before boot by mounting the boot partition of the flashed SD card and editing files directly. Note your OS may mount boot partition in a different location. [https://raspberrypi.stackexchange.com/questions/10251/prepare-sd-card-for-wifi-on-headless-pi#comment98121_57023 Windows users have line ending problems]. Suggested actions:&lt;br /&gt;
&lt;br /&gt;
 $ $EDITOR /media/Raspbian_SatNOGS-boot/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
contents: (note key_mgmt options include NONE, WPA-PSK, WPA-EAP)&lt;br /&gt;
&lt;br /&gt;
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
    update_config=1&lt;br /&gt;
    country=US&lt;br /&gt;
    &lt;br /&gt;
    network={&lt;br /&gt;
        ssid=&amp;quot;NETWORK_NAME&amp;quot;&lt;br /&gt;
        psk=&amp;quot;password&amp;quot;&lt;br /&gt;
        key_mgmt=WPA-PSK&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pi Setup===&lt;br /&gt;
Once your Raspberry Pi is booted, log in with username &amp;quot;'''pi'''&amp;quot; password &amp;quot;'''raspberry'''&amp;quot; and run: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo raspi-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will want to be sure to do the following:&lt;br /&gt;
&lt;br /&gt;
*Set a strong, unique password&lt;br /&gt;
*Change localization settings:&lt;br /&gt;
**by default the rpi locale is configured for EN-GB, change as appropriate (ie: to EN_US.UTF-8)&lt;br /&gt;
**set timezone (we recommend UTC so your logs match the times in Network; UTC is under the 'none of the above' submenu)&lt;br /&gt;
**set keyboard layout, again this is defaulting to a UK layout&lt;br /&gt;
**set wifi country&lt;br /&gt;
**expand filesystem (under the Advanced menu)&lt;br /&gt;
*Configure network or WiFi (see [https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md this doc for network configuration instructions])&lt;br /&gt;
*Finish and reboot&lt;br /&gt;
&lt;br /&gt;
===SatNOGS Setup===&lt;br /&gt;
SSH to the Raspberry Pi with user &amp;quot;'''pi'''&amp;quot; and your new password.&lt;br /&gt;
&lt;br /&gt;
Follow [[SatNOGS Client Setup]] instructions to configure the system.&lt;br /&gt;
&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Acinonyx</name></author>
		
	</entry>
</feed>