FISCHER 26 ANTENNA CLUSTER
2 GIMBALS × 3 BANDS + DORSAL DOM
This page documents Fischer 26's antenna cluster as a concept design (TRL 2 — no physical prototype built, no flight hours, all performance figures derived from first-principles physics and published component datasheets). The central questions answered: (1) how does a two-gimbal, three-band architecture engage threats that a single-mast design cannot? (2) how does the cluster defend against counter-jamming, direction-finding, and anti-radiation missiles? (3) how does the sealed civilian-band fuse keep the cluster lawful in peacetime while usable in declared conflict zones? (4) how does an implementing force roll daily SDR profiles without classified tooling? Every claim has an equation, a source, and executable verification code.
Operational role — stand-off EW at 1000 m AGL
Fischer 26E-LE cruises at approximately 1000 m AGL in its operational role. This is the stand-off tier of a three-level altitude architecture that the implementing force deploys as a coordinated package:
THREE-TIER ALTITUDE ARCHITECTURE
The stand-off role is the operational justification for the cluster's existence. The cluster provides jamming and mesh-relay capability over a radius of 5–15 km at 1000 m AGL, which covers the operating volume of both Fischer 26 and Fischer 26E below it. A Tier-1 Fischer 26 at 300 m AGL engaged in close ISR can call for jamming support from a Tier-3 Fischer 26E-LE standing off at 1000 m AGL and 3–5 km lateral separation, which means the FPV threat encountered by the Tier-1 airframe never reaches the Tier-3 airframe physically. The cluster does its jamming work from outside the FPV-reachable envelope.
This altitude stacking also shapes the cost tier decision. A Tier-3 airframe at 1000 m AGL, 3 km behind the forward operating line, faces attrition primarily from SAMs and high-altitude interceptors — threats that a Tier C MIL-qualified airframe is designed for. A Tier-1 Fischer 26 at 300 m AGL overflying the FLOT faces attrition primarily from small arms, MANPADS, and FPV interceptors — threats that kill Tier C and Tier A airframes about equally, which is why Tier A is the correct choice there. The expensive airframe is expensive specifically because it is the one held back from the densest threat concentration; the cheap airframe is cheap specifically because it is expendable against threats that cannot be reliably countered at any price.
This is the same logic that drives fixed-wing fighter doctrine. Stand-off strike assets (Rafale carrying SCALP, F-35 carrying JASSM-ER) launch from outside the densest threat envelope; forward assets accept higher attrition risk because the cost-benefit math says so. Fischer 26E-LE is the drone-scale analogue of that doctrine: the dedicated EW platform that stays in its stand-off station so that the cheaper ISR and strike assets downrange can operate at survivable altitude without adversary EW dominance.
Related Chapters
Physical Architecture
The cluster comprises three functional groups: two wing-mounted gimbals that steer in azimuth and elevation, and one dorsal emergency mast mounted on the fuselage upper surface. The gimbals share mechanical design and interface; the dorsal mast is a separate subsystem with its own mounting, power feed, and control path.
Wing gimbals — 2 independent bearings, 3 bands each
A gimbal carries three masts mounted in a tight cluster, all three pointing in the same direction at all times. The gimbal slews the triplet as a rigid unit. This differs from the earlier two-mast pan-tilt arrangement documented in the baseline Fischer 26 whitepaper; the three-mast bundle is an LE-variant-specific design.
Each of the three masts per gimbal serves a distinct band role that is fixed at manufacture and does not change in flight:
PER-GIMBAL MAST ROLES
The three masts point identically because the gimbal structure rigidly bundles them; the band distinction is what the masts emit, not where they point. A single bearing from one gimbal therefore covers three bands simultaneously — sufficient to deny any known current-generation Russian drone that operates in one of these bands. Two gimbals give two independent such bearings, not six.
GIMBAL HARDWARE (per gimbal, 2 per aircraft)
The two gimbals are mounted at mirrored positions on each wing, separated by approximately 2.6 m across the airframe. This separation is a useful baseline for passive direction-finding when both gimbals receive a common emitter — a 1 GHz signal has a 0.3 m wavelength, giving roughly 6° bearing resolution from phase comparison across the 2.6 m baseline. This is a secondary capability, not the primary design driver.
Dorsal DOM — daily-swappable FPV panic transmitter
The dorsal mast sits on the fuselage upper surface between the wings. It is not gimbaled; its antenna is a hemispherical omni pattern covering the upper hemisphere down to roughly 15° below horizontal. The dorsal mast exists to address a failure mode the gimbals cannot cover: a pop-up FPV threat appearing from an unexpected bearing inside the gimbal slew time (hundreds of milliseconds).
DORSAL DOM MAST — EMERGENCY OMNI
The snow-landing turnaround doctrine of 26E-LE (dedicated in fischer26e.html) is what makes daily element swap and profile reload practical. Between sorties the airframe sits on the snow, ground crew replaces the battery, swaps the DOM element if today's threat profile demands a different band grouping, and loads the day's USB profile. This is the same turnaround window — measured in minutes, not hours — used for refueling a fixed-wing trainer in a forward operating location.
Total cluster mass, power, and BOM
CLUSTER ROLLUP
Operating Modes — 200% Offensive or 200% Relay
Because the two gimbals are functionally identical and each carries the same three band roles, the cluster is reconfigurable per mission without hardware change. The operator commands one of three modes at briefing time; the mode can be changed in flight via a single MAVLink parameter write.
CLUSTER MODES
In all modes the masts retain the Fischer 26E sub-microsecond frequency-hopping agility documented in fischer26e.html. A mast in jamming role hops across its assigned band faster than a Krasukha-4 counter-jammer can react; a mast in relay role hops across its assigned band to deny adversary direction-finding a stable emitter to track. The 200% nomenclature refers to usable offensive or relay capacity versus the baseline Fischer 26's single-mast arrangement, not to any doubling of raw emitted power.
Mode switching is an SDR firmware reconfiguration — the physical PA, antenna, and gimbal are the same hardware; only the modulation, symbol framing, and upper-protocol stack change. Switch latency is approximately 200 ms including CAN-FD command round-trip and SDR lock-reacquisition.
Offensive Engagement — Two-Bearing Assignment
With two gimbals available and potentially more than two simultaneous threats, the cluster solves a gimbal-assignment problem: which bearing is engaged by which gimbal to minimise summed slew times weighted by threat priority. With only two gimbals this is not a complex combinatorial problem — a simple exhaustive search over all 2! = 2 permutations suffices. The earlier design's six-mast Hungarian algorithm was incorrect because the masts on one gimbal cannot point independently.
# pip install numpy
# two_gimbal_assignment.py — assign 2 gimbals to N prioritised threat bearings
import numpy as np
def slew_time_seconds(gimbal_current_bearing_deg, target_bearing_deg, slew_rate_deg_s=175):
"""Time to rotate a gimbal from current bearing to target bearing.
Slew rate 175 deg/s (approx 3 rad/s) with S-curve limit."""
delta = abs(target_bearing_deg - gimbal_current_bearing_deg)
delta = min(delta, 360 - delta) # shortest path around azimuth wrap
return delta / slew_rate_deg_s
def assign_gimbals_to_threats(gimbal_bearings, threat_bearings, threat_priorities):
"""Assign the 2 gimbals to the 2 highest-priority unengaged threats,
minimising weighted slew time. Any threats beyond the top 2 are
deferred until a gimbal frees up.
gimbal_bearings: [az_left, az_right] current pointings (degrees)
threat_bearings: list of N threat azimuths (degrees)
threat_priorities: list of N priorities, 1.0 (low) to 10.0 (high)
Returns: [(gimbal_id, threat_id, slew_seconds), ...] length 2
"""
# Take the top 2 threats by priority
top = sorted(range(len(threat_priorities)),
key=lambda i: -threat_priorities[i])[:2]
if len(top) < 2:
top = top + [None] # pad if only one threat
# Two permutations: (L→top0, R→top1) or (L→top1, R→top0)
best_cost, best_assign = float('inf'), None
for perm in [(top[0], top[1]), (top[1], top[0])]:
cost = 0.0
for gimbal_id, threat_id in enumerate(perm):
if threat_id is None:
continue
t = slew_time_seconds(gimbal_bearings[gimbal_id],
threat_bearings[threat_id])
# Weight by inverse priority so high-priority threats dominate
cost += t / threat_priorities[threat_id]
if cost < best_cost:
best_cost, best_assign = cost, perm
return [(g, t, slew_time_seconds(gimbal_bearings[g], threat_bearings[t]))
for g, t in enumerate(best_assign) if t is not None]
# Example: gimbals currently pointing forward, 4 threats appear from east sector
gimbals = [0, 0] # both pointing north
threats = [30, 45, 75, 120] # azimuths
priorities = [9.0, 5.0, 7.0, 3.0] # threat urgency
result = assign_gimbals_to_threats(gimbals, threats, priorities)
for gimbal_id, threat_id, t_sec in result:
print(f"Gimbal {gimbal_id} -> threat {threat_id} "
f"(az={threats[threat_id]} deg, prio={priorities[threat_id]}) "
f"in {t_sec:.2f} s")
# Output:
# Gimbal 0 -> threat 0 (az=30 deg, prio=9.0) in 0.17 s
# Gimbal 1 -> threat 2 (az=75 deg, prio=7.0) in 0.43 s
The remaining threats (indices 1 and 3 in the example) are held in a priority queue; a gimbal that completes its current engagement reassigns to the next-highest unengaged threat. This is O(N log N) for queue maintenance and O(1) for the 2-gimbal reassignment. Total engagement latency for four simultaneous threats is approximately 0.6 s for the first two (parallel) plus dwell time, then another 0.4 s for the next two — well inside the 3–8 s time-to-impact envelope of FPV threats at 1–2 km initial detection range.
Three-band simultaneous coverage per bearing
Once a gimbal is slewed to a target bearing, all three masts on that gimbal engage simultaneously. This is the critical capacity enhancement over a single-mast design: a target using frequency-hopping between 868 MHz, 915 MHz, and 2.4 GHz (common budget-FHSS pattern) is denied on all three bands in parallel instead of sequentially. A target using a single military band is engaged by Mast A with Masts B and C held in reserve — they continue passive SIGINT during the engagement, feeding the classifier in case the target switches bands under jamming pressure.
# pip install numpy
# band_coverage.py — verify 3-band simultaneous coverage against known threats
RUSSIAN_DRONE_BANDS = {
'lancet3': {'control': 2_450e6, 'type': 'military-FHSS'},
'orlan10': {'telemetry': 915e6, 'type': 'military'},
'shahed136': {'satcom': 1_621e6, 'type': 'military-GNSS'},
'budget_fpv_a': {'link': (868e6, 2_450e6), 'type': 'civilian-static-hop'},
'budget_fpv_b': {'link': (915e6, 2_450e6), 'type': 'civilian-static-hop'},
'sim_modem_c2': {'link': (800e6, 2_100e6), 'type': 'civilian-lte'},
}
def bands_denied_per_bearing(mast_a_center_hz, mast_b_hop_list, mast_c_enabled):
"""Return the list of Russian drone types this gimbal can deny on its
current bearing. mast_a_center is a single centre frequency;
mast_b_hop_list is the alternating band set; mast_c_enabled is the
wartime fuse state for civilian-LTE jamming."""
denied = []
for name, band in RUSSIAN_DRONE_BANDS.items():
if band['type'].startswith('military'):
# Mast A must be tuned close enough
freqs = [v for v in band.values() if isinstance(v, (int, float))]
if any(abs(mast_a_center_hz - f) < 50e6 for f in freqs):
denied.append(name)
elif band['type'] == 'civilian-static-hop':
# Mast B must include both hop frequencies
if all(any(abs(h - f) < 20e6 for h in mast_b_hop_list)
for f in band['link']):
denied.append(name)
elif band['type'] == 'civilian-lte':
# Mast C must be fuse-enabled AND tuned to overlap
if mast_c_enabled:
denied.append(name)
return denied
# Example: gimbal set for budget-FHSS threat environment
denied = bands_denied_per_bearing(
mast_a_center_hz=2_450e6, # Lancet-3 control band
mast_b_hop_list=[868e6, 915e6, 2_450e6], # civilian budget-FHSS
mast_c_enabled=False, # peacetime — civ-band fuse intact
)
print(f"Denied on this bearing: {denied}")
# Output: ['lancet3', 'budget_fpv_a', 'budget_fpv_b']
The example above is the typical peacetime-training or domestic-deployment configuration: military + budget-FHSS coverage on each bearing, civilian LTE denial disabled pending wartime authorisation.
ROE Control — Sealed Civilian-Band Fuse
Mast C on each gimbal is a 700–2600 MHz power amplifier capable of denying commercial LTE/5G uplinks used by adversary drones operating through SIM-modem command-and-control. This same PA would also deny civilian voice, data, and emergency calls to any non-military device within its footprint. That tradeoff is acceptable inside an active conflict zone where civilian infrastructure is already disrupted; it is unlawful and unacceptable in peacetime territory.
The cluster resolves this with a physical hardware interlock rather than a software policy. Each Mast C has a sealed wire fuse on its PA enable line. The fuse is physically present, visibly marked, and can only be broken by a technician with tools and access to the mast base. There is no software command — from the operator console, from the flight controller, from the ground station, or from any USB-loaded profile — that enables Mast C transmission while the fuse is intact.
SEALED CIV-BAND FUSE — PER MAST C
Two fuses per airframe, not one central interlock, because a single fuse would force an all-or-nothing decision and would fail both masts on a single hardware fault. Two independent fuses allow partial authorisation — if only one wing is over the authorised zone (unusual but possible on zone boundaries) — and provide redundancy against fuse-circuit failure.
This is documented openly in the wiki because openness matters more than operational secrecy here: implementing forces need to design their own fuse-break procedures, legal reviewers need to audit the principle, and adversaries who observe that Mast C never transmits in peacetime gain no actionable information. The fuse principle is well-known in nuclear weapons safety engineering (Permissive Action Link) and in aviation (physical guard-caps on ejection handles); applying it here is a straightforward engineering choice, not a novel doctrine.
Daily SDR Profile Rolling — Open Format
Every mast on the cluster reads its operating configuration from an SDR profile: centre frequency, hop list, modulation, PA drive level, duty cycle, allowed dwell windows. The profile changes daily based on the previous 24 hours of SIGINT about adversary drone activity in the operating area. This rolling mechanism is the same principle used in Ukrainian EW doctrine since 2023: adversary signatures change faster than classified acquisition cycles, so profile rollover belongs to the operating brigade, not to a national tooling authority.
The profile is a plain-text YAML file loaded from a USB key by ground crew before each sortie. Format is open and documented here so that any implementing force can generate their own profiles with a laptop, a text editor, and the day's SIGINT summary — no classified build chain required.
# pip install pyyaml
# profile_loader.py — load the day's SDR profile from USB key onto cluster masts
import yaml
from can_fd import bus # FSG-A CAN-FD abstraction
DAY_PROFILE_SCHEMA = """
# fischer26le-cluster-profile.yaml — loaded daily per airframe
# Generated by implementing force; format is open and versioned.
version: 1
date: 2026-04-21
operating_area: finnmark_east
author_unit: FSGA-Bn-Alpha
gimbal_port: # left wing
mast_a:
center_hz: 2_450_000_000
hop_list_hz: [2_405_000_000, 2_420_000_000, 2_450_000_000, 2_480_000_000]
modulation: narrowband_fm
pa_drive_w: 10.0
duty_cycle: 0.30
mast_b:
hop_list_hz: [868_000_000, 915_000_000, 2_412_000_000, 2_462_000_000]
modulation: swept_cw
pa_drive_w: 10.0
duty_cycle: 0.30
mast_c:
center_hz: 900_000_000 # LTE band 8
pa_drive_w: 0.0 # zero unless wartime fuse broken
receive_only: true
gimbal_starboard: # right wing — independent config
mast_a:
center_hz: 915_000_000 # Orlan-10 telemetry
hop_list_hz: [902_000_000, 915_000_000, 928_000_000]
modulation: match_hostile_fhss
pa_drive_w: 10.0
duty_cycle: 0.30
mast_b: # same as port gimbal
hop_list_hz: [868_000_000, 915_000_000, 2_412_000_000, 2_462_000_000]
modulation: swept_cw
pa_drive_w: 10.0
duty_cycle: 0.30
mast_c:
receive_only: true
dorsal_dom:
# emergency transmitter — operator panic button only
hop_list_hz: [2_412_000_000, 2_437_000_000, 2_462_000_000, 5_745_000_000, 5_800_000_000, 5_865_000_000]
modulation: barrage_noise
pa_drive_w: 10.0
max_burst_seconds: 30
"""
def load_profile_from_usb(usb_mount_path, airframe_tail_number):
"""Validate + load the day's profile onto all 7 masts of one airframe."""
path = f"{usb_mount_path}/{airframe_tail_number}.yaml"
with open(path) as f:
profile = yaml.safe_load(f)
# Sanity check: version, date within last 36 h, required sections present
assert profile['version'] == 1
required = ('gimbal_port', 'gimbal_starboard', 'dorsal_dom')
assert all(k in profile for k in required)
# Mast C PA drive MUST be 0 in profile regardless of wartime state —
# the fuse controls transmission, not the profile.
for gimbal_key in ('gimbal_port', 'gimbal_starboard'):
assert profile[gimbal_key]['mast_c'].get('pa_drive_w', 0) == 0, (
f"profile {path} declares non-zero PA on civilian-band mast C — "
"rejected. Mast C transmission is fuse-gated, not profile-gated."
)
# Push to masts via CAN-FD
for gimbal_key in ('gimbal_port', 'gimbal_starboard'):
for mast_key in ('mast_a', 'mast_b', 'mast_c'):
bus.write_profile(gimbal_key, mast_key, profile[gimbal_key][mast_key])
bus.write_profile('dorsal', 'dom', profile['dorsal_dom'])
return True
The assertion that Mast C always declares zero PA drive in the profile is deliberate. The profile format cannot enable civilian-band transmission; only the physical fuse can. This layering — policy in the profile, enforcement in the hardware — is what keeps the daily rolling mechanism from accidentally violating peacetime ROE through a malformed or adversary-substituted USB key.
Defensive Section — Counter-EW and Self-Protection
The cluster is not only a weapon; it is also a high-power RF emitter attached to a €9,000 airframe. That emitter attracts three categories of adversary response: counter-jamming, direction-finding followed by kinetic fire on the RF source, and Anti-Radiation Missile engagement. The defensive architecture addresses each.
Defence 1 — Emission Control (EMCON) Modes
EMISSION CONTROL MODES
Defence 2 — Anti-Radiation Missile Evasion
Russian ARMs in the 2024–2026 inventory include the Kh-31P (air-launched, Mach 3.5, 110 km range) and ground-launched variants of the 9M727 family retrofitted with passive RF seekers. These home on a radiating emitter by tracking its peak radiated power. The standard evasion is blink-and-move: transmit in short bursts, move significantly between bursts, deny the seeker a continuous track.
# pip install numpy
# arm_evasion.py — blink-and-move timing to defeat ARM seeker tracking
import math
def aircraft_displacement_between_pulses(cruise_ms=23.6, pulse_interval_ms=700):
"""Distance the airframe moves between consecutive pulses.
cruise_ms at 85 km/h = 23.6 m/s."""
return cruise_ms * (pulse_interval_ms / 1000.0)
def seeker_footprint_m(boresight_accuracy_deg, range_m):
"""ARM seeker angular error projected to ground distance."""
return 2 * range_m * math.tan(math.radians(boresight_accuracy_deg / 2))
# Kh-31P approaching from 10 km with 5 deg boresight accuracy
displacement = aircraft_displacement_between_pulses(23.6, 700)
footprint = seeker_footprint_m(5.0, 10_000)
print(f"Aircraft moves {displacement:.1f} m between pulses")
print(f"ARM seeker footprint at 10 km: {footprint:.0f} m")
print(f"Evasion margin: {footprint/displacement:.1f}x")
# Output:
# Aircraft moves 16.5 m between pulses
# ARM seeker footprint at 10 km: 874 m
# Evasion margin: 52.9x
The 53× margin at 10 km means a Kh-31P cannot maintain track on a randomised-pulse Fischer 26E-LE in free space. As range closes below 2 km the margin collapses and the aircraft should transition to EMCON-0 and manoeuvre.
Defence 3 — Counter-Jamming by Directional Discrimination
Each gimbal mast is a directional antenna at +10 dBi peak. A counter-jammer (Krasukha-4 or Pole-21) arriving from a different bearing than the engaged target enters the mast's sidelobe at −15 to −25 dBi, giving 25–35 dB of jam-rejection margin. This works against any counter-jammer not co-located with the drone target — which is typical, since Russian EW ground units are divisional assets tens of kilometres behind the forward trace while the engaged FPVs are forward.
The DOM mast does not have this discrimination advantage — it is omnidirectional by design. A Krasukha-4 illuminating the DOM gets full main-lobe reception. This is an accepted weakness because the DOM is a panic-button resource used in seconds-long bursts, not sustained operation, and the geometry rarely aligns for a Krasukha-4 to counter-jam within a 3 s window.
Vegetation Penetration in Boreal Forest
Swedish and Finnish operating areas are dominated by boreal coniferous forest. RF propagation through this vegetation follows the Weissberger modified exponential decay model (ITU-R P.833-9), derived and verified in adaptive-fhss.html. The band dependency determines which roles on the three-mast triplet carry through the canopy and which are line-of-sight only:
| Band | Frequency | Loss through 100 m forest | Cluster jam range (100 m forest) | Typical mast role |
|---|---|---|---|---|
| VHF | 150 MHz | ~11 dB | ~15 km | Mast A military |
| UHF | 900 MHz | ~23 dB | ~7 km | Mast A military, Mast B budget-FHSS, Mast C LTE band 8 |
| L-band | 1.5 GHz | ~28 dB | ~4 km | Mast A military, Mast C LTE band 3 |
| S-band | 2.4 GHz | ~32 dB | ~2 km | Mast B budget-FHSS, Mast C LTE band 7 |
| C-band | 5.8 GHz | ~33 dB | ~1.5 km | DOM FPV video only |
Mast A's tunability across 70 MHz – 6 GHz means the operating force can bias it toward lower frequencies for better forest penetration when the mission demands ground-threat coverage. Mast B is fixed on static-hop ISM bands by design and accepts the penetration penalty. Mast C covers the LTE band most relevant to the adversary's current SIM-modem usage, which is itself frequency-dependent on local carrier infrastructure.
Gimbal Dynamics — Fast Slew With Soft Stop
A hostile FPV crossing underneath the aircraft at 150 km/h has an apparent angular rate that peaks around 3 rad/s at closest approach. The gimbal must match this rate to maintain lock. A servo that slams to peak rate and stops at the mechanical end-stop induces a vibration impulse that excites the mast triplet's first bending mode (typically 15–40 Hz for a 30–50 cm carbon-fibre cantilever), causing tip overshoot and loosening connectors over time.
The cluster's gimbal controller uses a jerk-limited S-curve motion profile — acceleration, coast at constant velocity, deceleration before end-stop. The profile is generated on the gimbal's own MCU using a symmetric 7-segment algorithm, commanded by the Cube Orange+ flight controller only in terms of start and end bearings.
# pip install numpy
# gimbal_profile.py — jerk-limited S-curve for triplet slew
import numpy as np
def s_curve_profile(delta_angle_rad, peak_rate_rad_s=3.0, timestep_s=0.005):
"""Generate time-optimal S-curve trajectory from rest to rest.
Returns (time_array, angle_array, rate_array).
Simplified for exposition — operational implementation uses full
jerk-limited 7-segment integration."""
delta = abs(delta_angle_rad)
sign = np.sign(delta_angle_rad) if delta != 0 else 1
# Smooth cubic polynomial: s(t) = 3t^2 - 2t^3, rate zero at both endpoints
t_total = 1.5 * delta / peak_rate_rad_s # empirical for cubic profile
n = int(np.ceil(t_total / timestep_s))
t = np.linspace(0, t_total, n)
angle = np.zeros(n)
for i, ti in enumerate(t):
frac = ti / t_total
angle[i] = sign * delta * (3 * frac**2 - 2 * frac**3)
rate = np.gradient(angle, t)
return t, angle, rate
# Example: slew 90 deg with 3 rad/s peak
t, angle, rate = s_curve_profile(np.pi/2)
print(f"90 deg slew completes in {t[-1]:.2f} s, peak rate {max(abs(rate)):.2f} rad/s")
print(f"Rate at start: {rate[0]:.4f} rad/s, at end: {rate[-1]:.4f} rad/s")
90° slew completes in approximately 0.78 s with zero rate at both endpoints, eliminating triplet-tip overshoot. The soft-stop costs approximately 30% more time than a bang-bang profile, but avoids a 2 s resonance settling period after which a bang-bang triplet would actually be slower to acquire a target.
Cold-Weather Hardening (−40 °C)
Nordic and Arctic operations expose the cluster to −40 °C. Three failure modes drive the hardening design: brushless motor bearing grease stiffening below −20 °C (addressed with Krytox GPL 226FG in ceramic-hybrid bearings, good to −55 °C, approximately €30 per servo); coaxial connector moisture ingress during thermal cycling (addressed with hermetically-sealed connectors rated to −60 °C and pressurised-air purge solenoid per gimbal); and PCB flexural fatigue of standard FR-4 below −30 °C (addressed with Rogers RO4350B substrate, approximately €15 per mast).
Each gimbal additionally carries a 5 W resistive heater mounted on the servo block, thermostat-triggered below −20 °C. The two gimbals together add 10 W to the airframe's electrical demand during cold operation, which the energy budget in fischer26e.html accounts for. The dorsal DOM mast shares the same heating strategy with a 2 W element.
Mast Replacement — Field-Serviceable LRU Design
Every mast — both the six gimbal masts and the dorsal DOM — is a field-replaceable LRU carrying its own antenna element, RF amplifier, SDR front-end, and cooling. The snow-landing turnaround doctrine (see fischer26e.html) means ground crew performs element swaps between sorties while the airframe sits on skis; access is from above for the DOM and via the wing's leading-edge service panel for gimbal masts.
A bayonet flange with spring detent, a single MIL-DTL-38999 combined connector (power + CAN-FD data + RF + thermistor), and an identifier EEPROM that auto-broadcasts calibration to the gimbal controller on insertion — 10 seconds total swap time with arctic gloves, no tools. The DOM element swap additionally updates the operator tablet's "DOM band coverage" display with the new element's frequency range.
Flight Controller Integration — Cube Orange+ / Cube Red
The cluster's computational and safety-critical decisions — IFF whitelist gating, gimbal-to-threat assignment, gimbal servo commands with S-curve shaping, heater thermostat control, DOM panic-button handling, fuse state reporting — run on the ArduPilot flight controller that already flies Fischer 26E-LE. Reference part is the CubePilot Cube Orange+ (or successor Cube Red), chosen for its STM32H753VI processor headroom, triple-redundant temperature-controlled IMU, and −40 °C qualification.
CUBE ORANGE+ / CUBE RED — KEY PARAMETERS
# pip install pymavlink
# cube_cluster_interface.py — Cube-to-gimbal command over CAN-FD at 10 Hz
from pymavlink.mavutil import mavlink
def send_gimbal_engagement(gimbal_id, target_az_deg, target_el_deg,
mode, engagement_priority, dwell_time_ms):
"""Command one gimbal (not individual mast) to engage a bearing.
mode: 'offensive' | 'relay'. All three masts on the gimbal take the
same bearing; their band roles are fixed at manufacture.
"""
msg = mavlink.MAVLink_command_long_message(
target_system=1, target_component=gimbal_id,
command=mavlink.MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW,
confirmation=0,
param1=target_el_deg,
param2=target_az_deg,
param3=1 if mode == 'offensive' else 2,
param4=engagement_priority,
param5=dwell_time_ms,
param6=0, param7=0,
)
return msg
# Example: engage starboard gimbal on bearing 045 deg, elevation +5 deg,
# offensive mode, 200 ms burst for ARM-safe timing
cmd = send_gimbal_engagement(
gimbal_id=2, target_az_deg=45, target_el_deg=5,
mode='offensive', engagement_priority=10, dwell_time_ms=200,
)
Integration with Fischer 26E-LE Airframe
The cluster integrates onto Fischer 26E-LE at the mid-wing structural hardpoint (same location reinforced for aileron servos) for each gimbal, and at the fuselage spine between wings for the DOM. No new structural cavity is cut; mounting plates bolt to existing hardpoints. The aerodynamic penalty is approximately 5% installed drag increase (up from 4% in the earlier two-mast gimbal design) because the dorsal DOM adds a small protrusion above the fuselage.
26E-LE INTEGRATION BUDGET
Material BOM — Per Aircraft
Material Cost — Honest Ranges, Not a BOM
The cluster's cost depends almost entirely on procurement philosophy — the same physical function can be built at three distinct price tiers, and the choice between them is a policy decision, not an engineering one. Tier A is not a theoretical budget option; it is the combat-proven supply chain that Ukrainian forces have been using successfully since 2022.
COST TIER A — CHINESE / UKRAINIAN COMBAT-PROVEN (AliExpress, LCSC, Taobao, brigade assembly)
COST TIER B — WESTERN COMMERCIAL DRONE (integrator-assembled)
COST TIER C — MIL-QUALIFIED (Blue UAS framework)
The cluster cost does not include the flight controller (Cube Orange+ Standard Set + ADS-B, €470–660), the onboard compute (Jetson Orin Nano, €400–600), the BEC (Mauch HBEC-50, €80–150), the tamper-seal fuse hardware (€5–30 per Mast C depending on audit requirement), or daily profile-rolling operator labour. These are shared across the airframe and accounted for separately on fischer26e.html.
Chinese supply chain — the Ukrainian precedent
Ukrainian brigades have been sourcing Tier A components directly from Chinese suppliers since early 2022, primarily through AliExpress (retail, card payment, 2–4 week delivery), LCSC (bulk components, B2B pricing from €1000+ orders), 1688.com (Alibaba's domestic-China marketplace with the lowest prices but Mandarin-only and agent-required), and Taobao (individual resellers, similar pricing to AliExpress). The doctrine is empirical: Chinese clones of AD9361 modules, iPower-pattern brushless gimbal motors, LCSC-sourced RF amplifiers, and Chinese carbon-fibre tubes survive winter combat deployment at rates comparable to Western-sourced equivalents. FSG-A is not innovating by noting this; Ukraine has already proven it.
What Chinese sourcing does and does not buy:
- Does buy: 50–70 % lower unit cost vs Western retail equivalents, often 30–50 % lower than Western retail even after accounting for shipping and EU import duties. Immediate availability — a brigade can order 100 AD9361 modules on AliExpress and have them in a workshop in Kyiv or Varna within 3 weeks, no end-user certificate bureaucracy.
- Does not buy: Supply-chain integrity guarantees — Chinese sellers rebrand, substitute, and disappear unpredictably between orders. Two "identical" AD9361 modules bought 6 months apart can have different PCB layouts and different firmware defaults. Quality control is buyer's responsibility — accept a 5–15 % DOA rate as part of the cost model. Export of finished systems back to NATO-aligned customers may hit end-use restrictions that Chinese-sourced components trigger under some compliance frameworks.
- Does not matter: ITAR. The AD9361 is not ITAR-controlled at the chip level; Chinese clones are not regulated differently from Analog Devices originals for most use cases. MIL-DTL-38999 connectors are ITAR-controlled on the US side but freely available as Chinese equivalents without spec compliance.
Tier A pricing in this document reflects AliExpress and LCSC list prices verified against Shenzhen-seller eBay listings in Q1 2026. A brigade that establishes a continuing relationship with a specific Chinese supplier — the pattern Ukrainian volunteer organisations have used — can often negotiate another 20–30 % below AliExpress retail, matching the "50 units" volume-break column of the table below despite ordering in smaller lots, simply because the Chinese retailer bypasses the AliExpress commission layer.
Volume pricing curve — retail is the ceiling, not the procurement point
All prices in the three tiers above are single-unit retail list prices, which is the most expensive possible point on the procurement curve. Military or brigade-level procurement rarely pays retail. Typical volume-break structure from Western distributors (Digikey reel pricing, Mouser volume breaks, manufacturer direct programmes):
| Volume per order | Typical reduction vs retail | Who gets it |
|---|---|---|
| 1 unit | 0 % (baseline) | Individual buyer, prototype |
| 10 units | 10–25 % | Digikey/Mouser reel pricing, small integrator |
| 50 units | 30–50 % | Direct manufacturer sales, brigade-scale |
| 500 units | 50–70 % | Framework agreement, national procurement |
Applying these volume-break factors to the three tiers gives the realistic cost curve per cluster across the procurement spectrum:
| Tier | Retail (1 unit) | 10 units | 50 units | 500 units |
|---|---|---|---|---|
| A — Chinese / Ukrainian combat-proven | €2,000–3,500 | €1,750–3,000 | €1,400–2,400 | €1,000–1,750 |
| B — Western commercial | €5,000–8,000 | €4,250–6,800 | €3,250–5,200 | €2,250–3,800 |
| C — MIL-qualified | €10,000–18,000 | €8,500–15,000 | €6,500–11,500 | €4,500–8,500 |
For a brigade buying 50 airframes, Tier B commercial procurement lands near €3,250–5,200 per cluster, not the retail €5,000–8,000. For a national framework agreement ordering 500+ airframes, even Tier C MIL-qualified pricing approaches Tier B retail. This is not theoretical — it is the difference between a 50-airframe procurement budget of €160k and €400k, which decides whether the project is funded.
# pip install numpy
# cluster_volume_pricing.py — compute cost curve from procurement volume
import numpy as np
# Retail single-unit ranges per tier (from Western distributor list prices Q1 2026
# for tiers B and C; AliExpress and Shenzhen-eBay list prices for tier A)
TIER_RETAIL_EUR = {
'A_chinese_ukraine_proven': (2000, 3500),
'B_western_commercial': (5000, 8000),
'C_mil_qualified': (10000, 18000),
}
# Volume-break factors — midpoint of typical distributor volume-break brackets
VOLUME_BREAK = {
1: 0.00, # retail baseline
10: 0.17, # midpoint of 10-25%
50: 0.40, # midpoint of 30-50%
500: 0.60, # midpoint of 50-70%
}
def cluster_cost_at_volume(tier, volume):
"""Return (low, high) cluster cost range at the given order volume."""
low_retail, high_retail = TIER_RETAIL_EUR[tier]
# Linearly interpolate the reduction factor for arbitrary volumes
vols = sorted(VOLUME_BREAK.keys())
factors = [VOLUME_BREAK[v] for v in vols]
d = np.interp(volume, vols, factors)
return (low_retail * (1 - d), high_retail * (1 - d))
# Example: 50-aircraft brigade procurement, all three tiers
print("Per-cluster cost at 50-unit volume:")
for tier in TIER_RETAIL_EUR:
low, high = cluster_cost_at_volume(tier, 50)
print(f" {tier:26s}: EUR {low:>6,.0f} - {high:>6,.0f}")
# Output:
# A_chinese_ukraine_proven : EUR 1,200 - 2,100
# B_western_commercial : EUR 3,000 - 4,800
# C_mil_qualified : EUR 6,000 - 10,800
The implementing force plugs its own actual volume and adjusts the reduction factors per its own supplier quotes. FSG-A's midpoint figures (17 % at 10 units, 40 % at 50 units, 60 % at 500 units) are conservative — aggressive negotiation and established framework agreements can push Tier C 500-unit pricing down another 20–30 % on top of the listed curve.
What volume pricing does not fix
Volume breaks are not free. They presuppose four things that a small implementing force may not be able to deliver:
- Contractual volume commitment in advance — 500-unit pricing requires a 500-unit commitment, not an estimate or forecast. Force structures that buy airframes in batches of 5–10 pay retail.
- Acceptance of 6–18 week lead times for volume orders instead of distributor stock. This is compatible with multi-year procurement programmes, not rapid battlefield response.
- Engineering capacity to receive component-level deliveries — reel-packaged SMD chips, bulk RF amplifiers, cut-to-length carbon tubes — rather than finished modules. The implementing force must have the integration shop to assemble from components.
- Export control handling — some RF amplifiers and the AD9361 itself fall under ITAR when sourced from US manufacturers. Framework agreements handle ITAR via end-user certificates; single-unit retail sales through Digikey have the certificates already embedded in the sale. Mid-size orders (50–500) can fall into an administrative gap.
A force ordering 5 airframes for evaluation pays retail. A brigade ordering 50 for IOC testing pays somewhere near the 50-unit column. A national programme ordering 500+ for full deployment hits the 500-unit column. Implementing forces must be honest about which category they are in before claiming any number from the table as their budget figure.
TRL Status and Important Notes
TRL 2 — analytical concept. No physical prototype built. No servo tested at −40 °C. No mast has engaged a target. No fuse has been field-validated. No cost figure on this page has been validated against a supplier quote — the ranges above reflect single-unit prices visible on Western distributor websites, with volume-break factors drawn from published distributor programme bracket structures, not from negotiated procurement pricing.
What FSG-A has not done. Simulated the cluster in HFSS/CST. Measured any mast's antenna pattern. Validated CAN-FD bus capacity with 7 masts simultaneously broadcasting. Profiled the 2-gimbal assignment latency on actual Jetson Orin Nano hardware (should be trivially fast — only 2 permutations to evaluate — but unprofiled). Prototyped the sealed fuse hardware. Integration-tested with an airframe that itself does not yet exist as prototype. Obtained procurement quotes from any of the distributors referenced for Tier A/B/C pricing.
What an implementing force must do before operational use. Build a ground mock-up of one gimbal with three masts plus a dorsal DOM, and exercise the full target-classification-through-engagement loop against a test drone including fuse-break procedure for the civilian-band test. Cold-soak servos and connectors at Arctic conditions for 200 hours. Verify RF radiation patterns match calculated figures in a calibrated chamber. Qualify the sealed fuse against tamper-audit requirements. Approve frequency allocation through their national spectrum authority. Draft the daily-profile-rolling procedure for their own SIGINT workflow — FSG-A has shown the format, not the operating process. Generate actual procurement quotes from approved suppliers before committing to any cost figure in budget documents.
Sources and Formal Verification
Technical parameter sources. Analog Devices AD9361 datasheet Rev. G (fastlock profiles, tuning range). Krytox GPL 226FG grease specification, Chemours low-temperature data sheet. Rogers RO4350B flexural modulus vs temperature chart. MIL-DTL-38999 Series III connector specification. Weissberger vegetation-loss model from ITU-R Recommendation P.833-9. Kh-31P seeker boresight accuracy: publicly cited at 0.3°–0.5° in Rosoboronexport marketing material, conservatively degraded to 5° against randomly-manoeuvring targets. Permissive Action Link principle applied to Mast C fuse: Stevens and Moss, Sandia National Laboratories historical accounts. Daily-rolling SDR profile doctrine derived from Ukrainian EW practice since 2023. CubePilot Cube Orange+ specifications: manufacturer datasheet, 14 W rated, STM32H753VI at 480 MHz.
Distributor price-range sources (Q1 2026, single-unit visible pricing). Digikey (AD9361 chip, Mini-Circuits RF power amplifiers, Amphenol MIL-DTL-38999 connectors). Mouser (AD9361 family, RF amplifiers). iFlight Europe (iPower GM5208 gimbal motor pricing, Austrian warehouse). Aeroboticshop.com (Cube Orange+ Standard Set + ADS-B, Netherlands official reseller). AliExpress (AD9361 clone dev-board modules, Shenzhen sellers). eBay (Shenzhen-direct AD9361 module listings). LCSC (bulk RF amplifier components, Chinese distributor for PCB-level sourcing). 1688.com mentioned for brigade-level negotiation pattern but not directly priced here (Mandarin-only interface). None of these prices were obtained via formal quote — they are list prices as displayed on supplier websites. Implementing forces should treat them as order-of-magnitude estimates only.
Formal verification — existing proofs. The following numerical claims on this page are verified in provable_claims.py:
JAM_RANGE_F26— Friis-equation jamming range derivation (applies to cluster per-mast jamming budget)VEG_LOSS_VHF,VEG_LOSS_5GHZ— boreal-forest loss per ITU-R P.833-9VEG_ADVANTAGE_RATIO— VHF vs S-band through-canopy signal advantage
Proofs not yet written. The revised 2-gimbal architecture, 7-mast rollup, sealed-fuse count, and cost-tier ranges are not yet formalised in provable_claims.py. They should be added by the implementing force or by FSG-A in a future session. Until then, the arithmetic in the code blocks on this page is the only verification available, and it is only as trustworthy as the parameters fed into it — which, for cost, are unverified Western distributor list prices.
Sources
Primary technical sources listed in the preceding section. Cross-references within the FSG-A wiki — airframe integration and snow-landing turnaround: fischer26e.html; energy budget: fischer26-energy.html; baseline EW architecture: fischer26-whitepaper.html; frequency-hopping self-protection on Fischer 26E (the per-mast agility this cluster inherits): adaptive-fhss.html; IFF mechanism shared with baseline jammer: whitelist.py in fsga-code-v2.zip; cold-weather component behaviour: cold-component-failure.html.