commit
35701f1e01
@ -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.
|
||||||
|
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
// Wire Master Reader
|
||||||
|
// by Nicholas Zambetti <http://www.zambetti.com>
|
||||||
|
|
||||||
|
// Demonstrates use of the Wire library
|
||||||
|
// Reads data from an I2C/TWI slave device
|
||||||
|
// Refer to the "Wire Slave Sender" example for use with this
|
||||||
|
|
||||||
|
// Created 29 March 2006
|
||||||
|
|
||||||
|
// This example code is in the public domain.
|
||||||
|
|
||||||
|
// modified by Alan Johnston to show reading registers 0 - 3
|
||||||
|
// code based on https://forum.arduino.cc/index.php?topic=211587.0
|
||||||
|
//
|
||||||
|
// This code is to simulate the Raspberry Pi acting as I2C bus master
|
||||||
|
|
||||||
|
#include <Wire.h>
|
||||||
|
#define I2C_ADDRESS 0x4B
|
||||||
|
#define REGISTER_0 0x00
|
||||||
|
#define REGISTER_1 0x01
|
||||||
|
#define REGISTER_2 0x02
|
||||||
|
#define REGISTER_3 0x03
|
||||||
|
|
||||||
|
uint8_t reg; // I2C read register
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Wire.begin(); // join i2c bus (address optional for master)
|
||||||
|
Serial.begin(9600); // start serial for output
|
||||||
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
|
Serial.println("Starting");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
for (reg=0; reg < 4; reg++) {
|
||||||
|
delay(5000);
|
||||||
|
digitalWrite(LED_BUILTIN, HIGH);
|
||||||
|
Wire.beginTransmission(I2C_ADDRESS);
|
||||||
|
Wire.write(reg);
|
||||||
|
Wire.endTransmission();
|
||||||
|
delay(100);
|
||||||
|
digitalWrite(LED_BUILTIN, LOW);
|
||||||
|
|
||||||
|
|
||||||
|
Wire.requestFrom(I2C_ADDRESS, 2); // request 2 bytes from I2C device
|
||||||
|
byte LSB = Wire.read();
|
||||||
|
byte MSB = Wire.read();
|
||||||
|
|
||||||
|
uint16_t register_value = ((MSB << 8) | LSB);
|
||||||
|
|
||||||
|
Serial.print("Read ");
|
||||||
|
Serial.print(register_value, HEX); // display register value in HEXADECIMAL
|
||||||
|
Serial.print(" from register ");
|
||||||
|
Serial.println(reg);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,75 @@
|
|||||||
|
// Arduino I2C slave for reading 16 bit registers
|
||||||
|
//
|
||||||
|
// by Alan Johnston
|
||||||
|
//
|
||||||
|
// based on
|
||||||
|
|
||||||
|
#include <Wire.h>
|
||||||
|
#define I2C_ADDRESS 0x4B
|
||||||
|
#define REGISTER_0 0x00
|
||||||
|
#define REGISTER_1 0x01
|
||||||
|
#define REGISTER_2 0x02
|
||||||
|
#define REGISTER_3 0x03
|
||||||
|
|
||||||
|
uint8_t reg; // I2C read register
|
||||||
|
|
||||||
|
unsigned int reg_0_value, reg_1_value, reg_2_value, reg_3_value; // register variables
|
||||||
|
|
||||||
|
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);
|
||||||
|
Serial.begin(9600); // start serial for output
|
||||||
|
Serial.println();
|
||||||
|
Serial.println("Starting");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
Serial.println("Waiting for register read");
|
||||||
|
|
||||||
|
// Read from sensor here and set register variables
|
||||||
|
reg_0_value = 57007; // decimal values of registers for testing
|
||||||
|
reg_1_value = 48879;
|
||||||
|
reg_2_value = 3790;
|
||||||
|
reg_3_value = 4613;
|
||||||
|
|
||||||
|
delay(5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void receiveEvent(int bytes) {
|
||||||
|
// Read the first byte to determine which register is concerned
|
||||||
|
reg = Wire.read();
|
||||||
|
Serial.print("Read register ");
|
||||||
|
Serial.println(reg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void requestEvent() {
|
||||||
|
// Read from the register variable to know what to send back
|
||||||
|
digitalWrite(LED_BUILTIN, HIGH);
|
||||||
|
if (reg == REGISTER_0) {
|
||||||
|
Wire.write((uint8_t *)®_0_value, sizeof(reg_0_value));
|
||||||
|
Serial.print("Writing value ");
|
||||||
|
Serial.println(reg_0_value, DEC); // writing register value in DECIMAL format
|
||||||
|
} else if (reg == REGISTER_1) {
|
||||||
|
Wire.write((uint8_t *)®_1_value, sizeof(reg_1_value));
|
||||||
|
Serial.print("Writing value ");
|
||||||
|
Serial.println(reg_1_value, DEC);
|
||||||
|
} else if (reg == REGISTER_2) {
|
||||||
|
Wire.write((uint8_t *)®_2_value, sizeof(reg_2_value));
|
||||||
|
Serial.print("Writing value ");
|
||||||
|
Serial.println(reg_2_value, DEC);
|
||||||
|
} else if (reg == REGISTER_3) {
|
||||||
|
Wire.write((uint8_t *)®_3_value, sizeof(reg_3_value));
|
||||||
|
Serial.print("Writing value ");
|
||||||
|
Serial.println(reg_3_value, DEC);
|
||||||
|
} else {
|
||||||
|
Serial.println("Unknown register");
|
||||||
|
}
|
||||||
|
delay(50);
|
||||||
|
digitalWrite(LED_BUILTIN, LOW);
|
||||||
|
}
|
||||||
@ -0,0 +1,73 @@
|
|||||||
|
#include <Wire.h>
|
||||||
|
#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);
|
||||||
|
}
|
||||||
@ -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.
|
||||||
@ -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 -
|
||||||
@ -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 <randras@sdr.hu>
|
||||||
|
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
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.<br />
|
||||||
|
Receiver is operated by: <a href="mailto:%[RX_ADMIN]">%[RX_ADMIN]</a><br/>
|
||||||
|
Device: %[RX_DEVICE]<br />
|
||||||
|
Antenna: %[RX_ANT]<br />
|
||||||
|
Website: <a href="http://localhost" target="_blank">http://localhost</a>
|
||||||
|
"""
|
||||||
|
|
||||||
|
# ==== 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
|
||||||
|
"""
|
||||||
@ -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 <randras@sdr.hu>
|
||||||
|
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
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.<br />
|
||||||
|
Receiver is operated by: <a href="mailto:%[RX_ADMIN]">%[RX_ADMIN]</a><br/>
|
||||||
|
Device: %[RX_DEVICE]<br />
|
||||||
|
Antenna: %[RX_ANT]<br />
|
||||||
|
Website: <a href="http://localhost" target="_blank">http://localhost</a>
|
||||||
|
"""
|
||||||
|
|
||||||
|
# ==== 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
|
||||||
|
"""
|
||||||
@ -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
|
||||||
@ -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
|
||||||
@ -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 -
|
||||||
|
|
||||||
@ -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 -
|
||||||
|
|
||||||
@ -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
|
||||||
@ -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
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
echo -e "IP Address of this Pi is: "
|
||||||
|
|
||||||
|
hostname -I|cut -f1 -d ' '
|
||||||
@ -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
|
||||||
|
|
||||||
|
|
||||||
@ -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 " ")'
|
||||||
@ -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 " ")'
|
||||||
@ -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!
|
||||||
|
|
||||||
|
|
||||||
@ -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
|
||||||
@ -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
|
||||||
@ -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
|
||||||
|
|
||||||
@ -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
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
EESchema-LIBRARY Version 2.3
|
||||||
|
#encoding utf-8
|
||||||
|
#(c) SnapEDA 2016 (snapeda.com)
|
||||||
|
#This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA) with Design Exception 1.0
|
||||||
|
#
|
||||||
|
# PJ-037AH
|
||||||
|
#
|
||||||
|
DEF PJ-037AH J 0 40 Y N 1 L N
|
||||||
|
F0 "J" -300 200 50 H V L BNN
|
||||||
|
F1 "PJ-037AH" -300 -200 50 H V L BNN
|
||||||
|
F2 "CUI_PJ-037AH" 0 0 50 H I L BNN
|
||||||
|
F3 "Manufacturer recommendations" 0 0 50 H I L BNN
|
||||||
|
F4 "CUI INC" 0 0 50 H I L BNN
|
||||||
|
DRAW
|
||||||
|
A -225 100 50 899 2700 0 0 6 N -225 50 -225 150
|
||||||
|
P 2 0 0 6 -225 150 -50 150 N
|
||||||
|
P 2 0 0 6 -50 150 -50 50 N
|
||||||
|
P 2 0 0 6 -50 50 -225 50 N
|
||||||
|
P 2 0 0 6 -50 50 -50 25 N
|
||||||
|
P 2 0 0 6 -50 25 0 25 N
|
||||||
|
P 2 0 0 6 0 25 0 175 N
|
||||||
|
P 2 0 0 6 0 175 -50 175 N
|
||||||
|
P 2 0 0 6 -50 175 -50 150 N
|
||||||
|
P 2 0 0 6 0 -100 -125 -100 N
|
||||||
|
P 2 0 0 6 -125 -100 -150 -50 N
|
||||||
|
P 2 0 0 6 -150 -50 -175 -100 N
|
||||||
|
X 1 1 200 100 200 L 40 40 0 0 P
|
||||||
|
X 2 2 200 -100 200 L 40 40 0 0 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# End Library
|
||||||
@ -0,0 +1,60 @@
|
|||||||
|
PCBNEW-LibModule-V1
|
||||||
|
# encoding utf-8
|
||||||
|
Units mm
|
||||||
|
$INDEX
|
||||||
|
CUI_PJ-037AH
|
||||||
|
$EndINDEX
|
||||||
|
$MODULE CUI_PJ-037AH
|
||||||
|
Po 0 0 0 15 00000000 00000000 ~~
|
||||||
|
Li CUI_PJ-037AH
|
||||||
|
Cd
|
||||||
|
Sc 00000000
|
||||||
|
At STD
|
||||||
|
Op 0 0 0
|
||||||
|
.SolderMask 0
|
||||||
|
.SolderPaste 0
|
||||||
|
T0 1.85093 -6.76843 1.0005 1.0005 0 0.05 N V 21 "CUI_PJ-037AH"
|
||||||
|
T1 2.48639 5.77824 1.00056 1.00056 0 0.05 N V 21 "VAL**"
|
||||||
|
DS 0.5 1.75 -0.5 1.75 0.0001 28
|
||||||
|
DS -0.5 1.75 -0.5 -1.75 0.0001 28
|
||||||
|
DS -0.5 -1.75 0.5 -1.75 0.0001 28
|
||||||
|
DS 0.5 -1.75 0.5 1.75 0.0001 28
|
||||||
|
DS 6.5 1.5 5.5 1.5 0.0001 28
|
||||||
|
DS 5.5 1.5 5.5 -1.5 0.0001 28
|
||||||
|
DS 5.5 -1.5 6.5 -1.5 0.0001 28
|
||||||
|
DS 6.5 -1.5 6.5 1.5 0.0001 28
|
||||||
|
DS -0.8 -4.5 13.7 -4.5 0.127 27
|
||||||
|
DS 13.7 4.5 -0.8 4.5 0.127 27
|
||||||
|
DS -0.8 4.5 -0.8 -4.5 0.127 27
|
||||||
|
DS 13.7 -4.5 13.7 4.5 0.127 21
|
||||||
|
DS 13.7 4.5 -0.8 4.5 0.127 21
|
||||||
|
DS -0.8 4.5 -0.8 2.65 0.127 21
|
||||||
|
DS -0.8 -4.5 13.7 -4.5 0.127 21
|
||||||
|
DS -0.8 -2.55 -0.8 -4.5 0.127 21
|
||||||
|
DS -1.1 -4.75 13.95 -4.75 0.05 26
|
||||||
|
DS 13.95 -4.75 13.95 4.75 0.05 26
|
||||||
|
DS 13.95 4.75 -1.1 4.75 0.05 26
|
||||||
|
DS -1.1 4.75 -1.1 2.35 0.05 26
|
||||||
|
DC -2 0 -1.8 0 0.4 21
|
||||||
|
DS -1.1 -2.25 -1.1 -4.75 0.05 26
|
||||||
|
DS -1.1 -2.25 -1.55 -2.25 0.05 26
|
||||||
|
DS -1.55 -2.25 -1.55 2.35 0.05 26
|
||||||
|
DS -1.55 2.35 -1.1 2.35 0.05 26
|
||||||
|
DS 13.7 -4.5 13.7 4.5 0.127 27
|
||||||
|
$PAD
|
||||||
|
Sh "1" O 5 2.5 0 0 900
|
||||||
|
Dr 1 0 0
|
||||||
|
At STD N 00C0FFFF
|
||||||
|
.SolderMask 0
|
||||||
|
Ne 0 ""
|
||||||
|
Po 0 0
|
||||||
|
$EndPAD
|
||||||
|
$PAD
|
||||||
|
Sh "2" O 4.5 2.25 0 0 900
|
||||||
|
Dr 1 0 0
|
||||||
|
At STD N 00C0FFFF
|
||||||
|
.SolderMask 0
|
||||||
|
Ne 0 ""
|
||||||
|
Po 6 0
|
||||||
|
$EndPAD
|
||||||
|
$EndMODULE CUI_PJ-037AH
|
||||||
|
After Width: | Height: | Size: 334 KiB |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,3 @@
|
|||||||
|
(fp_lib_table
|
||||||
|
(lib (name PJ-037AH)(type Legacy)(uri ${KIPRJMOD}/PJ-037AH.mod)(options "")(descr ""))
|
||||||
|
)
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -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 ''
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<ArrayOfMemoryEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<MemoryEntry>
|
||||||
|
<IsFavourite>true</IsFavourite>
|
||||||
|
<Name>AMSAT CubeSat Simulator/Name>
|
||||||
|
<GroupName>Misc</GroupName>
|
||||||
|
<Frequency>440389653</Frequency>
|
||||||
|
<DetectorType>NFM</DetectorType>
|
||||||
|
<Shift>0</Shift>
|
||||||
|
<FilterBandwidth>13730</FilterBandwidth>
|
||||||
|
</MemoryEntry>
|
||||||
|
</ArrayOfMemoryEntry>
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue