DENKOBlue manual

Chapter 6 · Applies to firmware v408 and later · Updated 2026-09-21

Settings and station identity

Where each setting's value comes from, what lasts across a restart and what does not, every setting the station has, and how the station's two numbers — its local one and its Blitzortung one — relate.

1. Where a value comes from

A setting can be given a value in four places:

SourceWhen it is appliedAfter a restart
1. Compiled defaultsBuilt into the firmware; used from power-on. Fail-safe: a failed config fetch, an unreadable file or an unknown key all mean “keep the defaults”, never a zero.Restored. Change only with a firmware update.
2. Remote (fleet) configurationA file the station downloads on a schedule (the interval setting, default every 5 minutes). It holds fleet-wide lines plus a per-board block keyed on the processor ID; the board's block wins for the keys it names. Stored on the board, so it also applies while the server is unreachable.Kept, and refreshed on the schedule.
3. Your runtime changesThe controls on the Live and Signal chain pages, and POST /api/cfg. A patch held in memory, applied immediately.Lost — and usually sooner: the next successful remote fetch wins.
4. Your stored local choicesThree choices are deliberately different: the enabled-input mask, the per-input polarity, and network participation. They are written to the board's flash as append-only records, so a fleet refresh cannot quietly reverse them.Kept, until you change them again.

Some keys cannot be set from the web interface at all: register, station and send_gap are fleet decisions, and channel_mask belongs to the stored local choice in row 4. Runtime posts that name them are ignored, and a post containing nothing else is refused outright.

2. Station identity: the two numbers

A DENKO Blue station has two numbers, and the Diagnostics page shows both:

NumberWhere it comes from
Local number, 8000–8999The station setting: 8000 unless the remote configuration assigns one. The 8xxx range is reserved for DENKO Blue stations, and by convention the last digits echo the station's assigned public number so a packet can be traced back to hardware. Shown as Station on the Diagnostics page, marked remote when it came from the configuration file and default when it did not.
Blitzortung numberAssigned by the Blitzortung server during registration, from the board's processor ID — the long hex string on the Diagnostics page, which is the registration key you quote when linking the board to an account. Once assigned, the server number is the station's public identity and is shown as Blitzortung station N.

Registration runs only while all three of these are true:

  1. register is enabled (it is on in the compiled defaults; the fleet file decides per board),
  2. the processor ID is linked to a Blitzortung account server-side, and
  3. the GPS receiver has a 3D fix.

Why a board without a satellite fix keeps its local number. Registration declares the station's coordinates, and every station's declared coordinates feed everyone's multilateration. The firmware therefore refuses to register a position it does not have: no fix means “will not declare 0°N 0°E”, and a 2D fix means “will not declare a sea-level altitude”. Until a real 3D fix exists, registration simply waits — and the station goes on measuring and reporting under its local 8xxx number. That is normal, not a fault.

3. Every setting

Defaults are the compiled values; the remote configuration replaces them per fleet or per board. Ranges are clamped, never rejected — a value outside the range becomes the nearest value inside it. The current value of every key, and whether it came from the remote file, is on the Diagnostics page.

SettingWhat it doesDefaultRange
triggerDetection threshold, in ADC counts either side of the baseline (1 count ≈ 0.79 mV). The trigger selector on the Live page.9920–2000
gain_pre, gain_postThe two programmable gain stages, as ladder codes 0–7 meaning ×1, ×2, ×4, ×5, ×8, ×10, ×16, ×32. The gain selectors on the Live page and the diagram.4 (×8), 1 (×2)0–7
channelThe primary (viewed/diagnostic) input, 1–4.11–4
intervalSeconds between remote configuration fetches.30030–86400
pga_countHow many gain chips are actually fitted. The chain is write-only and cannot be counted by the firmware, so this is told to it; a wrong value puts every gain in the wrong chip.82–8
stationThe local station number (section 2). Fleet-only.80008000–8999
buzzerSound the piezo once per capture. Off by default; it is the only feedback a board gives with no network and no LED in view.00/1
rate_maxCaptures per second above which the detector is throttled. The cap that keeps a dead or flooded input serviceable.2001–2000
send_gapMinimum seconds between transmitted packets; held-back packets are counted as throttled. When register is on, at least 10 is enforced regardless of this value. Fleet-only.100–3600
encryptSeal packets when an encryption key is in force. On by default; exists so the encryption can be taken out of the chain when diagnosing.10/1
preamp_gainThe declared gain of the amplifier head (×10 stock PCB 16.2, ×45 PCB 23.1). Declared, not measured — see the Signal chain page.101–1000
trig_autoLet the measured noise floor raise the trigger threshold, so a channel that gets noisy goes quiet instead of flooding. Off pins the threshold — what you want on a bench.10/1
filter_hzCutoff of the LTC1569-7 low-pass, in Hz, on boards that have the chip. Ignored where it is not fitted.252001000–200000
gain_autoLet the firmware steer the gains toward noise_target. Off by default, so the configuration file is the single source of truth for gain.00/1
noise_targetWhere gain_auto aims the quiet noise, in RMS counts at the converter (32 ≈ 25 mV).3220–2000
gnss_sysRequested constellations as a bit mask: 1 GPS, 2 GLONASS, 4 Galileo, 8 BeiDou. A request, clamped to what the receiver can do (chapter 3).51–15
ant_ocdAsk the receiver to detect an open GPS antenna as well as a short. Off by default; with it off, “ok” only means “not shorted”.00/1
registerRegister with the Blitzortung registration service (section 2). Fleet-only.10/1
mux_preInput path of the first gain stage: 0 = amplified (×4), 1 = direct tap (×1).00/1
mux_postInput path of the second gain stage: 0 = through the filter, 1 = bypass. Forced to 1 on boards with no filter fitted.00/1
protocolStock-compatibility profile on the wire: 94 or 101. The protocol selector on the Live page.10194/101
fw_seqSelf-update switch: 0 (the default) disables it; any nonzero value allows the latest published update (chapter 5).00–65535
channel_maskThe fleet's enabled-input mask, bits 0–3 for inputs 1–4. Your stored local mask replaces it when set (chapter 2).151–15
reject_hzSingle-frequency tone reject: the frequency in Hz; 0 disables it. For an input carrying a continuous interference tone that would otherwise trigger on every cycle.00–240000
reject_pctHow much of a window's peak the tone must explain for the window to be dropped, in percent.751–99

4. Changing a setting yourself

The same patch the pages send can be sent by hand — lines of key value in a POST:

curl -X POST --data-binary $'trigger 130\ngain_pre 5\n' http://<IP address>/api/cfg

The station's API has no authentication. Anything on the network can read it and post to it. Keep the station on a trusted network.

The station works best on its configured settings. Change a setting only if you know what it does — and remember that restarting the board, or simply waiting for the next fetch, undoes any runtime change that made things worse.