· 5 years ago · Jul 22, 2020, 02:48 PM
1# -*- coding: utf-8 -*-
2
3"""
4config_webrx: configuration options for OpenWebRX
5
6 This file is part of OpenWebRX,
7 an open-source SDR receiver software with a web UI.
8 Copyright (c) 2013-2015 by Andras Retzler <randras@sdr.hu>
9 Copyright (c) 2019-2020 by Jakob Ketterl <dd5jfk@darc.de>
10
11 This program is free software: you can redistribute it and/or modify
12 it under the terms of the GNU Affero General Public License as
13 published by the Free Software Foundation, either version 3 of the
14 License, or (at your option) any later version.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU Affero General Public License for more details.
20
21 You should have received a copy of the GNU Affero General Public License
22 along with this program. If not, see <http://www.gnu.org/licenses/>.
23
24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
25
26 In addition, as a special exception, the copyright holders
27 state that config_rtl.py and config_webrx.py are not part of the
28 Corresponding Source defined in GNU AGPL version 3 section 1.
29
30 (It means that you do not have to redistribute config_rtl.py and
31 config_webrx.py if you make any changes to these two configuration files,
32 and use them for running your web service with OpenWebRX.)
33"""
34
35# configuration version. please only modify if you're able to perform the associated migration steps.
36version = 2
37
38# NOTE: you can find additional information about configuring OpenWebRX in the Wiki:
39# https://github.com/jketterl/openwebrx/wiki/Configuration-guide
40
41# ==== Server settings ====
42web_port = 8073
43max_clients = 20
44
45# ==== Web GUI configuration ====
46receiver_name = "[Callsign]"
47receiver_location = "Budapest, Hungary"
48receiver_asl = 200
49receiver_admin = "example@example.com"
50receiver_gps = {"lat": 47.000000, "lon": 19.000000}
51photo_title = "Panorama of Budapest from Schönherz Zoltán Dormitory"
52# photo_desc allows you to put pretty much any HTML you like into the receiver description.
53# The lines below should give you some examples of what's possible.
54photo_desc = """
55You can add your own background photo and receiver information.<br />
56Receiver is operated by: <a href="mailto:openwebrx@localhost" target="_blank">Receiver Operator</a><br/>
57Device: Receiver Device<br />
58Antenna: Receiver Antenna<br />
59Website: <a href="http://localhost" target="_blank">http://localhost</a>
60"""
61
62# ==== Public receiver listings ====
63# You can publish your receiver on online receiver directories, like https://www.receiverbook.de
64# You will receive a receiver key from the directory that will authenticate you as the operator of this receiver.
65# Please note that you not share your receiver keys publicly since anyone that obtains your receiver key can take over
66# your public listing.
67# Your receiver keys should be placed into this array:
68receiver_keys = []
69# If you list your receiver on multiple sites, you can place all your keys into the array above, or you can append
70# keys to the arraylike this:
71# receiver_keys += ["my-receiver-key"]
72
73# If you're not sure, simply copy & paste the code you received from your listing site below this line:
74
75# ==== DSP/RX settings ====
76fft_fps = 18
77fft_size = 4096 # Should be power of 2
78fft_voverlap_factor = (
79 0.3 # If fft_voverlap_factor is above 0, multiple FFTs will be used for creating a line on the diagram.
80)
81
82audio_compression = "adpcm" # valid values: "adpcm", "none"
83fft_compression = "adpcm" # valid values: "adpcm", "none"
84
85digimodes_enable = True # Decoding digimodes come with higher CPU usage.
86digimodes_fft_size = 1024
87
88# determines the quality, and thus the cpu usage, for the ambe codec used by digital voice modes
89# if you're running on a Raspi (up to 3B+) you'll want to leave this on 1
90digital_voice_unvoiced_quality = 1
91# enables lookup of DMR ids using the radioid api
92digital_voice_dmr_id_lookup = True
93
94"""
95Note: if you experience audio underruns while CPU usage is 100%, you can:
96- decrease `samp_rate`,
97- set `fft_voverlap_factor` to 0,
98- decrease `fft_fps` and `fft_size`,
99- limit the number of users by decreasing `max_clients`.
100"""
101
102# ==== I/Q sources ====
103# (Uncomment the appropriate by removing # characters at the beginning of the corresponding lines.)
104
105###############################################################################
106# Is my SDR hardware supported? #
107# Check here: https://github.com/jketterl/openwebrx/wiki/Supported-Hardware #
108###############################################################################
109
110# Currently supported types of sdr receivers:
111# "rtl_sdr", "rtl_sdr_soapy", "sdrplay", "hackrf", "airspy", "airspyhf", "fifi_sdr",
112# "perseussdr", "lime_sdr", "pluto_sdr", "soapy_remote"
113#
114# In order to use rtl_sdr, you will need to install librtlsdr-dev and the connector.
115# In order to use sdrplay, airspy or airspyhf, you will need to install soapysdr, the corresponding driver, and the
116# connector.
117#
118# https://github.com/jketterl/owrx_connector
119#
120# In order to use Perseus HF you need to install the libperseus-sdr
121#
122# https://github.com/Microtelecom/libperseus-sdr
123#
124# and do the proper changes to the sdrs object below
125# (see also Wiki in https://github.com/jketterl/openwebrx/wiki/Sample-configuration-for-Perseus-HF-receiver).
126#
127
128sdrs = {
129 "rtlsdr": {
130 "name": "",
131 "type": "rtl_sdr",
132 "ppm": 0,
133 # you can change this if you use an upconverter. formula is:
134 # center_freq + lfo_offset = actual frequency on the sdr
135 # "lfo_offset": 0,
136 "profiles": {
137 "70cm": {
138 "name": "70cm Relais",
139 "center_freq": 438800000,
140 "rf_gain": 30,
141 "samp_rate": 2400000,
142 "start_freq": 439275000,
143 "start_mod": "nfm",
144 },
145 "2m": {
146 "name": "2m komplett",
147 "center_freq": 145000000,
148 "rf_gain": 30,
149 "samp_rate": 2400000,
150 "start_freq": 145725000,
151 "start_mod": "nfm",
152 },
153 "2m1": {
154 "name": "2m ham low",
155 "center_freq": 145500000,
156 "rf_gain": 30,
157 "samp_rate": 2800000,
158 "start_freq": 145500000,
159 "start_mod": "nfm",
160 },
161 "2m2": {
162 "name": "2m ham high",
163 "center_freq": 148500000,
164 "rf_gain": 30,
165 "samp_rate": 2800000,
166 "start_freq": 148500000,
167 "start_mod": "nfm",
168 },
169 "2m3": {
170 "name": "2m 149-152",
171 "center_freq": 150500000,
172 "rf_gain": 30,
173 "samp_rate": 2800000,
174 "start_freq": 150500000,
175 "start_mod": "nfm",
176 },
177 "2m4": {
178 "name": "2m 153-156",
179 "center_freq": 154500000,
180 "rf_gain": 30,
181 "samp_rate": 2800000,
182 "start_freq": 1545000000,
183 "start_mod": "nfm",
184 },
185 "2m5": {
186 "name": "2m 157-160",
187 "center_freq": 158500000,
188 "rf_gain": 30,
189 "samp_rate": 2800000,
190 "start_freq": 158500000,
191 "start_mod": "nfm",
192 },
193 "2m6": {
194 "name": "2m 161-164",
195 "center_freq": 162500000,
196 "rf_gain": 30,
197 "samp_rate": 2800000,
198 "start_freq": 162500000,
199 "start_mod": "nfm",
200 },
201 "2m7": {
202 "name": "2m 165-168",
203 "center_freq": 166500000,
204 "rf_gain": 30,
205 "samp_rate": 2800000,
206 "start_freq": 166500000,
207 "start_mod": "nfm",
208 },
209 "2m8": {
210 "name": "2m 169-172",
211 "center_freq": 170500000,
212 "rf_gain": 30,
213 "samp_rate": 2800000,
214 "start_freq": 170500000,
215 "start_mod": "nfm",
216 },
217 "2m9": {
218 "name": "air KCDC CTAF",
219 "center_freq": 123000000,
220 "rf_gain": 30,
221 "samp_rate": 2800000,
222 "start_freq": 123000000,
223 "start_mod": "am",
224 },
225 "2m10": {
226 "name": "air KCDC WX ASOS",
227 "center_freq": 119025000,
228 "rf_gain": 30,
229 "samp_rate": 2800000,
230 "start_freq": 119025000,
231 "start_mod": "am",
232 },
233
234 },
235 },
236}
237
238# ==== Color themes ====
239
240# A guide is available to help you set these values: https://github.com/simonyiszk/openwebrx/wiki/Calibrating-waterfall-display-levels
241
242### default theme by teejez:
243waterfall_colors = [0x000000FF, 0x0000FFFF, 0x00FFFFFF, 0x00FF00FF, 0xFFFF00FF, 0xFF0000FF, 0xFF00FFFF, 0xFFFFFFFF]
244waterfall_min_level = -88 # in dB
245waterfall_max_level = -20
246waterfall_auto_level_margin = {"min": 5, "max": 40}
247### old theme by HA7ILM:
248# waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]"
249# waterfall_min_level = -115 #in dB
250# waterfall_max_level = 0
251# waterfall_auto_level_margin = {"min": 20, "max": 30}
252##For the old colors, you might also want to set [fft_voverlap_factor] to 0.
253
254# Note: When the auto waterfall level button is clicked, the following happens:
255# [waterfall_min_level] = [current_min_power_level] - [waterfall_auto_level_margin["min"]]
256# [waterfall_max_level] = [current_max_power_level] + [waterfall_auto_level_margin["max"]]
257#
258# ___|________________________________________|____________________________________|________________________________________|___> signal power
259# \_waterfall_auto_level_margin["min"]_/ |__ current_min_power_level | \_waterfall_auto_level_margin["max"]_/
260# current_max_power_level __|
261
262# === Experimental settings ===
263# Warning! The settings below are very experimental.
264csdr_dynamic_bufsize = False # This allows you to change the buffering mode of csdr.
265csdr_print_bufsizes = False # This prints the buffer sizes used for csdr processes.
266csdr_through = False # Setting this True will print out how much data is going into the DSP chains.
267
268nmux_memory = 50 # in megabytes. This sets the approximate size of the circular buffer used by nmux.
269
270google_maps_api_key = ""
271
272# how long should positions be visible on the map?
273# they will start fading out after half of that
274# in seconds; default: 2 hours
275map_position_retention_time = 2 * 60 * 60
276
277# decoder queue configuration
278# due to the nature of some operating modes (ft8, ft8, jt9, jt65, wspr and js8), the data is recorded for a given amount
279# of time (6 seconds up to 2 minutes) and decoded at the end. this can lead to very high peak loads.
280# to mitigate this, the recordings will be queued and processed in sequence.
281# the number of workers will limit the total amount of work (one worker will losely occupy one cpu / thread)
282decoding_queue_workers = 2
283# the maximum queue length will cause decodes to be dumped if the workers cannot keep up
284# if you are running background services, make sure this number is high enough to accept the task influx during peaks
285# i.e. this should be higher than the number of decoding services running at the same time
286decoding_queue_length = 10
287
288# wsjt decoding depth will allow more results, but will also consume more cpu
289wsjt_decoding_depth = 3
290# can also be set for each mode separately
291# jt65 seems to be somewhat prone to erroneous decodes, this setting handles that to some extent
292wsjt_decoding_depths = {"jt65": 1}
293
294# JS8 comes in different speeds: normal, slow, fast, turbo. This setting controls which ones are enabled.
295js8_enabled_profiles = ["normal", "slow"]
296# JS8 decoding depth; higher value will get more results, but will also consume more cpu
297js8_decoding_depth = 3
298
299temporary_directory = "/tmp/openwebrx"
300
301services_enabled = False
302services_decoders = ["ft8", "ft4", "wspr", "packet"]
303
304# === aprs igate settings ===
305# if you want to share your APRS decodes with the aprs network, configure these settings accordingly
306aprs_callsign = "N0CALL"
307aprs_igate_enabled = False
308aprs_igate_server = "euro.aprs2.net"
309aprs_igate_password = ""
310# beacon uses the receiver_gps setting, so if you enable this, make sure the location is correct there
311aprs_igate_beacon = False
312
313# path to the aprs symbols repository (get it here: https://github.com/hessu/aprs-symbols)
314aprs_symbols_path = "/opt/aprs-symbols/png"
315
316# === PSK Reporter setting ===
317# enable this if you want to upload all ft8, ft4 etc spots to pskreporter.info
318# this also uses the receiver_gps setting from above, so make sure it contains a correct locator
319pskreporter_enabled = False
320pskreporter_callsign = "N0CALL"
321
322# === Web admin settings ===
323# this feature is experimental at the moment. it should not be enabled on shared receivers since it allows remote
324# changes to the receiver settings. enable for testing in controlled environment only.
325# webadmin_enabled = False