diff --git a/README.md b/README.md index 4cb78bcb..d9367e2f 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,15 @@ # CubeSatSim -See the Wiki for more details. To build and run the software on a Raspberry Pi 3B, 3B+, or Pi Zero W: +The CubeSat Simulator https://github.com/alanbjohnston/CubeSatSim/wiki is a low cost satellite emulator that run on solar panels and batteries, transmits UHF radio telemetry, has a 3D printed frame, and can be extended by additional sensors and modules. This project is sponsored by the not-for-profit [Radio Amateur Satellite Corporation, AMSAT®](https://amsat.org). + +See the Wiki Software Install page for more details: https://github.com/alanbjohnston/CubeSatSim/wiki/Software-Install. To build and run the software on a Raspberry Pi 3B, 3B+, or Pi Zero W: `git clone http://github.com/alanbjohnston/CubeSatSim.git` `cd CubeSatSim` +Edit the afsk/main.c file to set your amateur radio callsign, then + `make rebuild` To hear CW telemetry (Morse code), tune your radio or SDR to 435.297 MHz and enter: @@ -16,15 +20,18 @@ To stop, Ctrl-C. To hear AFSK telemetry (X.25 data), your radio or SDR to 440.3 `./radioafsk` -This code uses the Brandenburg Tech Digital Transceiver, based on DigitalTxRxRP - https://brandenburgtech.wordpress.com/- +This code uses the Brandenburg Tech Digital Transceiver, based on DigitalTxRxRP https://brandenburgtech.wordpress.com/ + +This repository contains: - - cw - Code that sends telemetry in CW (Morse code) using AO-7 format - - afsk - Code that sends telemetry in 1k2 AFSK X.25 format + - afsk - Code that sends telemetry in 1k2 AFSK X.25 format + - arduino - Sample Arduino sketches to show how payload sensors can be interfaced to CubeSat Simulator - ax5043 - Source for a library of functions to communicate with the AX5043 and configure the AX5043. + - cw - Code that sends telemetry in CW (Morse code) using AO-7 format - libs - External libraries - python - Python code for reading I2C sensors for current and temperature - - spreadsheet - Spreadsheets and macros for analyzing the Simulator telemetry + - spreadsheet - Spreadsheets for decoding and analyzing the Simulator telemetry (see https://github.com/alanbjohnston/CubeSatSim/wiki/Decoding-Telemetry for details) - wav - Wave audio files of CW or AFSK telemetry for listening or transmitting usng a CubeSat Simulator Lite + - demo.sh - a shell script to run the Simulator on boot using systemd (see https://github.com/alanbjohnston/CubeSatSim/wiki/Software-Install#autoboot-configuration for how to configure the Pi) -See the Wiki for more details +See the Wiki for more details https://github.com/alanbjohnston/CubeSatSim/wiki diff --git a/afsk/ax5043.c b/afsk/ax5043.c index f74b4ad9..8ed001f5 100644 --- a/afsk/ax5043.c +++ b/afsk/ax5043.c @@ -21,6 +21,7 @@ #include #include #include +#include #include "ax25.h" #include "ax5043.h" #include "status.h" @@ -447,11 +448,10 @@ int ax5043_set_tx_freq(ax5043_conf_t *conf, uint32_t freq) { conf->tx_freq = freq; /* If the frequency difference is great enough perform autoranging */ -/* if (freq + 25000000 > prev_freq || freq - 25000000 < prev_freq) { ax5043_autoranging(conf); } -*/ + return PQWS_SUCCESS; } @@ -616,23 +616,33 @@ int ax5043_autoranging(ax5043_conf_t *conf) { val = BIT(4) | AX5043_VCOR_INIT; ret = ax5043_spi_write_8(conf, pllranging_reg, val); if (ret) { + printf("ERROR: AX5043 Autoranging Write Failure\n\n"); return ret; } usleep(10); - val = 0; + //val = 0; /* Wait until the autoranging is complete */ - while ((val & BIT(4)) == 0) { + int timeout = 0; + clock_t start = clock(); + while (((val & BIT(4)) != 0) && !timeout ) { // changed to !=, since https://www.onsemi.com/pub/Collateral/AND9347-D.PDF says BIT(4) RNG START clears when autoranging done ret = ax5043_spi_read_8(conf, &val, pllranging_reg); if (ret) { + printf("ERROR: AX5043 Autoranging Read Failure\n\n"); return ret; } + if ((clock() - start) > 1000000) { + timeout = 1; + } } if (val & BIT(5)) { + printf("ERROR: AX5043 Autoranging Error\n\n"); return -PQWS_AX5043_AUTORANGING_ERROR; + } else if (timeout) { + printf("ERROR: AX5043 Autoranging Timeout\n\n"); + return -1; } - return PQWS_SUCCESS; } diff --git a/afsk/main.c b/afsk/main.c index 7230ac2c..d8845d32 100644 --- a/afsk/main.c +++ b/afsk/main.c @@ -36,8 +36,8 @@ #include #include "ina219.h" -// Put your callsign here -#define CALLSIGN "KU2Y" + +#define CALLSIGN "" // Put your callsign here! #define VBATT 15 #define ADC5 17 #define ADC6 18 @@ -427,19 +427,33 @@ charging = 0; float temp = (float)lower + ((float)upper / 0x100); tlm[4][A] = (int)((95.8 - temp)/1.48 + 0.5) % 100; - } - + } + + FILE *cpuTempSensor = fopen("/sys/class/thermal/thermal_zone0/temp", "r"); + if (cpuTempSensor) { + double cpuTemp; + fscanf (cpuTempSensor, "%lf", &cpuTemp); + cpuTemp /= 1000; + #ifdef DEBUG_LOGGING + printf("CPU Temp Read: %6.1f\n", cpuTemp); + #endif + tlm[4][B] = (int)((95.8 - cpuTemp)/1.48 + 0.5) % 100; + fclose (cpuTempSensor); + } + tlm[6][B] = 0 ; tlm[6][D] = 49 + rand() % 3; + #ifdef DEBUG_LOGGING // Display tlm - int k, j; - for (k = 1; k < 7; k++) { - for (j = 1; j < 5; j++) { - printf(" %2d ", tlm[k][j]); - } - printf("\n"); - } + int k, j; + for (k = 1; k < 7; k++) { + for (j = 1; j < 5; j++) { + printf(" %2d ", tlm[k][j]); + } + printf("\n"); + } + #endif return 0; } diff --git a/arduino/README.md b/arduino/README.md new file mode 100644 index 00000000..8114ec41 --- /dev/null +++ b/arduino/README.md @@ -0,0 +1,12 @@ +This code is used on an Arduino acting as a payload to the CubeSat Simulator. + +The Arduino is on the Raspberry Pi i2c bus 0, address 0x4b + +The 2c_master_register_read.ino code emulates the register reading of the Raspberry Pi. You can connect two Arduinos back-to-back to show this. + +The i2c_slave_register_read.ino code responds to register reads from a bus master such as another Arduino or the Raspberry Pi + +The i2c_slave_with_sensor_reading.ino code responds to register reads from a bus master and has placeholders for reading a sensor. + +See https://github.com/alanbjohnston/CubeSatSim/wiki/Arduino-Payload for ideas on using the Arduino as a payload for the CubeSat Simulator. + diff --git a/arduino/i2c_slave_register_read.ino b/arduino/i2c_slave_register_read.ino index e59935cc..2f033587 100644 --- a/arduino/i2c_slave_register_read.ino +++ b/arduino/i2c_slave_register_read.ino @@ -18,6 +18,9 @@ unsigned int reg_0_value, reg_1_value, reg_2_value, reg_3_value; // register va void setup() { Wire.begin(I2C_ADDRESS); + Wire.setClock(400000); // set I2C clock for full speed + digitalWrite(A4, LOW); + digitalWrite(A5, LOW); Wire.onRequest(requestEvent); Wire.onReceive(receiveEvent); pinMode(LED_BUILTIN, OUTPUT); diff --git a/arduino/i2c_slave_with_sensor_reading.ino b/arduino/i2c_slave_with_sensor_reading.ino new file mode 100644 index 00000000..c3e97ae1 --- /dev/null +++ b/arduino/i2c_slave_with_sensor_reading.ino @@ -0,0 +1,73 @@ +#include +#define REGISTER_0 0x00 +#define REGISTER_1 0x01 +#define REGISTER_2 0x02 +#define REGISTER_3 0x03 +#define I2C_ADDRESS_SELF 0x4B + +unsigned int reg_0_value = 41151; +unsigned int reg_1_value = 0; +unsigned int reg_2_value = 0; +unsigned int reg_3_value = 0; + +uint8_t master_reg; // I2C master read register +uint8_t slave_reg; // I2C slave read register + +void setup() +{ + Serial.begin(9600); //Begins Serial communication + Serial.println("Setup for sensor"); + + Wire.begin(I2C_ADDRESS_SELF); // join i2c bus + Wire.setClock(400000); // set I2C clock for full speed + Serial.begin(9600); // start serial for output + digitalWrite(A4, LOW); + digitalWrite(A5, LOW); + Wire.onRequest(requestEvent); + Wire.onReceive(receiveEvent); + pinMode(LED_BUILTIN, OUTPUT); + Serial.println("Starting"); +} + +void loop() +{ + delay(1000); + + Serial.println("Read sensor value"); + + reg_0_value = 1; // set register 0 value to the sensor value + reg_1_value += 1; // increment a count of how many values read +} + +void receiveEvent(int bytes) { + // Slave reads the first byte to determine which register is concerned + slave_reg = Wire.read(); + Serial.print("Slave read register "); + Serial.println(slave_reg); +} + +void requestEvent() { + // Slave uses the the register variable to know what to send back + digitalWrite(LED_BUILTIN, HIGH); + if (slave_reg == REGISTER_0) { + Wire.write((uint8_t *)®_0_value, sizeof(reg_0_value)); + Serial.print("Slave writing value "); + Serial.println(reg_0_value); + } else if (slave_reg == REGISTER_1) { + Wire.write((uint8_t *)®_1_value, sizeof(reg_1_value)); + Serial.print("Slave writing value "); + Serial.println(reg_1_value); + } else if (slave_reg == REGISTER_2) { + Wire.write((uint8_t *)®_2_value, sizeof(reg_2_value)); + Serial.print("Slave writing value "); + Serial.println(reg_2_value); + } else if (slave_reg == REGISTER_3) { + Wire.write((uint8_t *)®_3_value, sizeof(reg_3_value)); + Serial.print("Slave writing value "); + Serial.println(reg_3_value); + } else { + Serial.println("Slave unknown register"); + } + delay(50); + digitalWrite(LED_BUILTIN, LOW); +} diff --git a/groundstation/README.md b/groundstation/README.md new file mode 100644 index 00000000..941a15cf --- /dev/null +++ b/groundstation/README.md @@ -0,0 +1,17 @@ +These files relate to the optional Raspberry Pi Ground Station. + +The Ground Station can be installed on any Windows or Linux PC or laptop, but it does require drivers to be installed (RTL-SDR) +and virtual audio cable (for sound) to be installed. This requires administrator privileges on the computer. + +A simpler approach perhaps well suited to school environments is to use a dedicated Raspberry Pi Ground Station + +The Raspberry Pi Ground Station can be used as a stand-alone ground station for receiving, decoding, and analyzing telemetry +from the CubeSat Simulator if an HDMI monitor, USB keyboard, and USB mouse are plugged into the Pi. + +Alternatively, with another computer or laptop that has SSH access to the Pi, the telemetry can be received and decoded on the Pi +and analyzed on the other computer or laptop. + +Also, a web SDR known as OpenWebRX can be run on the Pi so that other PCs or laptops on the same WiFi can use the SDR to tune the +telemetry with only a web browser. + +See https://github.com/alanbjohnston/CubeSatSim/wiki/Raspberry-Pi-Ground-Station-Setup for the details. diff --git a/groundstation/aprs.sh b/groundstation/aprs.sh new file mode 100755 index 00000000..7d83c968 --- /dev/null +++ b/groundstation/aprs.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# script to auto decode APRS packets on 2m + +# kill openwebrx if it is running +ps -ef | grep rtl | grep -v grep | awk '{print $2}' | sudo xargs kill + +echo -e "Script to auto decode APRS packets on 144.390 MHz\n" + +sudo rtl_fm -f 144.39M -s 22050 -g 48 - | multimon-ng -a AFSK1200 -A -t raw - diff --git a/groundstation/config_webrx.py b/groundstation/config_webrx.py new file mode 100644 index 00000000..1a549578 --- /dev/null +++ b/groundstation/config_webrx.py @@ -0,0 +1,216 @@ +# -*- coding: utf-8 -*- + +""" +config_webrx: configuration options for OpenWebRX + + This file is part of OpenWebRX, + an open-source SDR receiver software with a web UI. + Copyright (c) 2013-2015 by Andras Retzler + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + In addition, as a special exception, the copyright holders + state that config_rtl.py and config_webrx.py are not part of the + Corresponding Source defined in GNU AGPL version 3 section 1. + + (It means that you do not have to redistribute config_rtl.py and + config_webrx.py if you make any changes to these two configuration files, + and use them for running your web service with OpenWebRX.) +""" + +# NOTE: you can find additional information about configuring OpenWebRX in the Wiki: +# https://github.com/simonyiszk/openwebrx/wiki + +# ==== Server settings ==== +web_port=8073 +server_hostname="localhost" # If this contains an incorrect value, the web UI may freeze on load (it can't open websocket) +max_clients=20 + +# ==== Web GUI configuration ==== +receiver_name="AMSAT CubeSat Simulator Ground Station" +receiver_location="" +receiver_qra="" +receiver_asl=0 +receiver_ant="monopole" +receiver_device="RTL-SDR" +receiver_admin="ku2y@amsat.org" +receiver_gps=(39.0302,-77.0747) +photo_height=350 +photo_title="Panorama of Budapest from Schönherz Zoltán Dormitory" +photo_desc=""" +You can add your own background photo and receiver information.
+Receiver is operated by: %[RX_ADMIN]
+Device: %[RX_DEVICE]
+Antenna: %[RX_ANT]
+Website: http://localhost +""" + +# ==== sdr.hu listing ==== +# If you want your ham receiver to be listed publicly on sdr.hu, then take the following steps: +# 1. Register at: http://sdr.hu/register +# 2. You will get an unique key by email. Copy it and paste here: +sdrhu_key = "" +# 3. Set this setting to True to enable listing: +sdrhu_public_listing = False + +# ==== DSP/RX settings ==== +fft_fps=9 +fft_size=4096 #Should be power of 2 +fft_voverlap_factor=0.3 #If fft_voverlap_factor is above 0, multiple FFTs will be used for creating a line on the diagram. + +samp_rate = 250000 +# samp_rate = 2400000 +center_freq = 440450000 +rf_gain = 37 #in dB. For an RTL-SDR, rf_gain=0 will set the tuner to auto gain mode, else it will be in manual gain mode. +ppm = 0 + +audio_compression="adpcm" #valid values: "adpcm", "none" +fft_compression="adpcm" #valid values: "adpcm", "none" + +digimodes_enable=False # True #Decoding digimodes come with higher CPU usage. +digimodes_fft_size=1024 + +start_rtl_thread=True + +""" +Note: if you experience audio underruns while CPU usage is 100%, you can: +- decrease `samp_rate`, +- set `fft_voverlap_factor` to 0, +- decrease `fft_fps` and `fft_size`, +- limit the number of users by decreasing `max_clients`. +""" + +# ==== I/Q sources ==== +# (Uncomment the appropriate by removing # characters at the beginning of the corresponding lines.) + +################################################################################################# +# Is my SDR hardware supported? # +# Check here: https://github.com/simonyiszk/openwebrx/wiki#guides-for-receiver-hardware-support # +################################################################################################# + +# You can use other SDR hardware as well, by giving your own command that outputs the I/Q samples... Some examples of configuration are available here (default is RTL-SDR): + +# >> RTL-SDR via rtl_sdr +start_rtl_command="rtl_sdr -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm) +format_conversion="csdr convert_u8_f" + +#lna_gain=8 +#rf_amp=1 +#start_rtl_command="hackrf_transfer -s {samp_rate} -f {center_freq} -g {rf_gain} -l{lna_gain} -a{rf_amp} -r-".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm, rf_amp=rf_amp, lna_gain=lna_gain) +#format_conversion="csdr convert_s8_f" +""" +To use a HackRF, compile the HackRF host tools from its "stdout" branch: + git clone https://github.com/mossmann/hackrf/ + cd hackrf + git fetch + git checkout origin/stdout + cd host + mkdir build + cd build + cmake .. -DINSTALL_UDEV_RULES=ON + make + sudo make install +""" + +# >> Sound card SDR (needs ALSA) +# I did not have the chance to properly test it. +#samp_rate = 96000 +#start_rtl_command="arecord -f S16_LE -r {samp_rate} -c2 -".format(samp_rate=samp_rate) +#format_conversion="csdr convert_s16_f | csdr gain_ff 30" + +# >> /dev/urandom test signal source +# samp_rate = 2400000 +# start_rtl_command="cat /dev/urandom | (pv -qL `python -c 'print int({samp_rate} * 2.2)'` 2>&1)".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate) +# format_conversion="csdr convert_u8_f" + +# >> Pre-recorded raw I/Q file as signal source +# You will have to correctly specify: samp_rate, center_freq, format_conversion in order to correctly play an I/Q file. +#start_rtl_command="(while true; do cat my_iq_file.raw; done) | csdr flowcontrol {sr} 20 ".format(sr=samp_rate*2*1.05) +#format_conversion="csdr convert_u8_f" + +#>> The rx_sdr command works with a variety of SDR harware: RTL-SDR, HackRF, SDRplay, UHD, Airspy, Red Pitaya, audio devices, etc. +# It will auto-detect your SDR hardware if the following tools are installed: +# * the vendor provided driver and library, +# * the vendor-specific SoapySDR wrapper library, +# * and SoapySDR itself. +# Check out this article on the OpenWebRX Wiki: https://github.com/simonyiszk/openwebrx/wiki/Using-rx_tools-with-OpenWebRX/ +#start_rtl_command="rx_sdr -F CF32 -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm) +#format_conversion="" + +# >> gr-osmosdr signal source using GNU Radio (follow this guide: https://github.com/simonyiszk/openwebrx/wiki/Using-GrOsmoSDR-as-signal-source) +#start_rtl_command="cat /tmp/osmocom_fifo" +#format_conversion="" + +# ==== Misc settings ==== + +shown_center_freq = center_freq #you can change this if you use an upconverter + +client_audio_buffer_size = 5 +#increasing client_audio_buffer_size will: +# - also increase the latency +# - decrease the chance of audio underruns + +start_freq = center_freq +start_mod = "nfm" #nfm, am, lsb, usb, cw + +iq_server_port = 4951 #TCP port for ncat to listen on. It will send I/Q data over its connections, for internal use in OpenWebRX. It is only accessible from the localhost by default. + +#access_log = "~/openwebrx_access.log" + +# ==== Color themes ==== + +#A guide is available to help you set these values: https://github.com/simonyiszk/openwebrx/wiki/Calibrating-waterfall-display-levels + +### default theme by teejez: +waterfall_colors = "[0x000000ff,0x0000ffff,0x00ffffff,0x00ff00ff,0xffff00ff,0xff0000ff,0xff00ffff,0xffffffff]" +waterfall_min_level = -88 #in dB +waterfall_max_level = -20 +waterfall_auto_level_margin = (5, 40) +### old theme by HA7ILM: +#waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]" +#waterfall_min_level = -115 #in dB +#waterfall_max_level = 0 +#waterfall_auto_level_margin = (20, 30) +##For the old colors, you might also want to set [fft_voverlap_factor] to 0. + +#Note: When the auto waterfall level button is clicked, the following happens: +# [waterfall_min_level] = [current_min_power_level] - [waterfall_auto_level_margin[0]] +# [waterfall_max_level] = [current_max_power_level] + [waterfall_auto_level_margin[1]] +# +# ___|____________________________________|____________________________________|____________________________________|___> signal power +# \_waterfall_auto_level_margin[0]_/ |__ current_min_power_level | \_waterfall_auto_level_margin[1]_/ +# current_max_power_level __| + +# 3D view settings +mathbox_waterfall_frequency_resolution = 128 #bins +mathbox_waterfall_history_length = 10 #seconds +mathbox_waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]" + +# === Experimental settings === +#Warning! The settings below are very experimental. +csdr_dynamic_bufsize = False # This allows you to change the buffering mode of csdr. +csdr_print_bufsizes = False # This prints the buffer sizes used for csdr processes. +csdr_through = False # Setting this True will print out how much data is going into the DSP chains. + +nmux_memory = 50 #in megabytes. This sets the approximate size of the circular buffer used by nmux. + +#Look up external IP address automatically from icanhazip.com, and use it as [server_hostname] +""" +print "[openwebrx-config] Detecting external IP address..." +import urllib2 +server_hostname=urllib2.urlopen("http://icanhazip.com").read()[:-1] +print "[openwebrx-config] External IP address detected:", server_hostname +""" diff --git a/groundstation/config_webrx_107.py b/groundstation/config_webrx_107.py new file mode 100644 index 00000000..568e3a9b --- /dev/null +++ b/groundstation/config_webrx_107.py @@ -0,0 +1,216 @@ +# -*- coding: utf-8 -*- + +""" +config_webrx: configuration options for OpenWebRX + + This file is part of OpenWebRX, + an open-source SDR receiver software with a web UI. + Copyright (c) 2013-2015 by Andras Retzler + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + In addition, as a special exception, the copyright holders + state that config_rtl.py and config_webrx.py are not part of the + Corresponding Source defined in GNU AGPL version 3 section 1. + + (It means that you do not have to redistribute config_rtl.py and + config_webrx.py if you make any changes to these two configuration files, + and use them for running your web service with OpenWebRX.) +""" + +# NOTE: you can find additional information about configuring OpenWebRX in the Wiki: +# https://github.com/simonyiszk/openwebrx/wiki + +# ==== Server settings ==== +web_port=8073 +server_hostname="localhost" # If this contains an incorrect value, the web UI may freeze on load (it can't open websocket) +max_clients=20 + +# ==== Web GUI configuration ==== +receiver_name="ARISS Ground Station" +receiver_location="" +receiver_qra="" +receiver_asl=0 +receiver_ant="monopole" +receiver_device="RTL-SDR" +receiver_admin="ku2y@amsat.org" +receiver_gps=(39.0302,-77.0747) +photo_height=350 +photo_title="ARISS - Amateur Radio on the International Space Station" +photo_desc=""" +You can add your own background photo and receiver information.
+Receiver is operated by: %[RX_ADMIN]
+Device: %[RX_DEVICE]
+Antenna: %[RX_ANT]
+Website: http://localhost +""" + +# ==== sdr.hu listing ==== +# If you want your ham receiver to be listed publicly on sdr.hu, then take the following steps: +# 1. Register at: http://sdr.hu/register +# 2. You will get an unique key by email. Copy it and paste here: +sdrhu_key = "" +# 3. Set this setting to True to enable listing: +sdrhu_public_listing = False + +# ==== DSP/RX settings ==== +fft_fps=9 +fft_size=4096 #Should be power of 2 +fft_voverlap_factor=0.3 #If fft_voverlap_factor is above 0, multiple FFTs will be used for creating a line on the diagram. + +#samp_rate = 250000 +samp_rate = 2400000 +center_freq = 107000000 +rf_gain = 37 #in dB. For an RTL-SDR, rf_gain=0 will set the tuner to auto gain mode, else it will be in manual gain mode. +ppm = 0 + +audio_compression="adpcm" #valid values: "adpcm", "none" +fft_compression="adpcm" #valid values: "adpcm", "none" + +digimodes_enable=False # True #Decoding digimodes come with higher CPU usage. +digimodes_fft_size=1024 + +start_rtl_thread=True + +""" +Note: if you experience audio underruns while CPU usage is 100%, you can: +- decrease `samp_rate`, +- set `fft_voverlap_factor` to 0, +- decrease `fft_fps` and `fft_size`, +- limit the number of users by decreasing `max_clients`. +""" + +# ==== I/Q sources ==== +# (Uncomment the appropriate by removing # characters at the beginning of the corresponding lines.) + +################################################################################################# +# Is my SDR hardware supported? # +# Check here: https://github.com/simonyiszk/openwebrx/wiki#guides-for-receiver-hardware-support # +################################################################################################# + +# You can use other SDR hardware as well, by giving your own command that outputs the I/Q samples... Some examples of configuration are available here (default is RTL-SDR): + +# >> RTL-SDR via rtl_sdr +start_rtl_command="rtl_sdr -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm) +format_conversion="csdr convert_u8_f" + +#lna_gain=8 +#rf_amp=1 +#start_rtl_command="hackrf_transfer -s {samp_rate} -f {center_freq} -g {rf_gain} -l{lna_gain} -a{rf_amp} -r-".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm, rf_amp=rf_amp, lna_gain=lna_gain) +#format_conversion="csdr convert_s8_f" +""" +To use a HackRF, compile the HackRF host tools from its "stdout" branch: + git clone https://github.com/mossmann/hackrf/ + cd hackrf + git fetch + git checkout origin/stdout + cd host + mkdir build + cd build + cmake .. -DINSTALL_UDEV_RULES=ON + make + sudo make install +""" + +# >> Sound card SDR (needs ALSA) +# I did not have the chance to properly test it. +#samp_rate = 96000 +#start_rtl_command="arecord -f S16_LE -r {samp_rate} -c2 -".format(samp_rate=samp_rate) +#format_conversion="csdr convert_s16_f | csdr gain_ff 30" + +# >> /dev/urandom test signal source +# samp_rate = 2400000 +# start_rtl_command="cat /dev/urandom | (pv -qL `python -c 'print int({samp_rate} * 2.2)'` 2>&1)".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate) +# format_conversion="csdr convert_u8_f" + +# >> Pre-recorded raw I/Q file as signal source +# You will have to correctly specify: samp_rate, center_freq, format_conversion in order to correctly play an I/Q file. +#start_rtl_command="(while true; do cat my_iq_file.raw; done) | csdr flowcontrol {sr} 20 ".format(sr=samp_rate*2*1.05) +#format_conversion="csdr convert_u8_f" + +#>> The rx_sdr command works with a variety of SDR harware: RTL-SDR, HackRF, SDRplay, UHD, Airspy, Red Pitaya, audio devices, etc. +# It will auto-detect your SDR hardware if the following tools are installed: +# * the vendor provided driver and library, +# * the vendor-specific SoapySDR wrapper library, +# * and SoapySDR itself. +# Check out this article on the OpenWebRX Wiki: https://github.com/simonyiszk/openwebrx/wiki/Using-rx_tools-with-OpenWebRX/ +#start_rtl_command="rx_sdr -F CF32 -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm) +#format_conversion="" + +# >> gr-osmosdr signal source using GNU Radio (follow this guide: https://github.com/simonyiszk/openwebrx/wiki/Using-GrOsmoSDR-as-signal-source) +#start_rtl_command="cat /tmp/osmocom_fifo" +#format_conversion="" + +# ==== Misc settings ==== + +shown_center_freq = center_freq #you can change this if you use an upconverter + +client_audio_buffer_size = 5 +#increasing client_audio_buffer_size will: +# - also increase the latency +# - decrease the chance of audio underruns + +start_freq = center_freq +start_mod = "nfm" #nfm, am, lsb, usb, cw + +iq_server_port = 4951 #TCP port for ncat to listen on. It will send I/Q data over its connections, for internal use in OpenWebRX. It is only accessible from the localhost by default. + +#access_log = "~/openwebrx_access.log" + +# ==== Color themes ==== + +#A guide is available to help you set these values: https://github.com/simonyiszk/openwebrx/wiki/Calibrating-waterfall-display-levels + +### default theme by teejez: +waterfall_colors = "[0x000000ff,0x0000ffff,0x00ffffff,0x00ff00ff,0xffff00ff,0xff0000ff,0xff00ffff,0xffffffff]" +waterfall_min_level = -88 #in dB +waterfall_max_level = -20 +waterfall_auto_level_margin = (5, 40) +### old theme by HA7ILM: +#waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]" +#waterfall_min_level = -115 #in dB +#waterfall_max_level = 0 +#waterfall_auto_level_margin = (20, 30) +##For the old colors, you might also want to set [fft_voverlap_factor] to 0. + +#Note: When the auto waterfall level button is clicked, the following happens: +# [waterfall_min_level] = [current_min_power_level] - [waterfall_auto_level_margin[0]] +# [waterfall_max_level] = [current_max_power_level] + [waterfall_auto_level_margin[1]] +# +# ___|____________________________________|____________________________________|____________________________________|___> signal power +# \_waterfall_auto_level_margin[0]_/ |__ current_min_power_level | \_waterfall_auto_level_margin[1]_/ +# current_max_power_level __| + +# 3D view settings +mathbox_waterfall_frequency_resolution = 128 #bins +mathbox_waterfall_history_length = 10 #seconds +mathbox_waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]" + +# === Experimental settings === +#Warning! The settings below are very experimental. +csdr_dynamic_bufsize = False # This allows you to change the buffering mode of csdr. +csdr_print_bufsizes = False # This prints the buffer sizes used for csdr processes. +csdr_through = False # Setting this True will print out how much data is going into the DSP chains. + +nmux_memory = 50 #in megabytes. This sets the approximate size of the circular buffer used by nmux. + +#Look up external IP address automatically from icanhazip.com, and use it as [server_hostname] +""" +print "[openwebrx-config] Detecting external IP address..." +import urllib2 +server_hostname=urllib2.urlopen("http://icanhazip.com").read()[:-1] +print "[openwebrx-config] External IP address detected:", server_hostname +""" diff --git a/groundstation/config_webrx_145.py b/groundstation/config_webrx_145.py new file mode 100644 index 00000000..549f93f7 --- /dev/null +++ b/groundstation/config_webrx_145.py @@ -0,0 +1,216 @@ +# -*- coding: utf-8 -*- + +""" +config_webrx: configuration options for OpenWebRX + + This file is part of OpenWebRX, + an open-source SDR receiver software with a web UI. + Copyright (c) 2013-2015 by Andras Retzler + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + In addition, as a special exception, the copyright holders + state that config_rtl.py and config_webrx.py are not part of the + Corresponding Source defined in GNU AGPL version 3 section 1. + + (It means that you do not have to redistribute config_rtl.py and + config_webrx.py if you make any changes to these two configuration files, + and use them for running your web service with OpenWebRX.) +""" + +# NOTE: you can find additional information about configuring OpenWebRX in the Wiki: +# https://github.com/simonyiszk/openwebrx/wiki + +# ==== Server settings ==== +web_port=8073 +server_hostname="localhost" # If this contains an incorrect value, the web UI may freeze on load (it can't open websocket) +max_clients=20 + +# ==== Web GUI configuration ==== +receiver_name="ARISS Ground Station" +receiver_location="" +receiver_qra="" +receiver_asl=0 +receiver_ant="monopole" +receiver_device="RTL-SDR" +receiver_admin="ku2y@amsat.org" +receiver_gps=(39.0302,-77.0747) +photo_height=350 +photo_title="ARISS - Amateur Radio on the International Space Station" +photo_desc=""" +You can add your own background photo and receiver information.
+Receiver is operated by: %[RX_ADMIN]
+Device: %[RX_DEVICE]
+Antenna: %[RX_ANT]
+Website: http://localhost +""" + +# ==== sdr.hu listing ==== +# If you want your ham receiver to be listed publicly on sdr.hu, then take the following steps: +# 1. Register at: http://sdr.hu/register +# 2. You will get an unique key by email. Copy it and paste here: +sdrhu_key = "" +# 3. Set this setting to True to enable listing: +sdrhu_public_listing = False + +# ==== DSP/RX settings ==== +fft_fps=9 +fft_size=4096 #Should be power of 2 +fft_voverlap_factor=0.3 #If fft_voverlap_factor is above 0, multiple FFTs will be used for creating a line on the diagram. + +#samp_rate = 250000 +samp_rate = 2400000 +center_freq = 145800000 +rf_gain = 37 #in dB. For an RTL-SDR, rf_gain=0 will set the tuner to auto gain mode, else it will be in manual gain mode. +ppm = 0 + +audio_compression="adpcm" #valid values: "adpcm", "none" +fft_compression="adpcm" #valid values: "adpcm", "none" + +digimodes_enable=False # True #Decoding digimodes come with higher CPU usage. +digimodes_fft_size=1024 + +start_rtl_thread=True + +""" +Note: if you experience audio underruns while CPU usage is 100%, you can: +- decrease `samp_rate`, +- set `fft_voverlap_factor` to 0, +- decrease `fft_fps` and `fft_size`, +- limit the number of users by decreasing `max_clients`. +""" + +# ==== I/Q sources ==== +# (Uncomment the appropriate by removing # characters at the beginning of the corresponding lines.) + +################################################################################################# +# Is my SDR hardware supported? # +# Check here: https://github.com/simonyiszk/openwebrx/wiki#guides-for-receiver-hardware-support # +################################################################################################# + +# You can use other SDR hardware as well, by giving your own command that outputs the I/Q samples... Some examples of configuration are available here (default is RTL-SDR): + +# >> RTL-SDR via rtl_sdr +start_rtl_command="rtl_sdr -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm) +format_conversion="csdr convert_u8_f" + +#lna_gain=8 +#rf_amp=1 +#start_rtl_command="hackrf_transfer -s {samp_rate} -f {center_freq} -g {rf_gain} -l{lna_gain} -a{rf_amp} -r-".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm, rf_amp=rf_amp, lna_gain=lna_gain) +#format_conversion="csdr convert_s8_f" +""" +To use a HackRF, compile the HackRF host tools from its "stdout" branch: + git clone https://github.com/mossmann/hackrf/ + cd hackrf + git fetch + git checkout origin/stdout + cd host + mkdir build + cd build + cmake .. -DINSTALL_UDEV_RULES=ON + make + sudo make install +""" + +# >> Sound card SDR (needs ALSA) +# I did not have the chance to properly test it. +#samp_rate = 96000 +#start_rtl_command="arecord -f S16_LE -r {samp_rate} -c2 -".format(samp_rate=samp_rate) +#format_conversion="csdr convert_s16_f | csdr gain_ff 30" + +# >> /dev/urandom test signal source +# samp_rate = 2400000 +# start_rtl_command="cat /dev/urandom | (pv -qL `python -c 'print int({samp_rate} * 2.2)'` 2>&1)".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate) +# format_conversion="csdr convert_u8_f" + +# >> Pre-recorded raw I/Q file as signal source +# You will have to correctly specify: samp_rate, center_freq, format_conversion in order to correctly play an I/Q file. +#start_rtl_command="(while true; do cat my_iq_file.raw; done) | csdr flowcontrol {sr} 20 ".format(sr=samp_rate*2*1.05) +#format_conversion="csdr convert_u8_f" + +#>> The rx_sdr command works with a variety of SDR harware: RTL-SDR, HackRF, SDRplay, UHD, Airspy, Red Pitaya, audio devices, etc. +# It will auto-detect your SDR hardware if the following tools are installed: +# * the vendor provided driver and library, +# * the vendor-specific SoapySDR wrapper library, +# * and SoapySDR itself. +# Check out this article on the OpenWebRX Wiki: https://github.com/simonyiszk/openwebrx/wiki/Using-rx_tools-with-OpenWebRX/ +#start_rtl_command="rx_sdr -F CF32 -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm) +#format_conversion="" + +# >> gr-osmosdr signal source using GNU Radio (follow this guide: https://github.com/simonyiszk/openwebrx/wiki/Using-GrOsmoSDR-as-signal-source) +#start_rtl_command="cat /tmp/osmocom_fifo" +#format_conversion="" + +# ==== Misc settings ==== + +shown_center_freq = center_freq #you can change this if you use an upconverter + +client_audio_buffer_size = 5 +#increasing client_audio_buffer_size will: +# - also increase the latency +# - decrease the chance of audio underruns + +start_freq = center_freq +start_mod = "nfm" #nfm, am, lsb, usb, cw + +iq_server_port = 4951 #TCP port for ncat to listen on. It will send I/Q data over its connections, for internal use in OpenWebRX. It is only accessible from the localhost by default. + +#access_log = "~/openwebrx_access.log" + +# ==== Color themes ==== + +#A guide is available to help you set these values: https://github.com/simonyiszk/openwebrx/wiki/Calibrating-waterfall-display-levels + +### default theme by teejez: +waterfall_colors = "[0x000000ff,0x0000ffff,0x00ffffff,0x00ff00ff,0xffff00ff,0xff0000ff,0xff00ffff,0xffffffff]" +waterfall_min_level = -88 #in dB +waterfall_max_level = -20 +waterfall_auto_level_margin = (5, 40) +### old theme by HA7ILM: +#waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]" +#waterfall_min_level = -115 #in dB +#waterfall_max_level = 0 +#waterfall_auto_level_margin = (20, 30) +##For the old colors, you might also want to set [fft_voverlap_factor] to 0. + +#Note: When the auto waterfall level button is clicked, the following happens: +# [waterfall_min_level] = [current_min_power_level] - [waterfall_auto_level_margin[0]] +# [waterfall_max_level] = [current_max_power_level] + [waterfall_auto_level_margin[1]] +# +# ___|____________________________________|____________________________________|____________________________________|___> signal power +# \_waterfall_auto_level_margin[0]_/ |__ current_min_power_level | \_waterfall_auto_level_margin[1]_/ +# current_max_power_level __| + +# 3D view settings +mathbox_waterfall_frequency_resolution = 128 #bins +mathbox_waterfall_history_length = 10 #seconds +mathbox_waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]" + +# === Experimental settings === +#Warning! The settings below are very experimental. +csdr_dynamic_bufsize = False # This allows you to change the buffering mode of csdr. +csdr_print_bufsizes = False # This prints the buffer sizes used for csdr processes. +csdr_through = False # Setting this True will print out how much data is going into the DSP chains. + +nmux_memory = 50 #in megabytes. This sets the approximate size of the circular buffer used by nmux. + +#Look up external IP address automatically from icanhazip.com, and use it as [server_hostname] +""" +print "[openwebrx-config] Detecting external IP address..." +import urllib2 +server_hostname=urllib2.urlopen("http://icanhazip.com").read()[:-1] +print "[openwebrx-config] External IP address detected:", server_hostname +""" diff --git a/groundstation/config_webrx_440.py b/groundstation/config_webrx_440.py new file mode 100644 index 00000000..d0725a9b --- /dev/null +++ b/groundstation/config_webrx_440.py @@ -0,0 +1,216 @@ +# -*- coding: utf-8 -*- + +""" +config_webrx: configuration options for OpenWebRX + + This file is part of OpenWebRX, + an open-source SDR receiver software with a web UI. + Copyright (c) 2013-2015 by Andras Retzler + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + In addition, as a special exception, the copyright holders + state that config_rtl.py and config_webrx.py are not part of the + Corresponding Source defined in GNU AGPL version 3 section 1. + + (It means that you do not have to redistribute config_rtl.py and + config_webrx.py if you make any changes to these two configuration files, + and use them for running your web service with OpenWebRX.) +""" + +# NOTE: you can find additional information about configuring OpenWebRX in the Wiki: +# https://github.com/simonyiszk/openwebrx/wiki + +# ==== Server settings ==== +web_port=8073 +server_hostname="localhost" # If this contains an incorrect value, the web UI may freeze on load (it can't open websocket) +max_clients=20 + +# ==== Web GUI configuration ==== +receiver_name="ARISS Ground Station" +receiver_location="" +receiver_qra="" +receiver_asl=0 +receiver_ant="monopole" +receiver_device="RTL-SDR" +receiver_admin="ku2y@amsat.org" +receiver_gps=(39.0302,-77.0747) +photo_height=350 +photo_title="ARISS - Amateur Radio on the International Space Station" +photo_desc=""" +You can add your own background photo and receiver information.
+Receiver is operated by: %[RX_ADMIN]
+Device: %[RX_DEVICE]
+Antenna: %[RX_ANT]
+Website: http://localhost +""" + +# ==== sdr.hu listing ==== +# If you want your ham receiver to be listed publicly on sdr.hu, then take the following steps: +# 1. Register at: http://sdr.hu/register +# 2. You will get an unique key by email. Copy it and paste here: +sdrhu_key = "" +# 3. Set this setting to True to enable listing: +sdrhu_public_listing = False + +# ==== DSP/RX settings ==== +fft_fps=9 +fft_size=4096 #Should be power of 2 +fft_voverlap_factor=0.3 #If fft_voverlap_factor is above 0, multiple FFTs will be used for creating a line on the diagram. + +samp_rate = 250000 +# samp_rate = 2400000 +center_freq = 440450000 +rf_gain = 37 #in dB. For an RTL-SDR, rf_gain=0 will set the tuner to auto gain mode, else it will be in manual gain mode. +ppm = 0 + +audio_compression="adpcm" #valid values: "adpcm", "none" +fft_compression="adpcm" #valid values: "adpcm", "none" + +digimodes_enable=False # True #Decoding digimodes come with higher CPU usage. +digimodes_fft_size=1024 + +start_rtl_thread=True + +""" +Note: if you experience audio underruns while CPU usage is 100%, you can: +- decrease `samp_rate`, +- set `fft_voverlap_factor` to 0, +- decrease `fft_fps` and `fft_size`, +- limit the number of users by decreasing `max_clients`. +""" + +# ==== I/Q sources ==== +# (Uncomment the appropriate by removing # characters at the beginning of the corresponding lines.) + +################################################################################################# +# Is my SDR hardware supported? # +# Check here: https://github.com/simonyiszk/openwebrx/wiki#guides-for-receiver-hardware-support # +################################################################################################# + +# You can use other SDR hardware as well, by giving your own command that outputs the I/Q samples... Some examples of configuration are available here (default is RTL-SDR): + +# >> RTL-SDR via rtl_sdr +start_rtl_command="rtl_sdr -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm) +format_conversion="csdr convert_u8_f" + +#lna_gain=8 +#rf_amp=1 +#start_rtl_command="hackrf_transfer -s {samp_rate} -f {center_freq} -g {rf_gain} -l{lna_gain} -a{rf_amp} -r-".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm, rf_amp=rf_amp, lna_gain=lna_gain) +#format_conversion="csdr convert_s8_f" +""" +To use a HackRF, compile the HackRF host tools from its "stdout" branch: + git clone https://github.com/mossmann/hackrf/ + cd hackrf + git fetch + git checkout origin/stdout + cd host + mkdir build + cd build + cmake .. -DINSTALL_UDEV_RULES=ON + make + sudo make install +""" + +# >> Sound card SDR (needs ALSA) +# I did not have the chance to properly test it. +#samp_rate = 96000 +#start_rtl_command="arecord -f S16_LE -r {samp_rate} -c2 -".format(samp_rate=samp_rate) +#format_conversion="csdr convert_s16_f | csdr gain_ff 30" + +# >> /dev/urandom test signal source +# samp_rate = 2400000 +# start_rtl_command="cat /dev/urandom | (pv -qL `python -c 'print int({samp_rate} * 2.2)'` 2>&1)".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate) +# format_conversion="csdr convert_u8_f" + +# >> Pre-recorded raw I/Q file as signal source +# You will have to correctly specify: samp_rate, center_freq, format_conversion in order to correctly play an I/Q file. +#start_rtl_command="(while true; do cat my_iq_file.raw; done) | csdr flowcontrol {sr} 20 ".format(sr=samp_rate*2*1.05) +#format_conversion="csdr convert_u8_f" + +#>> The rx_sdr command works with a variety of SDR harware: RTL-SDR, HackRF, SDRplay, UHD, Airspy, Red Pitaya, audio devices, etc. +# It will auto-detect your SDR hardware if the following tools are installed: +# * the vendor provided driver and library, +# * the vendor-specific SoapySDR wrapper library, +# * and SoapySDR itself. +# Check out this article on the OpenWebRX Wiki: https://github.com/simonyiszk/openwebrx/wiki/Using-rx_tools-with-OpenWebRX/ +#start_rtl_command="rx_sdr -F CF32 -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm) +#format_conversion="" + +# >> gr-osmosdr signal source using GNU Radio (follow this guide: https://github.com/simonyiszk/openwebrx/wiki/Using-GrOsmoSDR-as-signal-source) +#start_rtl_command="cat /tmp/osmocom_fifo" +#format_conversion="" + +# ==== Misc settings ==== + +shown_center_freq = center_freq #you can change this if you use an upconverter + +client_audio_buffer_size = 5 +#increasing client_audio_buffer_size will: +# - also increase the latency +# - decrease the chance of audio underruns + +start_freq = center_freq +start_mod = "nfm" #nfm, am, lsb, usb, cw + +iq_server_port = 4951 #TCP port for ncat to listen on. It will send I/Q data over its connections, for internal use in OpenWebRX. It is only accessible from the localhost by default. + +#access_log = "~/openwebrx_access.log" + +# ==== Color themes ==== + +#A guide is available to help you set these values: https://github.com/simonyiszk/openwebrx/wiki/Calibrating-waterfall-display-levels + +### default theme by teejez: +waterfall_colors = "[0x000000ff,0x0000ffff,0x00ffffff,0x00ff00ff,0xffff00ff,0xff0000ff,0xff00ffff,0xffffffff]" +waterfall_min_level = -88 #in dB +waterfall_max_level = -20 +waterfall_auto_level_margin = (5, 40) +### old theme by HA7ILM: +#waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]" +#waterfall_min_level = -115 #in dB +#waterfall_max_level = 0 +#waterfall_auto_level_margin = (20, 30) +##For the old colors, you might also want to set [fft_voverlap_factor] to 0. + +#Note: When the auto waterfall level button is clicked, the following happens: +# [waterfall_min_level] = [current_min_power_level] - [waterfall_auto_level_margin[0]] +# [waterfall_max_level] = [current_max_power_level] + [waterfall_auto_level_margin[1]] +# +# ___|____________________________________|____________________________________|____________________________________|___> signal power +# \_waterfall_auto_level_margin[0]_/ |__ current_min_power_level | \_waterfall_auto_level_margin[1]_/ +# current_max_power_level __| + +# 3D view settings +mathbox_waterfall_frequency_resolution = 128 #bins +mathbox_waterfall_history_length = 10 #seconds +mathbox_waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]" + +# === Experimental settings === +#Warning! The settings below are very experimental. +csdr_dynamic_bufsize = False # This allows you to change the buffering mode of csdr. +csdr_print_bufsizes = False # This prints the buffer sizes used for csdr processes. +csdr_through = False # Setting this True will print out how much data is going into the DSP chains. + +nmux_memory = 50 #in megabytes. This sets the approximate size of the circular buffer used by nmux. + +#Look up external IP address automatically from icanhazip.com, and use it as [server_hostname] +""" +print "[openwebrx-config] Detecting external IP address..." +import urllib2 +server_hostname=urllib2.urlopen("http://icanhazip.com").read()[:-1] +print "[openwebrx-config] External IP address detected:", server_hostname +""" diff --git a/groundstation/config_webrx_fm.py b/groundstation/config_webrx_fm.py new file mode 100644 index 00000000..fbe61561 --- /dev/null +++ b/groundstation/config_webrx_fm.py @@ -0,0 +1,216 @@ +# -*- coding: utf-8 -*- + +""" +config_webrx: configuration options for OpenWebRX + + This file is part of OpenWebRX, + an open-source SDR receiver software with a web UI. + Copyright (c) 2013-2015 by Andras Retzler + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + In addition, as a special exception, the copyright holders + state that config_rtl.py and config_webrx.py are not part of the + Corresponding Source defined in GNU AGPL version 3 section 1. + + (It means that you do not have to redistribute config_rtl.py and + config_webrx.py if you make any changes to these two configuration files, + and use them for running your web service with OpenWebRX.) +""" + +# NOTE: you can find additional information about configuring OpenWebRX in the Wiki: +# https://github.com/simonyiszk/openwebrx/wiki + +# ==== Server settings ==== +web_port=8073 +server_hostname="localhost" # If this contains an incorrect value, the web UI may freeze on load (it can't open websocket) +max_clients=20 + +# ==== Web GUI configuration ==== +receiver_name="AMSATCubeSat Simulator Ground Station" +receiver_location="" +receiver_qra="" +receiver_asl=0 +receiver_ant="monopole" +receiver_device="RTL-SDR" +receiver_admin="ku2y@amsat.org" +receiver_gps=(39.0302,-77.0747) +photo_height=350 +photo_title="ARISS - Amateur Radio on the International Space Station" +photo_desc=""" +You can add your own background photo and receiver information.
+Receiver is operated by: %[RX_ADMIN]
+Device: %[RX_DEVICE]
+Antenna: %[RX_ANT]
+Website: http://localhost +""" + +# ==== sdr.hu listing ==== +# If you want your ham receiver to be listed publicly on sdr.hu, then take the following steps: +# 1. Register at: http://sdr.hu/register +# 2. You will get an unique key by email. Copy it and paste here: +sdrhu_key = "" +# 3. Set this setting to True to enable listing: +sdrhu_public_listing = False + +# ==== DSP/RX settings ==== +fft_fps=9 +fft_size=4096 #Should be power of 2 +fft_voverlap_factor=0.3 #If fft_voverlap_factor is above 0, multiple FFTs will be used for creating a line on the diagram. + +samp_rate = 250000 +# samp_rate = 2400000 +center_freq = 128000000 +rf_gain = 37 #in dB. For an RTL-SDR, rf_gain=0 will set the tuner to auto gain mode, else it will be in manual gain mode. +ppm = 0 + +audio_compression="adpcm" #valid values: "adpcm", "none" +fft_compression="adpcm" #valid values: "adpcm", "none" + +digimodes_enable=False # True #Decoding digimodes come with higher CPU usage. +digimodes_fft_size=1024 + +start_rtl_thread=True + +""" +Note: if you experience audio underruns while CPU usage is 100%, you can: +- decrease `samp_rate`, +- set `fft_voverlap_factor` to 0, +- decrease `fft_fps` and `fft_size`, +- limit the number of users by decreasing `max_clients`. +""" + +# ==== I/Q sources ==== +# (Uncomment the appropriate by removing # characters at the beginning of the corresponding lines.) + +################################################################################################# +# Is my SDR hardware supported? # +# Check here: https://github.com/simonyiszk/openwebrx/wiki#guides-for-receiver-hardware-support # +################################################################################################# + +# You can use other SDR hardware as well, by giving your own command that outputs the I/Q samples... Some examples of configuration are available here (default is RTL-SDR): + +# >> RTL-SDR via rtl_sdr +start_rtl_command="rtl_sdr -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm) +format_conversion="csdr convert_u8_f" + +#lna_gain=8 +#rf_amp=1 +#start_rtl_command="hackrf_transfer -s {samp_rate} -f {center_freq} -g {rf_gain} -l{lna_gain} -a{rf_amp} -r-".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm, rf_amp=rf_amp, lna_gain=lna_gain) +#format_conversion="csdr convert_s8_f" +""" +To use a HackRF, compile the HackRF host tools from its "stdout" branch: + git clone https://github.com/mossmann/hackrf/ + cd hackrf + git fetch + git checkout origin/stdout + cd host + mkdir build + cd build + cmake .. -DINSTALL_UDEV_RULES=ON + make + sudo make install +""" + +# >> Sound card SDR (needs ALSA) +# I did not have the chance to properly test it. +#samp_rate = 96000 +#start_rtl_command="arecord -f S16_LE -r {samp_rate} -c2 -".format(samp_rate=samp_rate) +#format_conversion="csdr convert_s16_f | csdr gain_ff 30" + +# >> /dev/urandom test signal source +# samp_rate = 2400000 +# start_rtl_command="cat /dev/urandom | (pv -qL `python -c 'print int({samp_rate} * 2.2)'` 2>&1)".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate) +# format_conversion="csdr convert_u8_f" + +# >> Pre-recorded raw I/Q file as signal source +# You will have to correctly specify: samp_rate, center_freq, format_conversion in order to correctly play an I/Q file. +#start_rtl_command="(while true; do cat my_iq_file.raw; done) | csdr flowcontrol {sr} 20 ".format(sr=samp_rate*2*1.05) +#format_conversion="csdr convert_u8_f" + +#>> The rx_sdr command works with a variety of SDR harware: RTL-SDR, HackRF, SDRplay, UHD, Airspy, Red Pitaya, audio devices, etc. +# It will auto-detect your SDR hardware if the following tools are installed: +# * the vendor provided driver and library, +# * the vendor-specific SoapySDR wrapper library, +# * and SoapySDR itself. +# Check out this article on the OpenWebRX Wiki: https://github.com/simonyiszk/openwebrx/wiki/Using-rx_tools-with-OpenWebRX/ +#start_rtl_command="rx_sdr -F CF32 -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm) +#format_conversion="" + +# >> gr-osmosdr signal source using GNU Radio (follow this guide: https://github.com/simonyiszk/openwebrx/wiki/Using-GrOsmoSDR-as-signal-source) +#start_rtl_command="cat /tmp/osmocom_fifo" +#format_conversion="" + +# ==== Misc settings ==== + +shown_center_freq = center_freq #you can change this if you use an upconverter + +client_audio_buffer_size = 5 +#increasing client_audio_buffer_size will: +# - also increase the latency +# - decrease the chance of audio underruns + +start_freq = center_freq +start_mod = "nfm" #nfm, am, lsb, usb, cw + +iq_server_port = 4951 #TCP port for ncat to listen on. It will send I/Q data over its connections, for internal use in OpenWebRX. It is only accessible from the localhost by default. + +#access_log = "~/openwebrx_access.log" + +# ==== Color themes ==== + +#A guide is available to help you set these values: https://github.com/simonyiszk/openwebrx/wiki/Calibrating-waterfall-display-levels + +### default theme by teejez: +waterfall_colors = "[0x000000ff,0x0000ffff,0x00ffffff,0x00ff00ff,0xffff00ff,0xff0000ff,0xff00ffff,0xffffffff]" +waterfall_min_level = -88 #in dB +waterfall_max_level = -20 +waterfall_auto_level_margin = (5, 40) +### old theme by HA7ILM: +#waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]" +#waterfall_min_level = -115 #in dB +#waterfall_max_level = 0 +#waterfall_auto_level_margin = (20, 30) +##For the old colors, you might also want to set [fft_voverlap_factor] to 0. + +#Note: When the auto waterfall level button is clicked, the following happens: +# [waterfall_min_level] = [current_min_power_level] - [waterfall_auto_level_margin[0]] +# [waterfall_max_level] = [current_max_power_level] + [waterfall_auto_level_margin[1]] +# +# ___|____________________________________|____________________________________|____________________________________|___> signal power +# \_waterfall_auto_level_margin[0]_/ |__ current_min_power_level | \_waterfall_auto_level_margin[1]_/ +# current_max_power_level __| + +# 3D view settings +mathbox_waterfall_frequency_resolution = 128 #bins +mathbox_waterfall_history_length = 10 #seconds +mathbox_waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]" + +# === Experimental settings === +#Warning! The settings below are very experimental. +csdr_dynamic_bufsize = False # This allows you to change the buffering mode of csdr. +csdr_print_bufsizes = False # This prints the buffer sizes used for csdr processes. +csdr_through = False # Setting this True will print out how much data is going into the DSP chains. + +nmux_memory = 50 #in megabytes. This sets the approximate size of the circular buffer used by nmux. + +#Look up external IP address automatically from icanhazip.com, and use it as [server_hostname] +""" +print "[openwebrx-config] Detecting external IP address..." +import urllib2 +server_hostname=urllib2.urlopen("http://icanhazip.com").read()[:-1] +print "[openwebrx-config] External IP address detected:", server_hostname +""" diff --git a/groundstation/cubesatsim-lite-alt.sh b/groundstation/cubesatsim-lite-alt.sh new file mode 100755 index 00000000..9ad01561 --- /dev/null +++ b/groundstation/cubesatsim-lite-alt.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# script to run CubeSat Simulator Lite +# +# on SDR application, listen at 107.9 + +echo -e "\nScript to run CubeSat Simulator Lite \n" + +sudo /home/pi/CubeSatSim/PiFmRds/src/pi_fm_rds -audio /home/pi/CubeSatSim/wav/afsk2.wav -freq 107.5 diff --git a/groundstation/cubesatsim-lite.sh b/groundstation/cubesatsim-lite.sh new file mode 100755 index 00000000..5a048954 --- /dev/null +++ b/groundstation/cubesatsim-lite.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# script to run CubeSat Simulator Lite +# +# on SDR application, listen at 107.9 + +echo -e "\nScript to run CubeSat Simulator Lite \n" + +sudo /home/pi/CubeSatSim/PiFmRds/src/pi_fm_rds -audio /home/pi/CubeSatSim/wav/afsk2.wav -freq 107.9 diff --git a/groundstation/decode-lite.sh b/groundstation/decode-lite.sh new file mode 100755 index 00000000..4db99571 --- /dev/null +++ b/groundstation/decode-lite.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# script to auto decode CubeSat Simulator telemetry + +# kill openwebrx if it is running +ps -ef | grep rtl | grep -v grep | awk '{print $2}' | sudo xargs kill + +echo -e "Script to auto decode CubeSat Simulator telemetry\n" + +sudo rtl_fm -f 107.906M -M wbfm -s 70000 -g 48 - | multimon-ng -a AFSK1200 -A -t raw - + diff --git a/groundstation/decode.sh b/groundstation/decode.sh new file mode 100755 index 00000000..44db5a06 --- /dev/null +++ b/groundstation/decode.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# script to auto decode CubeSat Simulator telemetry + +# kill openwebrx if it is running +ps -ef | grep rtl | grep -v grep | awk '{print $2}' | sudo xargs kill + +echo -e "Script to auto decode CubeSat Simulator telemetry\n" + +sudo rtl_fm -f 440.386M -s 22050 -g 48 - | multimon-ng -a AFSK1200 -A -t raw - + diff --git a/groundstation/default.conf b/groundstation/default.conf new file mode 100644 index 00000000..7f3e052c --- /dev/null +++ b/groundstation/default.conf @@ -0,0 +1,33 @@ +[General] +configversion=2 +crashed=false + +[audio] +gain=224 +udp_host=localhost + +[fft] +fft_size=4096 +split=40 + +[gui] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x2\0\0\0\0\0\0\0\0\0$\0\0\x3\xff\0\0\x2\xff\0\0\0\0\0\0\0\x42\0\0\x2\xe8\0\0\x2\xed\0\0\0\0\x2\0\0\0\x4\0) +state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x2\0\0\0\x1\0\0\x1&\0\0\x2\x65\xfc\x2\0\0\0\x2\xfc\0\0\0\x41\0\0\x1\x90\0\0\x1\x83\0\b\0 \xfa\0\0\0\x1\x2\0\0\0\x3\xfb\0\0\0\x18\0\x44\0o\0\x63\0k\0I\0n\0p\0u\0t\0\x43\0t\0l\x1\0\0\0\0\xff\xff\xff\xff\0\0\x1.\0\xff\xff\xff\xfb\0\0\0\x12\0\x44\0o\0\x63\0k\0R\0x\0O\0p\0t\x1\0\0\0\0\xff\xff\xff\xff\0\0\x1\x62\0\a\xff\xff\xfb\0\0\0\xe\0\x44\0o\0\x63\0k\0\x46\0\x66\0t\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\xc8\0\a\xff\xff\xfc\0\0\x1\xd7\0\0\0\xcf\0\0\0\xc8\0\xff\xff\xff\xfa\0\0\0\0\x2\0\0\0\x2\xfb\0\0\0\x12\0\x44\0o\0\x63\0k\0\x41\0u\0\x64\0i\0o\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\xc8\0\xff\xff\xff\xfb\0\0\0\xe\0\x44\0o\0\x63\0k\0R\0\x44\0S\0\0\0\0\0\xff\xff\xff\xff\0\0\0h\0\xff\xff\xff\0\0\0\x3\0\0\x2\xd4\0\0\0\xe9\xfc\x1\0\0\0\x1\xfb\0\0\0\x1a\0\x44\0o\0\x63\0k\0\x42\0o\0o\0k\0m\0\x61\0r\0k\0s\x1\0\0\0\0\0\0\x2\xd4\0\0\x1\x42\0\xff\xff\xff\0\0\x2\xd4\0\0\x1v\0\0\0\x1\0\0\0\x2\0\0\0\b\0\0\0\x2\xfc\0\0\0\x1\0\0\0\x2\0\0\0\x1\0\0\0\x16\0m\0\x61\0i\0n\0T\0o\0o\0l\0\x42\0\x61\0r\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0) + +[input] +device="rtl=0" +frequency=145800000 +gains=@Variant(\0\0\0\b\0\0\0\x1\0\0\0\x6\0L\0N\0\x41\0\0\0\x2\0\0\x1\xf0) +sample_rate=512000 + +[receiver] +agc_decay=100 +agc_off=true +demod=3 +filter_high_cut=5000 +filter_low_cut=-5000 +offset=-202000 +sql_level=-42.5 + +[remote_control] +allowed_hosts=::ffff:127.0.0.1 diff --git a/groundstation/gqrx.sh b/groundstation/gqrx.sh new file mode 100755 index 00000000..7e995d2e --- /dev/null +++ b/groundstation/gqrx.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# script to auto decode CubeSat Simulator telemetry + +# kill rtl if running +ps -ef | grep rtl | grep -v grep | awk '{print $2}' | sudo xargs kill + +# kill openwebrx process if running +ps -ef | grep openwebrx | grep -v grep | awk '{print $2}' | sudo xargs kill + +# kill csdr process if running +ps -ef | grep csdr | grep -v grep | awk '{print $2}' | sudo xargs kill + +echo -e "Script to run Gqrx\n" + +/home/pi/gqrx-sdr-2.11.5-linux-rpi3/gqrx + diff --git a/groundstation/ipaddress.sh b/groundstation/ipaddress.sh new file mode 100755 index 00000000..2b8d15e9 --- /dev/null +++ b/groundstation/ipaddress.sh @@ -0,0 +1,3 @@ +echo -e "IP Address of this Pi is: " + +hostname -I|cut -f1 -d ' ' diff --git a/groundstation/kill_all.sh b/groundstation/kill_all.sh new file mode 100755 index 00000000..2d9970ec --- /dev/null +++ b/groundstation/kill_all.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# script to kill all SDR or RTL processes +# + +echo -e "\nKilling all SDR or RTL processes \n" + +# kill rtl if running +ps -ef | grep rtl_ | grep -v grep | awk '{print $2}' | sudo xargs kill > /dev/null 2>&1 + +# kill openwebrx process if running +ps -ef | grep openwebrx | grep -v grep | awk '{print $2}' | sudo xargs kill > /dev/null 2>&1 + +# kill csdr process if running +ps -ef | grep csdr | grep -v grep | awk '{print $2}' | sudo xargs kill > /dev/null 2>&1 + +# kill gqrx process if running +ps -ef | grep gqrx-sdr-2.11.5-linux-rpi3/gqrx | grep -v grep | awk '{print $2}' | sudo xargs kill > /dev/null 2>&1 + + diff --git a/groundstation/rtl-tcp-alt.sh b/groundstation/rtl-tcp-alt.sh new file mode 100755 index 00000000..53cb0d6a --- /dev/null +++ b/groundstation/rtl-tcp-alt.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# script to run RTL-TCP Server +# +# On SDR client, use 10.3.141.1:1234 to connect + +echo -e "\nScript to run RTL-TCP Server for ARISS Ground Station\n" + +echo -e "IP Address to use in web browsers is: " + +hostname -I|cut -f1 -d ' ' + +./kill_all.sh + +sudo /bin/sh -c '/usr/local/bin/rtl_tcp -a $(hostname -I|cut -f2 -d " ")' diff --git a/groundstation/rtl-tcp.sh b/groundstation/rtl-tcp.sh new file mode 100755 index 00000000..9559643c --- /dev/null +++ b/groundstation/rtl-tcp.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# script to run RTL-TCP Server +# +# On SDR client, use 10.3.141.1:1234 to connect + +echo -e "\nScript to run RTL-TCP Server for ARISS Ground Station\n" + +echo -e "IP Address to use in web browsers is: " + +hostname -I|cut -f1 -d ' ' + +./kill_all.sh + +sudo /bin/sh -c '/usr/local/bin/rtl_tcp -a $(hostname -I|cut -f1 -d " ")' diff --git a/groundstation/satnogs_readme.txt b/groundstation/satnogs_readme.txt new file mode 100644 index 00000000..21f0ef05 --- /dev/null +++ b/groundstation/satnogs_readme.txt @@ -0,0 +1,19 @@ +This image has the SatNOGS client pre installed. It allows you to join the Satellite Network Operators Group network: + +https://network.satnogs.org + +To join, all you have to do is follow the instructions starting at SatNOGS Client Setup + +https://wiki.satnogs.org/SatNOGS_Client_Ansible#SatNOGS_Client_Setup + +You will need to Sign Up and create an account: + +https://network.satnogs.org/login/auth0 + +Maybe include "ARISS" in your SatNOGS station name? For example: Joe's ARISS GS + +Once you have an account and have logged in, click on the upper right corner and select Dashboard. Click on the API Key button to copy and paste your API Key which you will need to configure using sudo satnogs-setup Basic Configuration SATNOGS_API_TOKEN + +Good luck and feel free to message me ku2y on SatNOGS! + + diff --git a/groundstation/sdr-2m.sh b/groundstation/sdr-2m.sh new file mode 100755 index 00000000..429cb736 --- /dev/null +++ b/groundstation/sdr-2m.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# script to run OpenWebRX SDR + +echo -e "\nScript to run SDR for ARISS Ground Station\n" + +echo -e "IP Address to use in web browsers is: " + +hostname -I|cut -f1 -d ' ' + + +./kill_all.sh + +cd ~/openwebrx + +chromium-browser http://localhost:8073 & + +sudo python openwebrx.py config_webrx_145 diff --git a/groundstation/sdr-70cm.sh b/groundstation/sdr-70cm.sh new file mode 100755 index 00000000..e0895206 --- /dev/null +++ b/groundstation/sdr-70cm.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# script to run OpenWebRX SDR + +echo -e "\nScript to run SDR for ARISS Ground Station\n" + +echo -e "IP Address to use in web browsers is: " + +hostname -I|cut -f1 -d ' ' + + +./kill_all.sh + +./kill_all.sh + +cd ~/openwebrx + +chromium-browser http://localhost:8073 & + +sudo python openwebrx.py config_webrx_440 diff --git a/groundstation/sdr-fm.sh b/groundstation/sdr-fm.sh new file mode 100755 index 00000000..188db296 --- /dev/null +++ b/groundstation/sdr-fm.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# script to run OpenWebRX SDR + +echo -e "\nScript to run SDR for ARISS Ground Station\n" + +echo -e "IP Address to use in web browsers is: " + +hostname -I|cut -f1 -d ' ' + + +./kill_all.sh + +cd ~/openwebrx + +chromium-browser http://localhost:8073 & + +sudo python openwebrx.py config_webrx_107 + diff --git a/groundstation/sdr.sh b/groundstation/sdr.sh new file mode 100755 index 00000000..03efef13 --- /dev/null +++ b/groundstation/sdr.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# script to run OpenWebRX SDR + +echo -e "\nScript to run SDR for CubeSat Simulator\n" + +echo -e "IP Address to use in web browsers is: " + +hostname -I|cut -f1 -d ' ' + +# kill rtl if running +ps -ef | grep rtl | grep -v grep | awk '{print $2}' | sudo xargs kill + +# kill openwebrx process if running +ps -ef | grep openwebrx | grep -v grep | awk '{print $2}' | sudo xargs kill + +cd ~/openwebrx + +sudo python openwebrx.py diff --git a/openwrt/rtl_tcp b/openwrt/rtl_tcp new file mode 100644 index 00000000..d8f9e244 --- /dev/null +++ b/openwrt/rtl_tcp @@ -0,0 +1,12 @@ +config rtl_tcp main + option disabled '0' + option respawn '1' + option device_index '' + option address '192.168.8.1' + option port '' + option frequency '440386000' + option gain '30' + option samplerate '' + option buffers '8' + option num_linked_lists '8' + option ppm_error '' diff --git a/python/telem.py b/python/telem.py index 1e629d96..283a5882 100644 --- a/python/telem.py +++ b/python/telem.py @@ -24,8 +24,10 @@ try: from ina219 import INA219 from ina219 import DeviceRangeError INA219DISABLE=-1 + except: INA219DISABLE=1 + print"python package ina219 import failed! Install by typing: sudo pip install pi-ina219==1.1.0" if INA219DISABLE !=1: try: @@ -83,10 +85,11 @@ if INA219DISABLE !=1: ina4a.sleep(); except: FAIL = 1 -print -print "+X (0x40) v=",ina40v, "V i=", ina40i, "mA p=", ina40p, "mW " -print "+Y (0x41) v=",ina41v, "V i=", ina41i, "mA p=", ina41p, "mW " -print "+Z (0x44) v=",ina44v, "V i=", ina44i, "mA p=", ina44p, "mW " -print "Battery (0x45) v=",ina45v, "V i=", ina45i, "mA p=", ina45p, "mW " -print "5V Supply(0x4a) v=",ina4av, "V i=", ina4ai, "mA p=", ina4ap, "mW " -print +if INA219DISABLE !=1: + print + print "+X (0x40) v=",ina40v, "V i=", ina40i, "mA p=", ina40p, "mW " + print "+Y (0x41) v=",ina41v, "V i=", ina41i, "mA p=", ina41p, "mW " + print "+Z (0x44) v=",ina44v, "V i=", ina44i, "mA p=", ina44p, "mW " + print "Battery (0x45) v=",ina45v, "V i=", ina45i, "mA p=", ina45p, "mW " + print "5V Supply(0x4a) v=",ina4av, "V i=", ina4ai, "mA p=", ina4ap, "mW " + print diff --git a/sdr/frequencies.xml b/sdr/frequencies.xml new file mode 100644 index 00000000..ddf1a806 --- /dev/null +++ b/sdr/frequencies.xml @@ -0,0 +1,12 @@ + + + + true + AMSAT CubeSat Simulator/Name> + Misc + 440389653 + NFM + 0 + 13730 + + \ No newline at end of file diff --git a/spreadsheet/CubeSatSim TLM Analysis - Experimental.xlsx b/spreadsheet/CubeSatSim TLM Analysis - Experimental.xlsx new file mode 100644 index 00000000..04047ff1 Binary files /dev/null and b/spreadsheet/CubeSatSim TLM Analysis - Experimental.xlsx differ diff --git a/spreadsheet/CubeSatSim TLM Analysis.xlsx b/spreadsheet/CubeSatSim TLM Analysis.xlsx index e82382bb..d8e6dd82 100644 Binary files a/spreadsheet/CubeSatSim TLM Analysis.xlsx and b/spreadsheet/CubeSatSim TLM Analysis.xlsx differ diff --git a/spreadsheet/readme.txt b/spreadsheet/readme.txt index 8a1ac778..f0b13413 100644 --- a/spreadsheet/readme.txt +++ b/spreadsheet/readme.txt @@ -4,7 +4,7 @@ It has been tested with Office 365 (Windows) and Office Excel for Mac (Version: A version for Google Docs is available for copying and download at: - https://docs.google.com/spreadsheets/d/1JvvqCAMaiAT45BoUndiS_DKVOUskV6dXG9W9Ys_21Gw/edit?usp=sharing + http://cubesatsim.org/telem Instructions: diff --git a/wav/afsk5.wav b/wav/afsk5.wav new file mode 100644 index 00000000..bd735817 Binary files /dev/null and b/wav/afsk5.wav differ diff --git a/wav/afsk6.wav b/wav/afsk6.wav new file mode 100644 index 00000000..50ccb21a Binary files /dev/null and b/wav/afsk6.wav differ