Chapter 1: The Five Link Types
Every drone in the air right now is using between one and five simultaneous radio links. Most operators can name two. This chapter covers all five.
The Problem Nobody Talks About
A racing quad has two links — RC control and video. Simple. But the moment you add GPS return-to-home, you've added a third (telemetry). Add a companion computer with a mesh radio and you're at four. Add a payload camera with its own downlink and you're at five.
Each link has its own frequency, its own protocol, its own antenna, its own failure mode, and its own opinion about which direction the drone should go. When they disagree, things get interesting.
Understanding the five link types is the foundation of everything else in this handbook. If you don't know what's talking on your drone, you can't diagnose why it stopped talking.
The Five Links
Link 1: Manual Control (RC)
What it does: Carries stick commands from the pilot to the flight controller. The link that keeps a human in the loop.
Protocols: ELRS (ExpressLRS), CRSF (TBS Crossfire), GHST (IRC Ghost), SBUS (FrSky), IBUS (FlySky), PPM (legacy).
Frequencies: - 2.4 GHz — most common (ELRS 2.4, CRSF, Ghost, FrSky ACCST) - 900/868 MHz — long range (ELRS 900, Crossfire, FrSky R9) - Sub-GHz proprietary — tactical (IRONghost dual-band)
What you need to know: - This is the only link where latency matters in milliseconds. ELRS at 500 Hz has ~2 ms latency. SBUS is ~6 ms. At 250 Hz freestyle, you won't feel the difference. In a racing final, you might. - Loss of this link triggers failsafe. Every FC firmware handles failsafe differently. Know yours before you need it. - ELRS and Crossfire use serial protocols (CRSF wire format) that carry bidirectional telemetry inside the RC link. This blurs the line between Link 1 and Link 2 — your RC receiver is also a telemetry radio. This is efficient but means RC loss also kills your telemetry.
Common problems: - RC and video on the same frequency band (both 2.4 GHz) causing desense. Solution: different bands, or physical antenna separation. - Wrong UART baud rate in FC configurator — CRSF wants 420000, not 115200. - ELRS binding phrase mismatch after firmware update.
Link 2: Telemetry / Command & Control (C2)
What it does: Bidirectional data link between the drone and a ground station. Carries flight data down (position, battery, attitude) and commands up (waypoints, parameter changes, mode switches).
Protocols: MAVLink v2 (ArduPilot, PX4), MSP (Betaflight, iNav), LTM (Lightweight Telemetry), FrSky S.Port/F.Port.
Transport options: - Embedded in RC link — CRSF/ELRS carry MAVLink or custom telemetry inside the control channel. No separate radio needed. - Dedicated telemetry radio — SiK (3DR), RFD900x, MicroHard P900. Separate frequency, separate antenna, separate failure mode. - WiFi — ESP32 bridge, companion computer WiFi, mesh radio backhaul. - Cellular — LTE modems for beyond-visual-line-of-sight (BVLOS).
What you need to know: - MAVLink is the lingua franca for autonomous platforms. If you're running ArduPilot or PX4, everything speaks MAVLink. If you're running Betaflight, everything speaks MSP. If you're running a mixed fleet, you need both. - Telemetry bandwidth matters more than telemetry latency. You don't need millisecond position updates on the ground — 1-10 Hz is fine. But you do need all the data fields to arrive intact. - Dedicated telemetry radios (RFD900x, SiK) are point-to-point. They don't scale to multiple drones without a mesh layer on top.
Common problems:
- MAVLink stream rate misconfigured — too high floods the link,
too low makes the GCS look frozen. Start with SR0_POSITION=2,
SR0_EXTRA1=4, adjust from there.
- SiK radio firmware mismatch between air and ground units.
- UART conflict — telemetry and GPS both assigned to the same UART.
Link 3: Video Downlink
What it does: Sends camera feed from the drone to the pilot's goggles or ground station monitor. The link that lets you see.
Technologies: - Analog 5.8 GHz — lowest latency (~1 ms glass-to-glass), degrades gracefully (static, then snow, then nothing). Still dominant in FPV racing and tactical ops where latency kills. - DJI digital — DJI O3, O4, Vista, Air Unit. Low latency (~20-28 ms), good image quality, locked ecosystem. No third-party interop. - HDZero — digital, ultra-low latency (~15 ms), open ecosystem, lower resolution than DJI. Popular with racers going digital. - OpenHD / WFB-ng / OpenIPC — open-source digital video over commodity WiFi hardware (RTL8812AU/EU). Higher latency (~80-120 ms), fully open, hackable, configurable. The platform for custom builds. - Walksnail (Avatar) — Caddx/Walksnail digital system. Competes with DJI on image quality, runs on Artosyn AR8030 chip.
What you need to know: - Video is almost always 5.8 GHz. This means it's on the same band as 5 GHz WiFi, some mesh radios, and the 5.8 GHz ISM band that everyone assumes is uncontested. In practice, 5.8 GHz is crowded. - Analog video uses 40 channels across 5.8 GHz. At a race event with 8 pilots, frequency management is a real operational problem. At a tactical deployment with multiple teams, it's a coordination requirement. - Digital video links (DJI, HDZero) are frequency-hopping or wideband. They're harder to interfere with but also harder to coordinate. You can't just "pick a channel" the way you can with analog. - The RTL8812AU chip that OpenHD/WFB-ng depends on has been discontinued by Realtek. The RTL8812EU replacement does NOT support monitor mode in the same way. This is slowly killing the open-source digital FPV ecosystem. OpenIPC is moving to other solutions.
Common problems: - 5.8 GHz video transmitter (VTX) too close to 2.4 GHz RC antenna causes receiver desense. Minimum 10 cm separation, more is better. - VTX power set too high for proximity flying — at 800 mW you're heating the VTX and potentially interfering with your own RC. 25-200 mW is enough for most LOS operations. - Wrong VTX table in Betaflight — mismatched power levels, missing channels, or wrong band assignments.
Link 4: Payload Data
What it does: Carries data from a mission payload — mapping camera, multispectral sensor, LiDAR, SAR, SIGINT receiver, delivery mechanism confirmation. Distinct from the FPV video feed (Link 3).
Technologies: - Ethernet (wired, on companion computer) - USB (camera to companion) - WiFi (payload-specific AP) - Dedicated RF downlink (separate frequency, separate antenna) - Store-and-forward (record on board, download after landing)
What you need to know: - Most consumer and racing drones don't have Link 4. It shows up on commercial mapping drones, agricultural platforms, and defense ISR platforms. - Payload data is usually high bandwidth and tolerant of latency. A mapping camera generates gigabytes per flight — you're not streaming that in real time. You're storing it and downloading after landing. - When payload data IS streamed (tactical video from a gimbal camera, SAR data, EW sensor output), it competes for bandwidth with telemetry and video. This is where mesh radios with QoS become important — prioritize C2 over payload, always. - The companion computer is the integration point. Payload connects to companion via USB/Ethernet/GPIO. Companion decides what goes down the RF link and what gets stored.
Common problems: - Payload drawing too much power from the FC's 5V/12V rail. Payload should have its own BEC or regulated supply. - USB bandwidth contention between payload camera and companion computer's other USB devices. - Payload data timestamps not synchronized with flight controller timestamps. Use GPS time or NTP on the companion for correlation.
Link 5: Mesh / Swarm Coordination
What it does: Drone-to-drone communication for fleet operations. Position sharing, intent coordination, task allocation, sensor data relay. The link that turns individuals into a team.
Technologies: - ESP-NOW — Espressif peer-to-peer, 2.4 GHz, ~250 byte packets, no infrastructure needed. Good for ground operations (Tooth mesh, pre-flight sync). Not suitable for in-flight swarm at range. - WiFi mesh (batman-adv / 802.11s) — Linux-based mesh networking. Doodle Labs, Silvus, and Persistent Systems all use this under the hood (yes, your $5,000 Silvus StreamCaster is running OpenWRT with batman-adv). Range 1-50 km depending on radio and power. - MANET (Mobile Ad-hoc Network) — military-grade mesh with frequency hopping, anti-jam, encryption. Persistent Systems MPU5, Silvus at higher tiers, Harris/L3Harris. $10,000-50,000 per node. - MAVLink over mesh — any of the above carrying MAVLink messages between platforms. Each drone gets a unique system ID (1-254). Standard MAVLink messages (GLOBAL_POSITION_INT, HEARTBEAT) become the swarm awareness layer.
What you need to know: - Most drones don't have Link 5. It's the last link to be added and the first to be cut when budget or weight is tight. - Mesh radios that claim "50 km range" are telling you the radio range, not the mesh range. Mesh adds overhead. Real throughput across 3 hops is typically 30-50% of single-hop throughput. - The dirty secret of tactical mesh: Doodle Labs is OpenWRT on Atheros/Qualcomm WiFi silicon running batman-adv. Silvus is similar with their own MAC layer. Persistent Systems MPU5 is the most custom but still builds on standard radio architectures. They're not magic. They're well-engineered WiFi radios in ruggedized enclosures with good antenna design and custom firmware. - Mesh network planning is its own discipline. Node placement, antenna orientation, channel assignment, traffic prioritization — these matter more than the radio's datasheet specs.
Common problems:
- Mesh radio on 2.4 GHz interfering with 2.4 GHz RC link.
Solution: different bands (mesh on 900 MHz or 5 GHz).
- batman-adv OGM (Originator Message) interval too high, causing
stale routing. Default 1 second is fine for slow-moving platforms.
Fast-moving drones may need 250 ms.
- IP address conflicts in the mesh. Use a consistent addressing
scheme: 10.0.0.{system_id} with system_id matching MAVLink ID.
How They Interact
The five links are not independent. They share spectrum, share power, share the FC's limited UARTs, and share the operator's limited attention.
Frequency Deconfliction
| Link | Common Frequency | Conflict With |
|---|---|---|
| RC (Link 1) | 2.4 GHz | WiFi mesh, BLE, companion WiFi |
| RC (Link 1) | 900 MHz | Telemetry radio, mesh radio |
| Telemetry (Link 2) | 900 MHz | Long-range RC, mesh radio |
| Video (Link 3) | 5.8 GHz | 5 GHz WiFi, mesh radio, payload WiFi |
| Payload (Link 4) | varies | depends on payload type |
| Mesh (Link 5) | 2.4/5/900 MHz | everything else |
The rule: no two links on the same band within the same airframe unless they're designed to coexist. ELRS 2.4 GHz and an ESP32 WiFi AP on the same drone will fight. ELRS 900 MHz and an RFD900x telemetry radio will fight. Plan your frequency layout before you build.
UART Allocation
A typical F405 flight controller has 3-6 UARTs. They get consumed fast:
| UART | Typical Assignment |
|---|---|
| UART1 | RC receiver (CRSF/ELRS/SBUS) |
| UART2 | GPS |
| UART3 | Telemetry radio or MSP bridge |
| UART4 | ESC telemetry (if DShot + telemetry) |
| UART5 | Companion computer (MAVLink or MSP) |
| UART6 | (you're out of UARTs) |
Running out of UARTs is one of the most common integration problems on F4-class FCs. Solutions: use soft serial (limited baud rate), upgrade to an H7 FC (more UARTs), or use a companion computer to multiplex multiple data streams over a single UART.
Power Budget
Every link has a radio that draws power. Every radio has an amplifier that draws more power. On a 5-inch FPV quad with a 1300 mAh 6S battery, your total electronics budget (FC + ESCs + radio + VTX + GPS + receiver) is typically 2-5W continuous. Adding a mesh radio at 1-2W is significant. Adding a companion computer at 3-10W changes your flight time.
Know your power budget before you add links.
The Operator's Decision
Not every drone needs all five links. Most don't. The right number of links depends on the mission:
| Mission | Links Needed |
|---|---|
| FPV racing | 2 (RC + video) |
| Freestyle / cinematic | 2-3 (RC + video + optional telemetry) |
| Mapping / survey | 3-4 (RC + telemetry + video + payload) |
| Tactical ISR | 4-5 (all five) |
| Swarm operations | 5 (all five, mesh is mandatory) |
| Autonomous delivery | 3 (telemetry + video + optional mesh) |
More links = more complexity = more things to break = more things to diagnose. Add links because the mission requires them, not because the hardware supports them.
Next
- Chapter 2: Frequency Bands and Regulatory Reality — the rules that govern where your links can operate, and the gaps between the rules and reality.
- Chapter 8: UART Layout and Why It Matters — the practical constraint that limits how many links you can actually use.
Every link you add is a complication. Know what it costs before you add it.
Chapter 2: Frequency Bands and Regulatory Reality
The regulations tell you what you're allowed to do. The physics tell you what will actually work. They don't always agree.
The Bands That Matter
Drone operations live in a handful of frequency bands. Here's where everything sits and why.
900 MHz (902–928 MHz in the US, 868 MHz in EU)
What lives here: Long-range RC links (ELRS 900, TBS Crossfire), telemetry radios (RFD900x, SiK, MicroHard P900), some mesh radios, LoRa, and a surprising amount of industrial IoT.
Why it matters: Sub-GHz propagation is king. 900 MHz bends around obstacles, penetrates foliage, and reaches farther per milliwatt than any other band you'll use. A 100 mW ELRS 900 link will outrange a 1 W 2.4 GHz link in most real-world environments.
Regulatory: - US: ISM 902–928 MHz, up to 1 W conducted + antenna gain (FCC Part 15.247) - EU: 868 MHz band, 25 mW ERP with duty cycle limits (ETSI EN 300 220) - The EU/US split is the single biggest cross-border problem in drone operations. 900 MHz hardware built for the US market doesn't work in Europe, and vice versa. ELRS handles this with region-specific firmware builds. Many other systems don't.
What the regulations don't tell you: The 900 MHz ISM band is shared with utility meters (smart grid AMI), industrial SCADA, agricultural sensors, and LoRaWAN gateways. In urban environments, the noise floor at 900 MHz can be 20+ dB higher than rural. Your range will be shorter in the city.
2.4 GHz (2400–2483.5 MHz)
What lives here: Most RC links (ELRS 2.4, Ghost, ACCST, IBUS), WiFi (802.11b/g/n/ax), Bluetooth, ZigBee, microwave ovens, baby monitors, wireless cameras, mesh radios, and roughly half of all wireless devices ever manufactured.
Why it matters: 2.4 GHz is the default for everything. It's globally harmonized (same band everywhere), license-free, and supported by every chip on the market. If you don't know what frequency to use, you use 2.4 GHz. So does everyone else.
Regulatory: - Global ISM band, generally 100 mW–1 W EIRP depending on jurisdiction - FCC: up to 1 W conducted, 4 W EIRP with directional antennas (Part 15.247) - EU: 100 mW EIRP (ETSI EN 300 328) - Japan: 10 mW/MHz (effectively limits wideband signals)
What the regulations don't tell you: 2.4 GHz is a war zone. At any given moment at a race event, fly-in, or urban deployment site, you're sharing spectrum with: - Every phone's WiFi and Bluetooth - Every laptop's WiFi - Every smart home device - Other pilots' RC links - Nearby mesh radios - The microwave in the food truck
The saving grace is that modern protocols (ELRS, Ghost, CRSF) use frequency hopping, which spreads the signal across the entire band and makes them resilient to narrowband interference. But when the entire band is congested, even FHSS degrades.
The 2.4 GHz deconfliction problem: If your RC link is 2.4 GHz AND your mesh radio is 2.4 GHz AND your companion computer's WiFi is 2.4 GHz, you have three transmitters on the same band in the same airframe. Even with different channels and different protocols, the front-end receivers will desense each other. The fix is simple: put at least one of them on a different band.
5.8 GHz (5725–5875 MHz)
What lives here: Analog FPV video, digital FPV video (DJI, HDZero, Walksnail), 5 GHz WiFi (802.11a/n/ac/ax), some mesh radios, radar, and weather services.
Why it matters: 5.8 GHz is the FPV video band. Virtually every drone with a camera transmits video on 5.8 GHz. The band has enough bandwidth for analog and digital video, and the higher frequency means smaller antennas.
Regulatory: - ISM 5.725–5.875 GHz in most jurisdictions - FCC: 1 W conducted (Part 15.247) - EU: 25 mW EIRP (yes, really — ETSI EN 300 440). Most VTX modules shipped into the EU are technically non-compliant at any setting above 25 mW. - The broader 5 GHz UNII bands (5.15–5.35, 5.47–5.725 GHz) are used by WiFi but have DFS (Dynamic Frequency Selection) requirements due to radar coexistence. DFS can force your radio to change channels mid-flight. Not ideal.
What the regulations don't tell you: - 5.8 GHz has significantly higher path loss than 2.4 GHz. In free space, 5.8 GHz loses ~7.7 dB more than 2.4 GHz at the same distance. In practice this means roughly half the range per milliwatt. You compensate with power and antenna gain. - 5.8 GHz does not penetrate foliage, buildings, or terrain well. If you fly behind a tree, your video will break before your RC link does (assuming RC is on 2.4 GHz or 900 MHz). - At FPV race events, analog 5.8 GHz channel management is critical. 40 channels sounds like a lot until 8 pilots are in the air and their harmonics are stepping on each other. Digital systems (DJI, HDZero) are wideband and harder to deconflict — they don't fit neatly into the 40-channel system.
Sub-GHz Below 900 (433, 315, 169 MHz)
What lives here: LoRa long-range, some RC systems (FrSky R9 at 433 MHz in some regions), key fobs, garage door openers, tire pressure monitors, and very long-range telemetry.
Why it matters: Lower frequency = better propagation = longer range. 433 MHz LoRa links can reach 10+ km with tiny antennas and milliwatts of power. But bandwidth is measured in kilobits, not megabits.
Regulatory: - 433 MHz ISM: 10 mW in EU, not ISM in the US (amateur band, requires ham license for non-ISM use) - 315 MHz: US ISM for low-power devices - 169 MHz: EU smart meter band, very restricted
When you'd use it: Very long-range telemetry (LoRa), sub-floor FHSS detection (listening, not transmitting), or interoperability with existing infrastructure on these bands.
Military and Licensed Bands
L-band (1–2 GHz): Some tactical mesh radios (Doodle Labs HelixL+S). Military satellite. GPS (L1 at 1575.42 MHz, L2 at 1227.60 MHz). No ISM access — requires licensing or government authorization.
S-band (2–4 GHz): Overlaps 2.4 GHz ISM. Some military radar. Weather radar. Tactical links.
C-band (4–8 GHz): Doodle Labs C-Band radios, satellite downlinks, some military comms. Requires licensing in most jurisdictions.
You don't need to operate on these bands unless you're working with military or government platforms. But you do need to know they exist because: (a) military radar on S-band and C-band can overwhelm your receivers, and (b) GPS signals on L-band can be jammed or spoofed, affecting your drone's navigation.
The Gap Between Rules and Reality
What Operators Actually Do
The regulatory framework assumes static, ground-based transmitters in controlled environments. Drone operations are none of those things.
In practice: - FPV pilots routinely fly 600–800 mW VTX power despite EU limits of 25 mW - Long-range operators use 900 MHz at full power in countries where the band allocation is ambiguous - "1 W EIRP" limits are rarely enforced at hobby flying fields - Military operators have blanket spectrum authority in their operational areas and don't worry about ISM band rules
This handbook doesn't tell you to break the rules. It tells you the rules exist, what they are, and acknowledges that the enforcement reality differs from the regulatory text. Know your jurisdiction's rules. Make your own informed decisions.
Frequency Coordination at Events
At any gathering of more than 4-5 pilots:
-
Assign video channels before anyone powers up. Analog 5.8 GHz has 40 channels across 6 bands (A, B, E, F, R, L). Use non-adjacent channels. Band F (Fatshark / IRC) and Band R (RaceBand) are the most common for events.
-
Separate RC bands. If half the pilots are on 2.4 GHz ELRS and half are on 900 MHz Crossfire, that's actually ideal — no RC interference between the two groups.
-
Power down when not flying. A VTX broadcasting 800 mW on the ground creates more interference than one in the air at 200m, because ground-level signals have direct paths to every other receiver in the pit area.
-
Know your VTX table. Betaflight's VTX table maps power levels and channels for your specific VTX hardware. Verify it matches reality — misconfigured VTX tables can put you on the wrong channel or the wrong power level.
Frequency Coordination for Fleet Operations
At a commercial or tactical deployment with multiple drones:
-
Map all five links for each platform. Build a frequency plan before the operation, not during it.
-
Separate bands where possible. RC on 900, telemetry on 2.4, video on 5.8, mesh on a different 5 GHz channel. The more band separation, the less self-interference.
-
Document what's transmitting. If you're operating near other teams, other companies, or military assets, knowing exactly what frequencies you're using — and at what power — prevents problems and demonstrates professionalism.
-
Plan for interference. If your operation is near an airport, military base, or large venue (stadiums use a LOT of 2.4 and 5 GHz), your range predictions from a clean test site are optimistic. Budget a 50% range reduction in congested spectrum environments.
Quick Reference: Band Comparison
| Band | Range (per mW) | Penetration | Bandwidth | Congestion | Typical Use |
|---|---|---|---|---|---|
| 433 MHz | Excellent | Best | Very low | Low | LoRa telemetry |
| 900 MHz | Very good | Good | Low-medium | Medium | Long-range RC, telemetry |
| 2.4 GHz | Good | Fair | High | Severe | RC, WiFi, mesh, BLE |
| 5.8 GHz | Fair | Poor | Very high | High | FPV video, WiFi |
The universal trade-off: lower frequency = longer range and better penetration but less bandwidth. Higher frequency = more bandwidth but shorter range and worse penetration. Everything in RF engineering is a version of this trade-off.
Next
- Chapter 3: Antennas for People Who Aren't RF Engineers — how to choose, orient, and not break your antennas.
- Chapter 1: The Five Link Types — frequency deconfliction in the context of a complete drone system.
The spectrum is a shared resource. Know what you're transmitting, where, and at what power. The drone next to you is sharing the same resource.
Chapter 3: Antennas for People Who Aren't RF Engineers
The antenna is the most important and least understood component on your drone. A $200 radio with a bad antenna loses to a $30 radio with a good one.
The One Rule
Match your antenna to your link.
That's it. Everything else in this chapter is explaining what that means and how to do it.
What an Antenna Does
An antenna converts electrical signal into radio waves (transmit) and radio waves back into electrical signal (receive). It doesn't amplify — it shapes. An antenna with "5 dBi gain" isn't creating energy. It's focusing the energy that's already there into a narrower pattern, the same way a flashlight focuses light from a bulb into a beam.
More gain = narrower beam = longer range in one direction, shorter range in every other direction.
This is the fundamental trade-off in antenna selection. There is no antenna that's better in all directions. There are only antennas that trade coverage pattern for range.
Antenna Types You'll Actually Use
Dipole / Whip
What it is: A straight stick. The stock antenna on most receivers, telemetry radios, and mesh radios.
Pattern: Donut-shaped. Good coverage in all horizontal directions, weak directly above and below the antenna axis.
Gain: 2–5 dBi
When to use it: Default choice for anything where you don't know which direction the other radio will be. RC receivers, telemetry, mesh nodes on drones that fly in all orientations.
Orientation matters: A vertical dipole radiates horizontally. A horizontal dipole radiates vertically. On a drone, the receiver antenna should point down or sideways — NOT parallel to the frame. Two antennas at 90 degrees to each other (antenna diversity) covers all orientations.
Patch Antenna
What it is: A flat rectangle. Common on GPS modules, some directional links, and video receivers.
Pattern: Directional — strong in front, weak behind. Like holding up a book and only hearing what's in front of it.
Gain: 6–14 dBi depending on size
When to use it: On the ground station pointing at the drone. GPS antennas (patch facing sky). Video receiver antennas in goggles (facing forward). NOT on the drone itself unless you know exactly where the ground station will be.
The goggle antenna mistake: Many pilots fly with stock goggle antennas (usually small omnis) and wonder why they get video breakup at 500m. Replacing one goggle antenna with a directional patch that points toward the flying area can double or triple video range with no change to the drone.
Helical Antenna
What it is: A coil of wire. Comes in two types: normal-mode (small, used as compact omni) and axial-mode (larger, highly directional, used for long range).
Pattern: Axial-mode helix is a focused beam — high gain, narrow coverage. Normal-mode is similar to a dipole.
Gain: 8–15+ dBi (axial mode)
When to use it: Ground-station tracking antenna for long-range operations. Paired with an antenna tracker that points it at the drone. Not practical on the drone itself (too large, too directional).
Pagoda / Lollipop / Stubby
What it is: Compact circular-polarized antenna. The standard FPV video antenna on both the drone and the goggles.
Pattern: Roughly omnidirectional with circular polarization.
Gain: 1–3 dBi
When to use it: 5.8 GHz FPV video. Both the VTX antenna on the drone and the receiver antenna on the goggles should be circular polarized and the same handedness (both RHCP or both LHCP). Mixing handedness costs you ~3 dB (half your signal).
Why circular polarization for video: When a linearly polarized signal bounces off a surface (multipath), its polarization can rotate. If your receive antenna is linear and the signal arrives at the wrong angle, you lose it. Circular polarization doesn't have this problem — it receives equally regardless of rotation. The trade-off is ~3 dB less gain than an equivalent linear antenna.
PCB / Ceramic Chip Antenna
What it is: A tiny antenna printed on the circuit board or bonded as a ceramic chip. Found inside ESP32 modules, Bluetooth devices, GPS modules, and small receivers.
Pattern: Roughly omnidirectional but with significant nulls depending on PCB ground plane and nearby components.
Gain: -2 to 2 dBi (often negative gain compared to an ideal isotropic radiator)
When to use it: When size and cost matter more than range. The ESP32-C6 on a Tooth uses its built-in PCB antenna for mesh communication at short range. For anything beyond 100m, use an external antenna via the U.FL/IPEX connector if available.
Polarization
Radio waves vibrate in a specific orientation. If the transmit antenna sends vertically polarized waves and the receive antenna is oriented horizontally, you lose ~20 dB of signal. That's the difference between a clear link and no link.
The rules: - Linear antennas (dipole, whip): orient both the same way. Both vertical, or both horizontal. On a drone that changes orientation constantly, this is hard — which is why diversity (two antennas at 90 degrees) helps. - Circular polarized antennas (pagoda, lollipop): match handedness. Both RHCP or both LHCP. Don't mix. - Cross-polarization loss: linear TX → circular RX (or vice versa) costs ~3 dB. Not ideal but survivable.
Connectors
The small connectors used in drone antennas are fragile. Know them.
| Connector | Size | Common Use | Durability |
|---|---|---|---|
| SMA | Medium | VTX, telemetry radio, ground station | Good — threaded, secure |
| RP-SMA | Medium | Same as SMA, reversed polarity | Good — check male/female |
| U.FL / IPEX | Tiny | On-board connections, GPS, receiver | Fragile — 30 mate cycles rated |
| MMCX | Small | Some receivers, compact VTX | Fair — snap-on, better than U.FL |
The U.FL problem: U.FL (also called IPEX or MHF) connectors are rated for about 30 connect/disconnect cycles. After that, the spring contact weakens and the connection becomes intermittent. Every time you unplug and replug a U.FL antenna, you're using one of those 30 cycles. On a racing drone that gets rebuilt weekly, this matters.
Fix: Don't disconnect U.FL antennas unless you have to. Route the antenna wire so it stays connected during maintenance. If a U.FL connection becomes intermittent (video cuts out when you flex the cable), replace the pigtail — the connector is worn out.
Antenna Placement on a Drone
Where you put the antenna matters as much as which antenna you choose.
Do
- Mount RC receiver antennas pointing away from the frame at 90 degrees to each other (diversity). The classic "V" shape with antenna tubes works.
- Mount GPS antenna on top of the frame with a clear view of the sky. No carbon fiber between the GPS patch and the satellites.
- Mount the VTX antenna where it won't get hit in a crash. Rear-facing on a standoff is common.
- Keep transmit antennas (VTX, mesh radio) as far from receive antennas (RC receiver, GPS) as physically possible on the frame.
Don't
- Don't run antenna wires parallel to power wires. Motor current creates magnetic fields that induce noise in antenna cables.
- Don't let antenna wires cross each other at sharp angles.
- Don't fold or kink antenna wires. The coax impedance changes at the bend and reflects signal back instead of radiating it.
- Don't mount antennas inside a carbon fiber enclosure. CF attenuates RF. If the antenna is inside a CF tube, you're losing signal.
- Don't forget the ground plane. A 900 MHz dipole needs a ground plane (the FC, the frame, or a dedicated ground plane element) to radiate properly. Hanging in free space with no ground reference, it underperforms.
Range Estimation (Quick and Dirty)
You don't need to calculate a full link budget to estimate range. Here's the shortcut.
Start with the manufacturer's claimed range. Divide by 3. That's your real-world range with obstacles, interference, and non-ideal antenna placement.
If you're doing better than 1/3 of claimed range, your setup is good. If you're doing worse, check antenna orientation, connections, and interference from other on-board transmitters.
If you need more range: 1. Better antenna on the ground station (cheapest improvement) 2. Higher VTX/radio power (easy but wastes battery) 3. Better antenna on the drone (limited by weight/size) 4. Lower frequency band (900 MHz instead of 2.4 GHz) 5. Higher gain directional antenna with tracker (most effective, most complex)
The order above is also the order of cost-effectiveness. A $15 directional antenna on your goggles does more for range than a $50 amplifier on the drone.
The Antenna You Already Have
Before buying new antennas, check the ones you have:
- Is it the right band? A 5.8 GHz antenna on a 2.4 GHz radio is a $0 dummy load. It will not work. At all. This sounds obvious but it happens.
- Is it connected? Flex the cable gently at the connector. If the signal changes, the connection is bad.
- Is it damaged? A cracked antenna element, kinked coax, or corroded connector all kill performance.
- Is it oriented correctly? Rotating an antenna 90 degrees can cost 20 dB. Try different orientations before buying a new antenna.
Long-Range Antenna Setups (What Actually Gets You 20km)
When you see someone post a 20km flight on a wifibroadcast system like OpenHD, they're not using stock dipoles. They're using a high-gain directional antenna on the ground pointed at the drone, usually with an antenna tracker. The drone side stays omni.
This is the same principle as TV broadcasting. The TV tower has a high-power omnidirectional transmitter. Your house has a directional antenna (the dish, the yagi on the roof) pointed at the tower. One side broadcasts everywhere, the other side listens in one direction very well. Wifibroadcast systems work identically.
Stock Antennas: Set Realistic Expectations
| Setup | Ground Antenna | Air Antenna | Realistic Range |
|---|---|---|---|
| Stock both ends | Dipole 2-3 dBi | Dipole 2-3 dBi | 1-3 km |
| Upgraded ground | Patch 8-12 dBi | Dipole 2-3 dBi | 5-8 km |
| Directional + tracker | Yagi 12-14 dBi | Cloverleaf 3 dBi | 8-15 km |
| High-gain + tracker | Panel array 16-18 dBi | Pagoda 4 dBi | 10-20 km |
| Extreme | Grid/dish 20-24 dBi | Omni 3 dBi | 20 km+ |
The math is simple. Every 6 dB of additional antenna gain roughly doubles your range. Going from a stock dipole (3 dBi) to a panel array (18 dBi) adds 15 dB — that's about 5.6× the range. 3 km × 5.6 = ~17 km.
OpenHD's own range calculations (from openhdfpv.org/hardware/antennas, assuming -93dBm Rx sensitivity and 10dB link margin) confirm this:
| Ground Antenna | Air Antenna | Freq | TX Power | Calculated Range |
|---|---|---|---|---|
| Maple 5dBi omni | Maple 5dBi omni | 5.2 GHz | 200 mW | 2.9 km |
| Maple 14dBi flat panel | 5dBi omni | 5.2 GHz | 200 mW | 8.2 km |
| 17dBi planar | 5dBi omni | 5.8 GHz | 500 mW | 16.4 km |
Their FAQ states it directly: "1–3km is easy to achieve, even with low power WiFi cards and the antennas that come with them. Carefully chosen WiFi cards, antennas, and optionally an antenna tracker should put 20km+ within reach."
Air Side: Stay Omnidirectional
The drone changes orientation constantly — banks, turns, pitches. A directional antenna on the drone would lose link every time it turns away from you. Use omnidirectional antennas:
- Cloverleaf / Skew-Planar (RHCP): 2-3 dBi, circular polarized. Better multipath rejection than linear dipoles. The standard upgrade from stock.
- Pagoda (RHCP): 3-5 dBi, still mostly omni. Slight gain improvement over cloverleaf.
- Stock dipole: Works fine under 2 km. Replace for anything serious.
Use matching polarization on both ends — vertical/vertical or horizontal/horizontal. Cross-polarization costs 3 dB (half your power). RHCP circular polarization works for multipath rejection but most wifibroadcast community setups use linear vertical since the common directional ground antennas (panels, yagis) are linear vertical.
Ground Side: This Is Where Range Comes From
| Antenna | Gain | Beamwidth | Needs Tracker? | Notes |
|---|---|---|---|---|
| Stock dipole | 2-3 dBi | 360° omni | No | Default. Fine for close-in. |
| Patch panel (flat) | 8-12 dBi | 60-90° | No | Point toward flying area. Good first upgrade. |
| Yagi | 10-14 dBi | 30-50° | Recommended | Classic directional. Cheap, effective. |
| Helical (RHCP) | 12-16 dBi | 30-40° | Yes | Circular polarized — best for wifibroadcast. |
| Panel array (2×2 / 4×4) | 14-18 dBi | 20-30° | Yes | High gain, manageable size. Popular for long range. |
| Grid / parabolic dish | 18-24 dBi | 10-15° | Must track | Extreme range. Very narrow beam — loses link without tracker. |
Antenna Trackers
Once your ground antenna exceeds ~10 dBi, the beam is narrow enough that you need to physically point it at the drone. An antenna tracker does this automatically using the drone's GPS position from the telemetry stream.
| Tracker | Protocol | Cost | Notes |
|---|---|---|---|
| u360gts | MAVLink / LTM / GPS | $30-60 DIY | Open-source, Arduino. Most popular in long-range FPV. Uses GPS from telemetry to compute bearing + elevation. |
| YAAPU AAT | MAVLink via ELRS/Crossfire | $40-80 DIY | Runs on OpenTX/EdgeTX radio. Yaapu telemetry script drives servos. |
| Commercial (various) | Various | $200-500 | Pre-built. Less common — most long-range pilots DIY. |
Dual Antenna Diversity (Best Practice)
Run two antennas on the ground: one omni + one directional on a tracker. The receiver picks the strongest signal per packet.
This gives you reliable close-range coverage (omni catches the drone overhead, behind you, during takeoff/landing) AND long-range capability (directional catches it at 15km). No switching, no manual pointing for nearby flights.
Most wifibroadcast systems (OpenHD, Ruby) support antenna diversity natively — plug in two adapters and it works.
Next
- Chapter 4: Link Budgets Without the Math — estimating range from specs without a calculator.
- Chapter 1: The Five Link Types — which antenna goes with which link.
The best antenna is the one that's pointed the right way, connected properly, and on the correct frequency. Everything else is optimization.
Chapter 4: Link Budgets Without the Math
A link budget tells you whether your radio link will work at a given distance. You don't need a calculator. You need to understand three numbers and three things that kill them.
The Three Numbers
Every radio link has three numbers that determine whether it works:
1. Transmit Power (How loud you're shouting)
Measured in milliwatts (mW) or dBm. More power = more range, up to a point.
| Power | dBm | Typical Use |
|---|---|---|
| 10 mW | 10 dBm | Bluetooth, low-power telemetry |
| 25 mW | 14 dBm | EU legal VTX limit, ELRS minimum |
| 100 mW | 20 dBm | Standard FPV, ELRS default |
| 250 mW | 24 dBm | Long-range FPV |
| 500 mW | 27 dBm | Extended range |
| 1000 mW (1W) | 30 dBm | FCC limit for most ISM, long-range telemetry |
The key insight: Doubling your power only gets you ~40% more range (because radio signal falls off with the square of distance). Going from 100 mW to 200 mW doesn't double your range — it adds about 40%. Going from 100 mW to 1000 mW (10x power) roughly triples your range. Power is an expensive way to buy range.
2. Receiver Sensitivity (How well you can hear a whisper)
Measured in dBm (negative numbers — more negative = more sensitive). This is how faint a signal the receiver can still decode.
| Sensitivity | Typical Device |
|---|---|
| -90 dBm | Basic WiFi receiver |
| -105 dBm | Good telemetry radio (SiK) |
| -112 dBm | ELRS 2.4 GHz at 50 Hz |
| -117 dBm | ELRS 900 MHz at 25 Hz |
| -130 dBm | LoRa at lowest data rate |
| -148 dBm | Wio-SX1262 (absolute best available) |
The key insight: Receiver sensitivity improves when you lower the data rate. ELRS at 500 Hz (fast, for racing) has worse sensitivity than ELRS at 50 Hz (slow, for long range). This is why long-range modes exist — they trade update rate for range.
3. Link Margin (How much room you have before it breaks)
Link margin = (transmit power + antenna gains) - (path loss) - (receiver sensitivity)
If the margin is positive, the link works. If it's negative, it doesn't. The bigger the positive margin, the more resilient the link is to fading, interference, and obstacles.
Comfortable margins: - 10 dB: Works in clean conditions, fragile in the real world - 20 dB: Handles moderate interference and some obstacles - 30 dB+: Robust link, will survive urban environments and bad days
The Three Things That Kill Links
1. Distance (Path Loss)
Radio signals get weaker with distance. In free space (no obstacles), the signal drops by 6 dB every time you double the distance. That means at twice the distance, you have one quarter the signal power.
Free-space path loss at common frequencies:
| Distance | 900 MHz | 2.4 GHz | 5.8 GHz |
|---|---|---|---|
| 100 m | -51 dB | -60 dB | -68 dB |
| 500 m | -65 dB | -74 dB | -82 dB |
| 1 km | -71 dB | -80 dB | -88 dB |
| 5 km | -85 dB | -94 dB | -102 dB |
| 10 km | -91 dB | -100 dB | -108 dB |
Read this table like this: at 1 km on 2.4 GHz, the signal is 80 dB weaker than when it left the transmitter. If you started with 20 dBm (100 mW) transmit power and 0 dBi antennas, the signal arriving at the receiver is 20 - 80 = -60 dBm. If your receiver sensitivity is -112 dBm, your margin is 52 dB. Plenty.
At 10 km, the same setup gives you 20 - 100 = -80 dBm arriving signal. Margin is 32 dB. Still fine in free space.
But you're not in free space.
2. Obstacles (The Real Range Killer)
Free-space path loss is the theoretical minimum. Everything else makes it worse:
| Obstacle | Additional Loss |
|---|---|
| Light foliage (few trees) | 3–10 dB |
| Dense forest | 15–30 dB |
| Single brick wall | 10–15 dB |
| Concrete building | 20–40 dB |
| Metal structure | 30–50+ dB |
| Hill / terrain (no line of sight) | 20–60+ dB |
| Rain (heavy, 5.8 GHz) | 1–3 dB per km |
| Humidity (negligible below 10 GHz) | < 1 dB per km |
The single biggest factor in real-world range is line of sight. If you can see the other antenna, the link probably works. If you can't, it might not. Every obstacle between the two antennas subtracts from your margin.
This is why 900 MHz outperforms 2.4 GHz in obstructed environments — lower frequencies diffract around obstacles better. A 900 MHz signal bends around a tree that a 5.8 GHz signal bounces off of.
3. Interference (The Urban Tax)
Every other radio on your frequency subtracts from your link margin by raising the noise floor. In a clean rural environment, the noise floor might be -110 dBm. In a city, it could be -90 dBm. That's 20 dB of margin you just lost to other people's WiFi.
| Environment | Noise Floor (2.4 GHz) | Impact |
|---|---|---|
| Rural, no buildings | -105 to -110 dBm | Minimal — close to theoretical range |
| Suburban | -95 to -100 dBm | 10–15 dB lost to ambient noise |
| Urban | -85 to -95 dBm | 15–25 dB lost |
| Stadium / convention | -75 to -85 dBm | 25–35 dB lost — significant range reduction |
| Race event (many pilots) | -80 to -90 dBm | 20–30 dB lost on shared frequencies |
The fix isn't more power (that raises the noise floor for everyone). The fix is: - Different frequency band (if possible) - More directional antennas (which reject interference from the sides) - Lower data rate (which improves receiver sensitivity) - Better antenna placement (which avoids self-interference)
The No-Math Range Estimate
You don't need to calculate path loss. Use this:
Step 1: Find the manufacturer's claimed range for your radio link.
Step 2: Apply the environment factor:
| Environment | Multiply By |
|---|---|
| Open field, clear day, nobody else around | 0.7 |
| Suburban, some trees, moderate interference | 0.4 |
| Urban, buildings, heavy interference | 0.2 |
| Indoor or dense urban canyon | 0.1 |
Step 3: That's your expected range.
Example: ELRS 900 MHz at 100 mW claims 30 km range. - Open field: 30 × 0.7 = 21 km. Reasonable. - Suburban: 30 × 0.4 = 12 km. Realistic. - Urban: 30 × 0.2 = 6 km. About right. - These are LOS (line of sight) estimates. Flying behind a hill or building cuts range further.
How Antennas Change the Budget
Antenna gain is free range. A 6 dBi antenna on the ground station adds 6 dB of margin, which effectively doubles your range compared to a 0 dBi antenna, without increasing power or changing anything on the drone.
Both ends count. If you add 3 dBi on the drone antenna AND 3 dBi on the ground station antenna, you get 6 dB total improvement. But adding gain on the ground station is usually easier (no weight constraint, can use larger antennas, can use a tracker).
The practical limit: On the drone, you're limited to small, lightweight, roughly omnidirectional antennas (2–5 dBi). On the ground, you can use a directional patch (8–14 dBi) or helical (10–16 dBi) on a tracker. The ground antenna is where you get the most range improvement per dollar.
Putting It Together: Example Link Budgets
FPV Racing Quad (Short Range)
RC Link (ELRS 2.4 GHz, 250 mW, 500 Hz):
TX power: 24 dBm
TX antenna: 2 dBi (dipole on drone)
RX antenna: 2 dBi (dipole on TX)
Path loss at 500m: -74 dB
Arriving signal: 24 + 2 + 2 - 74 = -46 dBm
RX sensitivity: -108 dBm (ELRS 500 Hz)
Margin: 62 dB ← massive, no problems
Racing at 500m with ELRS has 62 dB of margin. You could fly behind buildings and through moderate obstacles and still be fine. RC is not your range bottleneck.
Video Link (Analog 5.8 GHz, 400 mW):
TX power: 26 dBm
TX antenna: 2 dBi (pagoda)
RX antenna: 2 dBi (pagoda on goggles)
Path loss at 500m: -82 dB
Arriving signal: 26 + 2 + 2 - 82 = -52 dBm
RX sensitivity: -85 dBm (analog threshold for usable image)
Margin: 33 dB ← healthy
At 500m, analog video has 33 dB of margin. At 2 km it drops to about 21 dB. At 5 km, about 7 dB — you'll see static. Video is always the range bottleneck on an FPV quad, not RC.
Long-Range Survey (5 km)
Telemetry (RFD900x, 1W, 900 MHz):
TX power: 30 dBm
TX antenna: 3 dBi (dipole on drone)
RX antenna: 6 dBi (directional on GCS)
Path loss at 5 km: -85 dB
Arriving signal: 30 + 3 + 6 - 85 = -46 dBm
RX sensitivity: -121 dBm (SiK at 64 kbps)
Margin: 75 dB ← enormous
RFD900x at 5 km in open terrain has 75 dB of margin. Even in heavy suburban with 25 dB noise floor elevation and 15 dB of foliage, you still have 35 dB of margin. This is why RFD900x is the standard for long-range telemetry.
Quick Reference: What Uses Your Margin
| Factor | Typical Impact |
|---|---|
| Double the distance | -6 dB |
| Light foliage in path | -5 to -10 dB |
| One building wall | -10 to -15 dB |
| Urban noise floor (2.4 GHz) | -15 to -25 dB |
| Cross-polarized antennas | -20 dB |
| Antenna connector loss (each) | -0.5 to -1 dB |
| Coax cable loss (per meter) | -0.5 to -2 dB (frequency dependent) |
| Add 6 dBi ground station antenna | +6 dB |
| Switch from 2.4 to 900 MHz | +8 dB at same distance |
| Lower ELRS packet rate by half | +3 dB sensitivity |
Next
- Chapter 3: Antennas — how antenna gain and placement affect these numbers.
- Chapter 1: The Five Link Types — which links are range-limited and which aren't.
Range is not a single number. It depends on what's between you and the drone. The link budget tells you how much you can afford to lose before the link breaks.
Chapter 5: The Four Firmwares
There are four flight controller firmware ecosystems that matter. Each one is the right choice for somebody and the wrong choice for somebody else. This chapter helps you figure out which.
The Landscape
| Firmware | Protocol | Built For | License |
|---|---|---|---|
| Betaflight | MSP v2 | FPV racing, freestyle, acro | GPL-3.0 |
| iNav | MSP v2 | GPS navigation, fixed-wing, VTOL | GPL-3.0 |
| ArduPilot | MAVLink v2 | Autonomous missions, survey, commercial | GPL-3.0 |
| PX4 | MAVLink v2 | Research, defense, companion compute | BSD-3 |
All four are open-source. All four run on STM32 flight controllers. All four are actively developed. None of them are going away.
Betaflight
What it does well: Rate-mode acrobatic flight. Sub-millisecond gyro loop. The tightest, most responsive flight controller stack for manual piloting. If you're flying FPV by hand and you want the sticks to feel like an extension of your body, Betaflight.
What it doesn't do: Autonomous anything. No waypoint missions, no GPS hold (angle mode with GPS rescue is a failsafe, not a flight mode), no companion computer integration beyond MSP bridge, no offboard control. Betaflight assumes a human is flying at all times.
Protocol: MSP v2. Binary request/response over serial. Simple, fast, well-documented. Every message has a function code and a payload. Read PID values, write PID values, download blackbox, read sensor state. No streaming — you ask, it answers.
Configuration: Betaflight Configurator (Chrome app) or CLI.
The CLI is powerful — diff all gives you a complete delta from
defaults, dump all gives you everything. Most experienced
operators work in CLI.
Typical platforms: 5-inch freestyle quads, 3-inch cinewhoops, racing drones, micro quads, FPV wings (with limitations).
Community: Massive. Largest FPV firmware community. Fast development cycle. Frequent releases. Sometimes too frequent — breaking changes between minor versions are common.
When to choose it: Your primary control input is a human with a transmitter. You need the best possible manual flight feel. You don't need autonomous modes, waypoints, or programmatic control.
iNav
What it does well: GPS navigation on everything. Multi-rotor, fixed-wing, VTOL, rovers, boats. If it moves and you want it to follow waypoints or hold position, iNav probably supports it. iNav is what Betaflight would be if Betaflight cared about navigation.
What it doesn't do: It doesn't have ArduPilot's depth of autonomous mission planning or PX4's companion computer integration. It's a step up from Betaflight toward autonomy, but it's not a full autopilot stack.
Protocol: MSP v2 with extensions. Same wire format as Betaflight, but with additional messages for navigation, waypoints, and mission planning. iNav also supports MSP2_COMMON_SETTING for named parameter access — cleaner than Betaflight's CLI-only approach for many settings.
Configuration: iNav Configurator (forked from Betaflight Configurator, same Chrome app pattern). CLI is similar but not identical to Betaflight — don't assume commands transfer 1:1.
Typical platforms: Long-range FPV with GPS return, survey wings, fixed-wing platforms, VTOL (tiltrotor, tailsitter), autonomous boats, GPS-guided multicopters.
Community: Smaller than Betaflight, deeply knowledgeable. Fixed-wing and VTOL support is stronger than any other open-source option except ArduPilot.
When to choose it: You need GPS navigation and you're coming from the FPV world. You want something more capable than Betaflight but less complex than ArduPilot. You're building a fixed-wing or VTOL and don't want to learn the ArduPilot parameter universe.
ArduPilot
What it does well: Everything. Multi-rotor, fixed-wing, helicopter, rover, submarine, boat, antenna tracker, blimp. ArduPilot is the Swiss Army knife of autopilots. It has more flight modes, more parameters, more sensor support, and more mission planning capability than any other open-source firmware.
What it doesn't do well: Simple. ArduPilot has ~1,200 parameters. The learning curve is real. The documentation is extensive but assumes you know what you're looking for. If you just want to fly a 5-inch quad freestyle, ArduPilot is overkill.
Protocol: MAVLink v2. Binary message protocol with system/component addressing. Every device on the network has a system ID (1-254) and component ID (1-254). Messages are published, not requested — you tell the FC what stream rates you want and it sends them continuously. Bidirectional: commands go up, telemetry comes down.
Configuration: Mission Planner (Windows), QGroundControl (cross-platform), MAVProxy (command-line). Parameter tree is deep — learning which parameters matter for your platform takes time. The ArduPilot wiki is your primary reference.
Typical platforms: Commercial survey drones, delivery platforms, research vehicles, defense platforms, agricultural sprayers, any platform that needs full autonomous mission capability.
Community: Large, technical, welcoming. Strong contributor base. Excellent wiki. Monthly developer calls. The go-to choice for academic and government research.
When to choose it: You need real autonomous capability. Waypoint missions, sensor integration, companion computer support, multiple flight modes, or you're building something that isn't a standard multicopter. ArduPilot probably already supports your platform.
PX4
What it does well: Companion computer integration, research workflows, defense applications. PX4 was designed from the ground up for programmatic control. The uORB publish/subscribe internal bus, the uXRCE-DDS bridge to ROS2, and the clean offboard control API make it the natural choice when a computer is flying the drone and a human is supervising.
What it doesn't do well: Community hand-holding. PX4's documentation assumes a higher baseline than ArduPilot's. The parameter set (~900 parameters) is smaller than ArduPilot's but the naming convention is less intuitive. Hardware support is narrower — PX4 cares less about supporting every FC board and more about supporting the ones that matter for its target users.
Protocol: MAVLink v2 (same as ArduPilot, different dialect extensions). Additionally supports uXRCE-DDS for high-bandwidth sensor telemetry to companion computers, replacing the older microRTPS bridge.
Configuration: QGroundControl (primary), PX4 CLI via MAVLink shell. No equivalent to ArduPilot's Mission Planner.
Typical platforms: Research drones, defense autonomous systems, companion-compute-heavy platforms, anything running ROS2, platforms that need VTOL transition.
Community: Smaller than ArduPilot, more academic/defense-focused. Strong institutional backing (Dronecode Foundation, Auterion). Development is faster on core features, slower on edge-case platform support.
When to choose it: You're integrating with ROS2 or a companion computer. You need offboard control APIs. You're building for defense or research. You want a clean software architecture that's designed for programmatic control first and manual control second.
Cross-Firmware Reality
The Split
The FPV world runs Betaflight and iNav. MSP protocol. Configurator apps. CLI dumps. Rate mode. Manual piloting with optional GPS backup.
The autonomous world runs ArduPilot and PX4. MAVLink protocol. GCS applications. Parameter trees. Mission planning. The human supervises, the computer flies.
These two worlds are converging. Betaflight quads are getting GPS rescue and companion computers. ArduPilot platforms are getting acro mode and FPV video. But the protocol split (MSP vs. MAVLink) remains the fundamental divide.
Any tool that wants to work across the whole spectrum — which is what Wingman does — needs to speak both languages fluently.
Switching Firmware
Changing firmware on an existing platform is possible but not trivial. The major challenges:
- Parameter translation: Betaflight PID 44 is not the same as ArduPilot ATC_RAT_RLL_P 0.135. The numbers are in different units, different scales, different ranges. Translation requires understanding both systems.
- UART reassignment: Each firmware has its own UART allocation conventions. Moving from Betaflight to iNav may require remapping every serial port.
- Sensor calibration: Accelerometer, gyro, and compass calibration doesn't transfer. Re-calibrate everything.
- Failsafe behavior: Different firmwares handle RC loss, GPS loss, and battery failsafe differently. Understand the new behavior before you fly.
Quick Reference
| Feature | Betaflight | iNav | ArduPilot | PX4 |
|---|---|---|---|---|
| Manual acro flight | Best | Good | Good | Good |
| GPS hold / RTH | Basic rescue | Good | Best | Good |
| Waypoint missions | No | Yes | Best | Yes |
| Fixed-wing | Limited | Good | Best | Good |
| VTOL | No | Yes | Yes | Yes |
| Companion computer | MSP bridge | MSP bridge | MAVLink + DroneKit | MAVLink + uXRCE-DDS + ROS2 |
| Offboard control | No | Limited | Yes (Guided mode) | Yes (Offboard mode) |
| Parameters | ~100 (CLI) | ~200 (CLI/MSP2) | ~1200 (MAVLink) | ~900 (MAVLink) |
| Configuration tool | BF Configurator | iNav Configurator | Mission Planner / QGC | QGC |
| Blackbox logging | Flash / SD | Flash / SD | SD (DataFlash) | SD (ULog) |
| Community size | Largest | Medium | Large | Medium |
| Release cadence | ~3-4 months | ~6 months | Monthly point releases | ~6 months |
Next
- Chapter 6: MSP Protocol — how to talk to Betaflight and iNav from anything with a serial port.
- Chapter 7: MAVLink Protocol — how to talk to ArduPilot and PX4 from anything with a network connection.
No religious wars. Use what works for your mission. Switch when the mission changes.
Chapter 6: MSP Protocol — The Betaflight/iNav Language
MSP is a question-and-answer protocol. You ask the FC a question (send a request with a function code). It answers (sends a response with the data). No streaming, no subscriptions, no surprises.
What MSP Is
MSP (MultiWii Serial Protocol) is the serial communication protocol used by Betaflight and iNav. It's been around since the MultiWii days and has evolved through several versions. The current version is MSP v2, which supports 16-bit function codes and CRC8 checksums.
MSP is simple by design. It runs over any serial connection (UART, USB, TCP, Bluetooth) at any baud rate. There are no connection handshakes, no sessions, no state. Send a request, get a response.
Packet Format
MSP v2 Request (outgoing)
Byte: 0 1 2 3 4-5 6 7-8 9..N N+1
$ X < flag func_id 0x00 payload payload crc8
0x24 0x58 0x3C 0x00 [16-bit] 0x00 size[16] [data] [crc]
| Field | Size | Value | Description |
|---|---|---|---|
| Header | 3 bytes | $X< |
MSP v2 request marker |
| Flag | 1 byte | 0x00 | Reserved |
| Function ID | 2 bytes | Little-endian | Which data you're requesting |
| Payload size | 2 bytes | Little-endian | 0 for most requests |
| Payload | variable | — | Data (for SET commands) |
| CRC8 | 1 byte | DVB-S2 CRC | Over flag + func_id + size + payload |
MSP v2 Response (incoming)
Byte: 0 1 2 3 4-5 6-7 8..N N+1
$ X > flag func_id size payload crc8
0x24 0x58 0x3E 0x00 [16-bit] [16-bit] [data] [crc]
Same structure but with > (0x3E) instead of < (0x3C).
The Messages That Matter
Identity
| Function | ID | Direction | Returns |
|---|---|---|---|
| MSP_FC_VARIANT | 0x02 | Read | 4-byte ASCII: "BTFL" or "INAV" |
| MSP_FC_VERSION | 0x03 | Read | 3 bytes: major, minor, patch |
| MSP_BOARD_INFO | 0x04 | Read | Board identifier, manufacturer, board name |
These are the first messages to send on any new connection. They tell you what firmware is running, what version, and what hardware it's running on.
Auto-detect pattern: Send MSP_FC_VARIANT. If you get "BTFL", it's Betaflight. If "INAV", it's iNav. If no response within 2 seconds, it's not an MSP firmware (try MAVLink).
PID Tuning
| Function | ID | Direction | Payload |
|---|---|---|---|
| MSP_PID | 0x70 | Read | 9 bytes: [Roll P, Roll I, Roll D, Pitch P, Pitch I, Pitch D, Yaw P, Yaw I, Yaw D] |
| MSP_SET_PID | 0xCA | Write | Same 9 bytes |
Each value is 0-255. The FC interprets these differently by firmware version (scaling factors change between BF 4.3 and 4.4, for example). Always record the firmware version alongside PID values.
Rates
| Function | ID | Direction | Payload |
|---|---|---|---|
| MSP_RC_TUNING | 0x6B | Read | Rate values (format depends on rate type) |
| MSP_SET_RC_TUNING | 0xCC | Write | Same format |
Rate payload format depends on the configured rate type (Betaflight
rates, Actual rates, KISS rates, Quick rates). Read
rates_type from the RC tuning response to know how to interpret
the values.
Filters
| Function | ID | Direction | Payload |
|---|---|---|---|
| MSP_FILTER_CONFIG | 0x5E | Read | Gyro lowpass, D-term lowpass, notch filters, dynamic notch settings |
| MSP_SET_FILTER_CONFIG | 0xC9 | Write | Same format |
Battery
| Function | ID | Direction | Payload |
|---|---|---|---|
| MSP_BATTERY_STATE | 0x82 | Read | Cell count, capacity, voltage (mV), current (cA), mAh consumed |
| MSP_ANALOG | 0x6E | Read | Voltage, power (mAh), RSSI, current |
Blackbox
| Function | ID | Direction | Payload |
|---|---|---|---|
| MSP_BLACKBOX_CONFIG | 0x5C | Read | Device (flash/SD), rate, conditions |
| MSP_DATAFLASH_SUMMARY | 0x70 | Read | Total size, used size, ready flag |
| MSP_DATAFLASH_READ | 0x71 | Read | Address + data chunk (~4 KB) |
| MSP_DATAFLASH_ERASE | 0x72 | Write | Erases all flash (10-30 sec) |
Blackbox download is the most bandwidth-intensive MSP operation. At 115200 baud, downloading 2 MB of flash takes ~3 minutes. At 921600 baud (via ESP32 bridge), it takes ~20 seconds.
Motor Control
| Function | ID | Direction | Payload |
|---|---|---|---|
| MSP_MOTOR | 0x68 | Read | 8x uint16: motor values (1000-2000 or DShot) |
| MSP_SET_MOTOR | 0xD6 | Write | Same format — TEST MODE ONLY |
MSP_SET_MOTOR bypasses the PID controller and directly sets motor outputs. Props must be removed when using this. This is for motor direction testing, not flight.
EEPROM
| Function | ID | Direction | Description |
|---|---|---|---|
| MSP_EEPROM_WRITE | 0xF9 | Write | Saves current settings to EEPROM |
Always send MSP_EEPROM_WRITE after SET commands. Without it, your changes are lost on the next reboot.
Write Safety Pattern
Never write to an FC without this sequence:
- Read the current value (snapshot before)
- Show the diff to the operator (before vs after)
- Get approval (operator confirms)
- Write the new value via MSP_SET_*
- Read back to verify the FC accepted it
- Compare read-back to what you wrote
- EEPROM write after all changes in the batch
- Log every change with timestamp, old value, new value
Step 5 is critical. Some FC firmware versions silently clamp values to valid ranges. If you write P=200 and read back P=150, the FC clamped it. Your operator needs to know.
Practical Tips
Baud rate: MSP works at any baud rate, but the FC UART must be configured to match. Betaflight defaults MSP-configured UARTs to 115200. You can change this in the Ports tab. For blackbox download speed, 921600 is recommended.
Timeout: If you send a request and don't get a response within 100 ms, the FC didn't understand it (wrong function code, wrong firmware version, or the UART isn't configured for MSP). Retry once, then try a different approach.
Versioning: MSP function codes and payload formats change between firmware versions. A message that works on BF 4.4 may not exist on BF 4.2. Always detect the firmware version (MSP_FC_VERSION) before sending version-specific messages.
Multiple MSP ports: An FC can have multiple UARTs configured for MSP simultaneously. This is useful for connecting both a configurator and a companion computer. Each port operates independently.
MSP over WiFi: The ESP32 bridge (Tooth, SpeedyBee adapter) wraps MSP in TCP. The byte stream is identical to serial — the same parser works on both USB and TCP transport. The only difference is the connection setup.
Next
- Chapter 7: MAVLink Protocol — the other language, for ArduPilot and PX4.
- Chapter 8: UART Layout — where to put your MSP connections.
MSP is simple. That's its strength. Ask a question, get an answer. No handshakes, no state, no negotiation. The protocol stays out of the way so you can focus on the data.
Chapter 7: MAVLink Protocol — The ArduPilot/PX4 Language
MAVLink is a publish-subscribe protocol. You tell the FC what streams you want, and it sends them continuously. You send commands when you need something done. Both directions flow at the same time.
What MAVLink Is
MAVLink (Micro Air Vehicle Link) is the communication protocol used by ArduPilot, PX4, and their ecosystems. It's been the standard for autonomous drone communication since ~2009.
Unlike MSP (request-response), MAVLink is a streaming protocol. The FC continuously publishes telemetry at configured rates, and the GCS/companion sends commands as needed. Both directions are independent — you can receive telemetry while sending a command.
MAVLink v2 is the current version. v1 is deprecated but still supported for backward compatibility. Always use v2 for new development.
Packet Format (MAVLink v2)
Byte: 0 1 2 3 4 5 6 7-9 10..N N+1..N+2
0xFD len seq sys comp msg_id msg_id msg_id payload crc16
magic id id [24-bit LE] [data] [checksum]
| Field | Size | Description |
|---|---|---|
| Magic | 1 | 0xFD (v2) or 0xFE (v1) |
| Payload length | 1 | 0-255 bytes |
| Incompatible flags | 1 | Feature flags (signing, etc.) |
| Compatible flags | 1 | Backward-compatible flags |
| Sequence | 1 | Incrementing counter per link |
| System ID | 1 | Which vehicle (1-254) |
| Component ID | 1 | Which subsystem (1=autopilot, 191=companion) |
| Message ID | 3 | 24-bit, little-endian |
| Payload | variable | Message-specific data |
| Checksum | 2 | CRC-16/MCRF4XX with seed byte |
System and Component IDs
Every device on a MAVLink network has a system ID and component ID.
System ID: Identifies the vehicle. Drone 1 = system 1, Drone 2 = system 2. GCS is typically system 255. In a swarm, each drone must have a unique system ID.
Component ID: Identifies a subsystem within the vehicle. - 1 = Autopilot (the FC) - 100 = Camera - 154 = Gimbal - 191 = Companion computer (Wingman uses this) - 250 = GCS
Why this matters: When you connect to a mesh with 10 drones, you'll receive MAVLink messages from all of them. The system ID tells you which drone sent each message. If two drones have the same system ID, you can't tell them apart. This is one of the most common mistakes in multi-vehicle setups.
Setting the system ID:
- ArduPilot: SYSID_THISMAV parameter
- PX4: MAV_SYS_ID parameter
The Messages That Matter
HEARTBEAT (msg_id = 0) — The Keepalive
Every MAVLink device sends HEARTBEAT at 1 Hz. It's how devices discover each other and know the connection is alive.
Fields:
type = vehicle type (2=quadrotor, 1=fixed wing, etc.)
autopilot = firmware (3=ArduPilot, 12=PX4)
base_mode = armed/disarmed flag (bit 7)
custom_mode = current flight mode (firmware-specific number)
system_status = boot/calibrating/active/critical/emergency
Auto-detect pattern: Send a HEARTBEAT with system ID 255
(GCS). Wait for a response. Read the autopilot field:
3 = ArduPilot, 12 = PX4. This is the equivalent of MSP_FC_VARIANT
for the MAVLink world.
No heartbeat = dead link. If you stop receiving heartbeats from a drone for > 5 seconds, the link is lost. ATAK and QGC both use this to mark connections as stale.
Parameter Protocol
MAVLink parameters are named floating-point values. ArduPilot has ~1,200. PX4 has ~900.
| Message | Direction | Description |
|---|---|---|
| PARAM_REQUEST_LIST | GCS → FC | "Send me all parameters" |
| PARAM_VALUE | FC → GCS | One parameter: name, value, type, index, count |
| PARAM_SET | GCS → FC | "Set this parameter to this value" |
Full parameter pull: 1. Send PARAM_REQUEST_LIST 2. FC streams PARAM_VALUE messages (one per parameter) 3. Track received indices — if any are missing after the stream ends, request them individually with PARAM_REQUEST_READ
A full pull of ~1,200 ArduPilot parameters at 115200 baud takes 5-15 seconds depending on link quality.
Writing a parameter: 1. Send PARAM_SET with param_id (name) and param_value 2. FC responds with PARAM_VALUE confirming the new value 3. If the confirmed value differs from what you sent, the FC rejected or clamped the value
Parameters persist across reboots (stored in EEPROM/flash). No separate save command needed, unlike MSP's MSP_EEPROM_WRITE.
Telemetry Streams
Request telemetry streams by sending REQUEST_DATA_STREAM or SET_MESSAGE_INTERVAL.
Key telemetry messages:
| Message | ID | Rate | Content |
|---|---|---|---|
| GLOBAL_POSITION_INT | 33 | 2-10 Hz | Lat, lon, alt, heading, velocities |
| ATTITUDE | 30 | 10-50 Hz | Roll, pitch, yaw (radians) |
| VFR_HUD | 74 | 2-10 Hz | Airspeed, groundspeed, heading, throttle, alt, climb |
| SYS_STATUS | 1 | 1-2 Hz | Sensor health, battery voltage, current, remaining % |
| BATTERY_STATUS | 147 | 1 Hz | Per-cell voltage, current, mAh consumed, temperature |
| GPS_RAW_INT | 24 | 2-5 Hz | GPS fix type, satellites, HDOP, raw position |
| RC_CHANNELS | 65 | 5-10 Hz | All RC channel values (for monitoring stick input) |
Setting stream rates (ArduPilot):
SR0_POSITION=2 # GLOBAL_POSITION_INT at 2 Hz
SR0_EXTRA1=4 # ATTITUDE at 4 Hz
SR0_EXTRA2=2 # VFR_HUD at 2 Hz
SR0_RAW_SENS=1 # RAW sensor data at 1 Hz
SR0_RC_CHAN=5 # RC channels at 5 Hz
SR0_* parameters control stream rates for serial port 0 (usually
TELEM1). Replace 0 with the port number for other connections.
Setting stream rates (PX4): PX4 uses SET_MESSAGE_INTERVAL command to set per-message rates.
Commands
MAVLink commands are sent via COMMAND_LONG or COMMAND_INT and acknowledged via COMMAND_ACK.
| Command | ID | Description |
|---|---|---|
| MAV_CMD_COMPONENT_ARM_DISARM | 400 | Arm or disarm |
| MAV_CMD_DO_SET_MODE | 176 | Change flight mode |
| MAV_CMD_NAV_TAKEOFF | 22 | Takeoff to specified altitude |
| MAV_CMD_NAV_LAND | 21 | Land at current position |
| MAV_CMD_NAV_RETURN_TO_LAUNCH | 20 | Return to home |
| MAV_CMD_DO_REBOOT | 246 | Reboot FC |
Arm command:
COMMAND_LONG:
target_system = 1 (drone's system ID)
command = 400 (ARM_DISARM)
param1 = 1.0 (1=arm, 0=disarm)
param2 = 0.0 (0=normal, 21196=force arm — dangerous)
Wait for COMMAND_ACK. Result 0 = accepted. Result 4 = denied (pre-arm checks failed). Result 5 = in progress.
Mission Protocol
Upload waypoint missions to the FC:
- Send MISSION_COUNT (number of waypoints)
- FC requests each with MISSION_REQUEST_INT
- Send each MISSION_ITEM_INT
- FC confirms with MISSION_ACK
Download existing mission: 1. Send MISSION_REQUEST_LIST 2. FC sends MISSION_COUNT 3. Request each with MISSION_REQUEST_INT 4. FC sends each MISSION_ITEM_INT
Offboard Control (PX4)
PX4's offboard mode lets the companion computer directly command position, velocity, or attitude setpoints:
SET_POSITION_TARGET_LOCAL_NED:
x, y, z = position in local NED frame (meters)
vx, vy, vz = velocity (m/s)
type_mask = which fields are valid
Requirements for offboard mode: 1. Companion must stream setpoints at > 2 Hz (PX4 requires continuous updates or it exits offboard mode) 2. RC switch must be set to offboard mode 3. Vehicle must be armed
This is the control path for Wingman L3 (Delegate) autonomous operations on PX4.
ArduPilot vs. PX4: MAVLink Differences
Both speak MAVLink v2, but they differ in important ways:
| Feature | ArduPilot | PX4 |
|---|---|---|
| Flight mode numbers | ArduPilot-specific (0=Stabilize, 3=Auto, 6=RTL) | PX4-specific (different numbers for same concepts) |
| Parameter names | ATC_RAT_RLL_P style |
MC_ROLLRATE_P style |
| Stream rate config | SR0_* parameters |
SET_MESSAGE_INTERVAL command |
| Offboard control | Guided mode + SET_POSITION_TARGET | Offboard mode + SET_POSITION_TARGET |
| Sensor data | High-bandwidth DDS bridge | uXRCE-DDS to ROS2 |
| Mission dialect | Standard + ArduPilot extensions | Standard (fewer extensions) |
Implication for tools: Any tool that works across both ArduPilot and PX4 (QGroundControl, MAVSDK, Wingman) must handle these differences. The MAVLink wire format is identical — the interpretation of mode numbers, parameter names, and command behaviors differs.
Practical Tips
Always send heartbeats. Your GCS or companion must send
HEARTBEAT at 1 Hz to the FC. If the FC doesn't receive GCS
heartbeats, it may trigger GCS failsafe (ArduPilot: FS_GCS_ENABLE).
Monitor packet loss. MAVLink packets have a sequence number. If you see gaps in the sequence, you're losing packets. At > 5% loss, the link is degraded. At > 20%, it's unreliable for commands.
Don't flood the link. Sending commands faster than the FC can process them causes buffer overflow and dropped messages. One command at a time, wait for COMMAND_ACK before sending the next.
Use MAVSDK or pymavlink, not raw parsing. MAVLink has 300+ message types with varying payload formats. Writing a parser from scratch is an error-prone waste of time. MAVSDK (for control) and pymavlink (for analysis) handle the parsing.
Test with SITL. Both ArduPilot and PX4 have Software-In-The-Loop simulators that emulate a real FC over a simulated MAVLink link. Test your companion software against SITL before connecting to real hardware.
Next
- Chapter 6: MSP Protocol — the simpler alternative for Betaflight and iNav.
- Chapter 8: UART Layout — where MAVLink connections go in the FC's serial port map.
MAVLink is a conversation. The FC talks continuously. You listen and speak when you have something to say. The protocol handles the rest.
Chapter 8: UART Layout and Why It Matters
You will run out of UARTs before you run out of ideas. Planning the layout before you build saves hours of rewiring later.
What a UART Is
A UART (Universal Asynchronous Receiver/Transmitter) is a serial port. Two wires: TX (transmit) and RX (receive). Every device that talks to the flight controller — RC receiver, GPS, telemetry radio, companion computer, ESC telemetry, Bluetooth module, mesh radio — needs a UART.
The flight controller has a fixed number of UARTs. Once they're allocated, they're gone. Adding another device means either freeing a UART or getting a different FC.
How Many UARTs You Actually Get
| MCU | Typical FC | Hardware UARTs | Usable UARTs | Notes |
|---|---|---|---|---|
| STM32F405 | Most 30x30 FCs | 6 | 3–5 | UART1 often hardwired to USB/VCP |
| STM32F722 | Budget FCs | 4 | 3 | Fewer UARTs, fewer features |
| STM32F745/F765 | Mid-range | 8 | 5–6 | More headroom |
| STM32H743/H750 | Premium FCs | 8+ | 6–8 | Best for complex builds |
| RP2040 | Pico-based FCs | 2 | 2 | Very limited |
| ESP32-C6 | Tooth/Seed | 2 | 1–2 | One for FC bridge, one for debug |
"Usable" is lower than "hardware" because: - One UART is typically dedicated to USB (VCP/CDC) for configurator access - Some UARTs share pins with SPI (used for gyro, OSD, flash) and can't be used - Some UARTs have inverted-only pads on the PCB (for SBUS) and can't be repurposed without hardware modification
Check your FC's documentation for which UARTs are actually available on pads. The schematic may show 6 UARTs, but if only 4 have TX/RX pads on the board, you have 4 usable UARTs.
The Standard Allocation
For a typical FPV quad with GPS and telemetry:
| UART | Assignment | Protocol | Baud Rate |
|---|---|---|---|
| UART1 | RC Receiver | CRSF (ELRS/Crossfire/Ghost) | 420000 |
| UART2 | GPS | NMEA or UBX | 38400 or 115200 |
| UART3 | Telemetry / MSP Bridge | MSP, MAVLink, or SmartPort | 115200 |
| UART4 | ESC Telemetry | BLHeli/AM32 telemetry | 115200 |
That uses 4 of your ~5 usable UARTs and you haven't added a companion computer, mesh radio, or Bluetooth module yet.
What Eats UARTs
Every peripheral that communicates over serial needs its own UART. Here's the complete list of things that might want one:
| Device | Protocol | Required? | Notes |
|---|---|---|---|
| RC Receiver | CRSF/SBUS/IBUS | Yes | Non-negotiable. No UART = no control. |
| GPS | NMEA/UBX | For navigation | Required for RTH, GPS modes, position logging |
| Telemetry radio | MSP/MAVLink/LTM | For GCS link | Can share with RC if receiver supports it (CRSF telemetry) |
| ESC Telemetry | Serial telemetry | For RPM filter | Only needed if using bidirectional DShot or ESC temp monitoring |
| OSD (analog) | MSP DisplayPort | For on-screen display | Only if using DJI OSD or analog OSD with MSP |
| Companion computer | MAVLink/MSP | For AI/autonomy | The big UART consumer — wants high baud rate |
| Bluetooth module | SPP/BLE | For wireless config | Can use MSP-over-BT instead of USB |
| Mesh radio | Serial/Ethernet | For swarm | If the mesh radio uses serial (some use Ethernet instead) |
| LED controller | Serial LED | For prop LEDs | Rarely needs a full UART — can use soft serial |
| Rangefinder | Serial | For altitude hold | Some rangefinders use I2C instead (saves a UART) |
| Optical flow | Serial/I2C | For position hold | Prefer I2C version to save UARTs |
Strategies When You Run Out
1. CRSF Telemetry Passthrough
If your RC receiver uses CRSF protocol (ELRS, Crossfire, Ghost), it already has a bidirectional link to the transmitter. You can send telemetry data (battery, GPS, attitude) through the RC link instead of using a separate telemetry radio.
Saves: 1 UART (the one that would have gone to a telemetry radio)
Trade-off: Telemetry bandwidth is limited to what CRSF can carry (basic flight data, not full MAVLink). If you need full MAVLink telemetry (parameter editing, mission upload), you still need a separate radio.
2. Soft Serial
Betaflight and iNav support "soft serial" — bit-banging a UART on any GPIO pin. It works for low-baud-rate devices.
Saves: 1 hardware UART
Trade-off: Limited to ~19200 baud reliably. Not suitable for CRSF (420000), GPS at high rate, or MAVLink. Good for: SmartPort telemetry, serial LED, low-rate telemetry.
3. Companion Computer as Hub
Instead of connecting multiple devices to the FC, connect them to a companion computer and use one UART between the companion and FC.
Before (4 UARTs on FC):
FC UART1 ← RC receiver
FC UART2 ← GPS
FC UART3 ← Telemetry radio
FC UART4 ← Mesh radio
After (2 UARTs on FC):
FC UART1 ← RC receiver
FC UART2 ← Companion computer (MAVLink)
Companion ← GPS (USB)
Companion ← Telemetry radio (USB or Ethernet)
Companion ← Mesh radio (Ethernet)
Saves: 2+ UARTs on the FC
Trade-off: Adds weight, power consumption, and complexity. The companion computer becomes a single point of failure for everything except manual RC control.
4. I2C Instead of Serial
Some peripherals (compass, barometer, rangefinder, optical flow) are available in both serial and I2C versions. I2C uses a shared bus — multiple devices on the same two wires (SDA, SCL).
Saves: 1 UART per device moved to I2C
Trade-off: I2C is slower than serial and can have bus contention issues with multiple devices. But for low-bandwidth sensors, it's fine.
5. DMA and UART Sharing (Advanced)
On STM32H7 FCs, DMA (Direct Memory Access) allows the CPU to handle UART traffic more efficiently. Some advanced configurations use UART inversion and protocol detection to share a single UART between two devices that take turns.
This is fragile, FC-specific, and not recommended unless you know exactly what you're doing.
The UART Planning Template
Before building, fill this out:
Platform: _______________
FC: _______________
MCU: _______________
Available UARTs: _______________
| UART | Device | Protocol | Baud Rate | Required? |
|------|--------|----------|-----------|-----------|
| 1 | | | | |
| 2 | | | | |
| 3 | | | | |
| 4 | | | | |
| 5 | | | | |
| 6 | | | | |
Devices that didn't get a UART:
_______________ → moved to I2C / soft serial / companion / dropped
UARTs remaining after allocation: ___
If you fill this out and you're already at zero remaining UARTs before adding the companion computer you wanted, you need a different FC or a companion-as-hub architecture.
Platform-Specific UART Maps
Typical F405 (4 usable UARTs)
UART1 → USB VCP (configurator) — not available for peripherals
UART2 → RC Receiver (CRSF @ 420000)
UART3 → GPS (UBX @ 115200)
UART4 → Available
UART5 → Available
UART6 → ESC Telemetry (if DShot bidirectional)
Two free UARTs (4 and 5) for telemetry radio, companion, mesh, or Bluetooth.
Orqa H7 QuadCore (6+ usable UARTs)
USART1 → USB VCP
USART2 → Available
USART3 → RC (GHST/IRONghost @ 420000)
UART4 → Available
USART6 → MAVLink telemetry (ATAK/TAK @ 115200)
UART7 → GPS (UBX @ 115200)
UART8 → ESC telemetry
Three free UARTs (2, 4, plus potential soft serial). The H7's extra UARTs are why it supports more complex integrations than F4.
PX4 on Pixhawk 6X
TELEM1 → MAVLink GCS (115200 or 57600)
TELEM2 → MAVLink companion computer (921600)
GPS 1 → GPS (auto-detect)
GPS 2 → Second GPS or compass
RC IN → RC receiver (SBUS/CRSF)
DEBUG → Console / NSH shell
PX4 labels its ports by function rather than UART number. The mapping to hardware UARTs is in the board configuration.
Common Mistakes
1. Wrong baud rate. CRSF is 420000. Many people set 115200 because that's the "default" they're used to. The receiver will not connect. Always check the protocol's required baud rate.
2. TX/RX swap. FC TX connects to device RX, and vice versa. This is wrong more often than any other wiring mistake. If a serial device doesn't respond, swap TX and RX as the first diagnostic step.
3. Voltage mismatch. Most FCs output 3.3V serial. Most peripherals accept 3.3V. But some older devices are 5V serial and can damage 3.3V inputs. Check before connecting.
4. Two devices on one UART. You can't connect a GPS and a telemetry radio to the same UART and expect both to work. Serial is point-to-point. Use a companion computer or multiplexer if you need to share.
5. Forgetting the configurator UART. If you reassign the USB/VCP UART to a peripheral, you may lose the ability to connect Betaflight Configurator. Always keep at least one path to the configurator available (USB or MSP-over-other-UART).
Next
- Chapter 6: MSP Protocol — the protocol that rides on these UARTs when talking to Betaflight and iNav.
- Chapter 13: Adding a Companion Computer — the architecture that solves the "not enough UARTs" problem.
Plan your UARTs before you solder. Desoldering a GPS module because you need that UART for a companion computer is not how you want to spend a Saturday.
Chapter 9: Pre-Flight Checklist That Actually Works
The manufacturer's checklist is marketing. This one catches the problems that actually ground you.
The 60-Second Field Check
This is the minimum check before every flight. Takes 60 seconds once you've done it a few times. Skipping it takes longer when you have to walk 500 meters to recover a crashed drone.
Visual (15 seconds)
-
Props: All four present, correct rotation, no nicks, nuts tight. Spin each by hand — should rotate freely with no catch.
-
Frame: No cracks on arms. No loose standoffs. Antenna mounts intact. Nothing rattling when you shake it.
-
Battery: Strapped tight. Will not shift under acceleration. Balance lead tucked, not dangling near props.
-
Antenna position: RC antenna elements deployed (not folded under the frame). VTX antenna pointed up/back, not blocked by battery. GPS antenna has clear sky view.
Power-On (30 seconds)
-
Voltage check: Battery voltage matches expected full charge. 4S = 16.4–16.8V. 6S = 24.6–25.2V. If significantly low, the battery wasn't fully charged or a cell is bad. Don't fly it.
-
Gyro cal: Wait for the FC to finish gyro calibration (usually 1-2 seconds after power on). Don't move the quad during this time. On Betaflight the OSD shows "CALIBRATING" then clears.
-
RC link: Confirm connected. Move sticks — verify response on OSD or in the video feed (stick position overlay if enabled). Check that arming switch is in disarmed position.
-
GPS (if equipped): Check satellite count. Wait for 3D fix. Most firmwares show sat count on OSD. Minimum 8 sats for any GPS-dependent mode. More is better. If you need GPS return-to-home, confirm the home point is set (some firmwares set home on arm, others on first GPS lock).
-
Video feed: Confirm you see a live image in your goggles or monitor. Correct channel. No interference patterns. If analog, check that nobody else is on your channel.
Arm Check (15 seconds)
-
Clear the area. Nobody within 3 meters of the drone. Nothing the drone could hit if it does something unexpected on arm.
-
Arm. Motors should spin at idle (or not, if "Motor Stop" is enabled). Listen for any unusual sounds — grinding, clicking, uneven RPM.
-
Control check (optional but recommended on new builds): With the drone on the ground, briefly blip throttle and check that it tries to lift evenly. Tilt the quad by hand — motors should speed up on the low side to self-level (in angle/level mode) or resist the tilt (in acro/rate mode).
Go fly.
The Deep Check (Pre-Session or New Build)
Do this once per session (before the first flight of the day) or after any change to the build (new props, firmware update, parameter change, crash repair).
Electrical
- [ ] Battery internal resistance: check with charger. Per-cell IR above 15 mΩ on LiPo or above 30 mΩ on Li-Ion means the pack is aging. Above 25 mΩ (LiPo) or 50 mΩ (Li-Ion), retire it.
- [ ] Cell balance: all cells within 0.02V of each other at full charge. Imbalance > 0.05V = failing cell. Don't fly it.
- [ ] ESC temperature after a flight: warm is normal. Hot to touch = something is wrong (motor issue, prop drag, ESC undersized).
- [ ] Motor temperature: same. Warm = normal. Hot = mechanical issue, PID/filter problem, or motor failing.
- [ ] Wiring: no frayed wires, no exposed copper, solder joints intact. Pay special attention to battery pigtail and motor phase wires.
Mechanical
- [ ] Prop adapters / prop nuts: torqued properly. A prop coming off in flight is not recoverable.
- [ ] Motor bell screws: C-clip or set screws tight. Bell should not wobble on the shaft.
- [ ] Camera mount: secure. Camera angle correct. Tilt hasn't shifted.
- [ ] FC mounting: soft mount grommets intact, FC not contacting frame.
- [ ] Antenna connectors: U.FL/IPEX connectors seated. SMA connectors finger-tight (do not overtorque SMA — you'll break the connector on the board).
Software
- [ ] Firmware version: matches what you expect. Verify in configurator before flying after any work session where USB was connected. Accidental firmware flash happens.
- [ ] Modes: verify arm switch, flight mode switches, and any other switches are assigned correctly. A mode switch that accidentally triggers GPS rescue at 2 meters altitude is a bad day.
- [ ] Failsafe: configured and tested. The only way to know failsafe works is to test it. Turn off the transmitter with the drone armed on the ground and verify the FC does what you expect (motors stop, or enters land mode, or whatever you configured).
- [ ] Blackbox: enabled, flash has space. If you want logs from this session, verify logging is on and the flash isn't full.
- [ ] OSD: shows what you need. Minimum: battery voltage, flight time, RSSI (or LQ for ELRS). Recommended: sat count, altitude, warnings.
Post-Flight Check
After each flight, before the next:
-
Battery voltage: Check remaining voltage. If below 3.5V/cell under resting conditions, you pushed too hard. Adjust your timer.
-
Temperature sweep: Touch each motor, each ESC, the FC, the VTX. Anything unusually hot compared to normal? Investigate before flying again.
-
Visual scan: Any new damage? Props nicked? Antenna bent? Camera mount shifted?
-
Log pull (if analyzing this session): Pull blackbox now. Flash will be overwritten by the next flight.
Post-Session
After the last flight of the day:
-
Storage charge batteries. LiPo storage voltage is 3.8V/cell (22.8V for 6S). Do not leave batteries at full charge or fully depleted. Storage charge the same day.
-
Clean the quad. Grass, dirt, and moisture accelerate corrosion on exposed electronics. Compressed air for motor bells.
-
Note anything that needs attention. A prop you noticed was slightly nicked. A motor that felt warm. A GPS that took too long to lock. Write it down or you'll forget by next session.
The Checks That Catch Real Problems
In order of how often they prevent incidents:
-
Props — wrong rotation, damaged, or loose. The most common cause of unexpected behavior on arm or immediately after takeoff.
-
Battery strap — a battery that shifts forward on a punch-out changes the CG and the drone flips. Cinch it tight.
-
RC link — flying on a dead receiver because you forgot to check the link. Especially after changing receiver firmware or binding phrase.
-
Failsafe — having the wrong failsafe behavior configured. "Drop" is almost never what you want. Test it before you need it.
-
GPS home point — flying 2 km out, triggering RTH, and having the drone return to a GPS position from three flights ago because you didn't wait for a fresh fix.
-
Antenna — a U.FL connector that popped off a receiver during a battery change. Video or RC works at 5 meters, fails at 50.
The One Check Nobody Does (But Should)
Turn off your transmitter with the drone armed on the ground.
This tests your failsafe. Every time you change firmware, change receivers, or change failsafe settings, do this test. It takes 10 seconds and it's the only way to know what will actually happen when you lose signal in the air.
If the motors keep spinning at the last throttle position: your failsafe is misconfigured and your drone will fly away on signal loss. Fix it before flying.
Next
- Chapter 12: When Things Go Wrong — when something slips past the checklist.
- Chapter 10: Blackbox Logs — analyzing what happened after the flight.
The checklist is boring. Walking half a kilometer to pick up a crashed drone because you didn't check the prop nuts is also boring, and takes longer.
Chapter 10: Blackbox Logs — What They Tell You
The blackbox doesn't lie. Your memory does. Pull the log.
What Gets Logged
A blackbox log records everything the flight controller knows at high sample rate (typically 1–4 kHz on Betaflight, 100–400 Hz on ArduPilot/PX4). This includes:
| Data | What It Tells You |
|---|---|
| Gyroscope (roll, pitch, yaw rate) | How the drone is actually rotating — the ground truth |
| Accelerometer | Attitude estimation, vibration level |
| Motor outputs (1–8) | What the FC commanded each motor to do |
| RC commands | What the pilot actually asked for |
| PID terms (P, I, D per axis) | How the PID controller responded to error |
| Setpoint | What the FC was trying to achieve |
| Battery voltage | Voltage under load, sag profile |
| Battery current (if sensor) | Power consumption, mAh tracking |
| GPS position/speed (if equipped) | Flight path, speed, altitude |
| Filter state | Pre/post filter gyro (Betaflight debug modes) |
How to Pull Logs
Betaflight (Flash-Based)
Betaflight stores blackbox data on the FC's on-board flash chip (typically 2–16 MB) or an SD card.
Via Configurator: 1. Connect USB 2. Blackbox tab → Download Flash → Save .bbl file
Via MSP (what Wingman does): 1. MSP_DATAFLASH_SUMMARY → get used bytes 2. MSP_DATAFLASH_READ in 4 KB chunks → stream raw data 3. Save as .bbl file
Important: Flash fills up. If it's full, new flights overwrite old ones. After a session where you need the data, pull logs before the next flight. Or switch to SD card logging if your FC supports it.
ArduPilot (SD Card)
ArduPilot writes .bin DataFlash logs to the SD card.
Via Mission Planner: DataFlash Logs → Download Via MAVLink: LOG_REQUEST_LIST → LOG_REQUEST_DATA → stream Via SD card: Pull the card, copy .bin files directly
PX4 (SD Card)
PX4 writes .ulg (ULog) files to the SD card.
Via QGroundControl: Analyze → Log Download Via SD card: Pull the card, copy .ulg files
Reading the Traces
The Gyro Trace Is Everything
The gyroscope trace is the single most important data in a blackbox log. It shows the actual angular rate of the drone on each axis, sampled at 1–4 kHz. Everything else is derived from or compared against the gyro.
A clean gyro trace looks like smooth curves that follow the stick inputs. When you push the stick right, the roll gyro shows a clean step to the commanded rate, holds, then returns to zero when you release.
A noisy gyro trace looks like the clean curve with fuzz, spikes, or oscillation layered on top. The noise is real — the drone is actually vibrating. The question is where the vibration comes from and whether it matters.
The Five Patterns That Indicate Real Problems
Pattern 1: High-frequency noise on all axes, increasing with throttle.
What it looks like: Fuzz on the gyro trace that gets worse as you increase throttle. Consistent across roll, pitch, and yaw.
What it means: Mechanical vibration from the motors/props is reaching the FC. The motors are the only thing on the drone whose vibration scales with throttle.
What to check: Prop balance, motor bearings, FC soft mount, frame arm tightness. If the noise is broadband (not at a specific frequency), it's probably multiple sources. Fix the biggest one first — usually props.
Pattern 2: Oscillation at a specific frequency, visible as regular waves.
What it looks like: A sine wave overlaid on the gyro trace. Consistent frequency regardless of stick input. May be present on one axis more than others.
What it means: Resonance. Something on the frame has a natural frequency that's being excited by the motors. The FC's filters are either not catching it or are making it worse.
What to check: Look at the frequency (use the Betaflight Blackbox Explorer's spectrum analyzer). Common resonances: - 80–150 Hz: Frame flex (arms, standoffs) - 150–300 Hz: Prop/motor mechanical resonance - 300–600 Hz: Gyro noise floor (filter issue, not mechanical)
If the dynamic notch filter is enabled, check if it's tracking this frequency. If not, adjust the notch range.
Pattern 3: D-term noise spikes, especially on yaw.
What it looks like: The D-term trace (visible in debug mode) is noisy or spiky, even when the gyro trace looks relatively clean. Yaw axis is typically worst.
What it means: The D-term is the derivative of gyro error. It amplifies high-frequency noise by design — that's how it reacts quickly to changes. If the gyro has even small amounts of high-frequency content, D amplifies it into large motor corrections.
What to check: Lower D-term gain (try -20%). If that helps significantly, the issue is D sensitivity to noise, not mechanical. Also check: D-term lowpass filter cutoff (lowering it reduces D noise at the cost of slower D response), dynamic notch filter (should be catching the frequencies that D is reacting to).
Pattern 4: Motor output asymmetry — one motor consistently higher.
What it looks like: In the motor output traces, one motor is always running at higher output than the others. The difference is consistent across throttle levels.
What it means: The FC is compensating for something that makes the drone want to rotate toward the weak motor's side. Possible causes: - Motor or ESC weaker on one side (dying motor, marginal ESC) - Center of gravity offset (battery mounted off-center) - Bent motor mount changing thrust angle - Damaged prop generating less thrust
What to check: Swap the suspect motor to a different arm. If the asymmetry follows the motor, it's the motor. If it stays on the same arm, it's the mount or frame. If it moves to the diagonal, it's CG.
Rule of thumb: Up to 5% asymmetry is normal. 5–10% is worth investigating. Above 10% is a problem that will get worse.
Pattern 5: Voltage sag correlating with performance loss.
What it looks like: Battery voltage drops sharply during aggressive maneuvers. At the same time, motor outputs hit 100% (full throttle commanded but can't produce it), and the gyro shows the drone not achieving the commanded rate.
What it means: The battery can't deliver enough current. The voltage sags, the ESCs can't spin the motors fast enough, and the drone loses authority. This is a power system problem, not a tuning problem.
What to check: Battery internal resistance (measure with a charger that shows IR per cell). IR above 15 mΩ/cell means the pack is aging. Voltage sag below 3.3V/cell under load is concerning. Below 3.0V/cell is damaging the battery.
Don't tune around bad batteries. If the battery is sagging, no amount of PID tuning will fix the performance loss. Replace the battery.
Blackbox Analysis Workflow
Step 1: Pull the log. Immediately after the flight you want to analyze. Don't fly again first.
Step 2: Open in the right tool. - Betaflight: Betaflight Blackbox Explorer - ArduPilot: Mission Planner → DataFlash Log tab, or UAV Log Viewer - PX4: Flight Review or PlotJuggler
Step 3: Look at the gyro first. Always. Before looking at PIDs, motor outputs, or anything else. The gyro tells you what actually happened. Everything else tells you what the FC tried to do about it.
Step 4: Compare setpoint to gyro. The setpoint is what the FC was trying to achieve. The gyro is what actually happened. The gap between them is the error. A well-tuned drone tracks setpoint closely. A poorly tuned one lags, overshoots, or oscillates around it.
Step 5: Check motor outputs. Are they even? Are any hitting 100%? Are there sudden spikes? Motor output tells you how hard the FC is working to maintain control.
Step 6: Check battery voltage. Does it hold steady or sag under load? Voltage sag during aggressive maneuvers is normal. Voltage sag during hover is a problem.
Step 7: If you found a problem, change ONE thing. Fly again. Pull another log. Compare. This is how tuning works — iterative, data-driven, one variable at a time.
What Logs Don't Tell You
-
Why the pilot made a decision. Logs show what the drone did, not what the operator intended. If a flyaway log shows the drone going north, you don't know if the pilot pushed north or if the drone went north on its own without checking the stick inputs.
-
External conditions. Wind, temperature, air density, obstacles — none of these are in the log. A drone that oscillates on a windy day and flies clean on a calm day isn't broken. It's dealing with turbulence. Logs won't show you the wind.
-
What happened after the crash. If the drone hits something and the FC loses power, the log ends. The last few hundred milliseconds of data may be corrupt or missing. The moments before the crash are usually there.
Next
- Chapter 11: PID Tuning for People Who Fly — using blackbox data to improve your tune.
- Chapter 12: When Things Go Wrong — the diagnostic tree that starts with symptoms and uses logs to find causes.
The log is the flight's memory. It remembers what you don't. Pull it. Read it. Trust it over your recollection.
Chapter 11: PID Tuning for People Who Fly, Not Simulate
PID tuning is not magic. P reacts to error. I removes steady error. D resists change. That's it. The rest is learning what each one feels like through the sticks.
What P, I, and D Actually Do
P (Proportional) — The Reaction
P pushes back proportional to how far off the drone is from where it should be. Big error = big correction. Small error = small correction.
Too high: The drone overshoots its target and corrects back, creating fast oscillation. Feels like the quad is vibrating or buzzing, especially visible on a punch-out or sharp turn.
Too low: The drone feels mushy, soft, unresponsive. It drifts through commands instead of snapping to them. Slow to respond to stick input.
What to listen for: P oscillation is fast — 10-50 Hz range. It sounds like a buzz or rattle. If you hear a high-pitched buzzing that increases when you do aggressive maneuvers, P is too high.
I (Integral) — The Memory
I accumulates error over time. If the drone is consistently a little off in one direction (wind pushing it, CG offset, motor imbalance), I builds up a correction to counter it.
Too high: The drone feels "stuck" or slow to change direction. Overshoot on sustained moves. After a long turn, it keeps turning briefly after you release the stick. In extreme cases, I windup causes the drone to suddenly lurch as the accumulated correction releases.
Too low: The drone drifts. In a hover, it doesn't hold position well. In forward flight, wind pushes it off course and it doesn't correct. The quad won't hold a steady rate in a turn.
What to feel for: I issues are slow. If the drone seems to "remember" what it was doing and resists changing, I is too high. If it can't hold a line in wind, I is too low.
For most operators: Leave I at the default. It's the least sensitive of the three terms and the default is usually close enough. Only touch I if you have specific drift or windup problems.
D (Derivative) — The Brake
D resists change. It's proportional to how fast the error is changing, not how big it is. D slows down both the drone's response AND oscillation.
Too high: Motors run hot. D amplifies noise (see Chapter 10, Pattern 3). The drone feels "dampened" — controlled but lacking snap. In extreme cases, motors make a grinding sound from rapid micro-corrections driven by noise.
Too low: The drone overshoots on quick maneuvers. Feels bouncy at the end of rolls and flips. P oscillation becomes harder to control because D isn't there to brake it.
What to listen for: D noise is a constant, low-level motor buzz that's present even in smooth flight. It gets worse with throttle because motor vibration (which D amplifies) increases with RPM.
The D dilemma: You need enough D to control overshoot but not so much that it amplifies noise. This is the core tension in PID tuning and why filters exist — filters clean the gyro signal so D can do its job without reacting to noise.
The Field Tuning Workflow
This workflow assumes you're starting from a reasonable default (Betaflight defaults are a good starting point for most 5-inch builds). If you're building from scratch on unusual hardware, start with community presets for your motor/frame size.
Step 0: Mechanical First
Before touching PIDs, confirm: - Props are balanced and undamaged - Motors spin freely with no grit or catch - FC is soft-mounted properly - Frame has no loose screws or cracked arms - Battery is secured and not shifting in flight
If any of these are wrong, no amount of PID tuning will fix it. See Chapter 12 (Troubleshooting), Step 2.
Step 1: Fly the Default
Fly a representative flight — hover, forward flight, some rolls and flips, a punch-out, some turns. Pay attention to: - Does it feel mushy or sharp? (P) - Does it hold a line in wind? (I) - Does it bounce at the end of maneuvers? (D) - Is there any buzzing or vibration? (P too high or D noise)
Pull a blackbox log.
Step 2: Adjust P
P is where most of the feel comes from. Adjust P first.
- If mushy/soft: raise P by 10%. Fly. Repeat until it feels responsive but not buzzy.
- If buzzy/oscillating: lower P by 10%. Fly. Repeat until the buzz goes away but it still feels locked in.
Adjust roll and pitch P together unless you have a reason not to (asymmetric frame, different prop spacing). Yaw P is usually set independently and is less sensitive.
Step 3: Adjust D
Once P feels right, check D:
- If bouncy at the end of flips/rolls: raise D by 10%.
- If motors are hot or buzzing at idle: lower D by 10%.
- If blackbox shows D-term noise: lower D, then check filters.
D and P interact — raising P often requires raising D to maintain damping. If you raised P in Step 2, you may need more D.
Step 4: Leave I Alone (Usually)
I is rarely the problem for freestyle and racing. If the default works, keep it.
- If the quad drifts in hover or can't hold a turn rate in wind: raise I by 10-20%.
- If the quad feels sluggish to change direction or has overshoot on sustained turns: lower I.
Step 5: Check Filters
If you can't get P and D where you want them because noise starts before you reach the desired gain, the issue is filters, not PIDs.
- Enable dynamic notch filter if not already enabled.
- Check gyro lowpass filter cutoff. Betaflight default (250 Hz for gyro lowpass 1) is fine for clean builds. Noisy builds may need 150-200 Hz.
- Check D-term lowpass. This is the most impactful filter for D noise. Lowering it from 150 Hz to 100 Hz significantly reduces D noise but also slows D response.
The filter-PID relationship: Filters remove noise so PIDs can run higher without reacting to it. A well-filtered build can run higher P and D, which means sharper and more responsive flight. A poorly filtered build (or a build with mechanical vibration issues) must run lower PIDs to compensate.
Step 6: Fly, Log, Compare, Repeat
After each change: 1. Fly a representative flight (same maneuvers as before) 2. Pull blackbox 3. Compare gyro traces to the previous flight 4. Did it get better or worse? If better, keep the change. If worse, revert.
One change at a time. If you change P, D, and filters simultaneously, you won't know what helped and what hurt.
Rates vs. PIDs
Rates and PIDs are different things. People confuse them constantly.
Rates control how fast the drone rotates per degree of stick deflection. Higher rates = faster rotation at full stick. Rates affect how the drone FEELS to fly but they don't affect stability.
PIDs control how well the drone FOLLOWS the rate command. Higher P = more aggressively follows the command. Higher D = more damped following.
If the drone feels slow: it might be rates (increase max rate), not PIDs.
If the drone feels floaty: it might be PIDs (increase P), not rates.
If the drone rotates at the right speed but wobbles while doing it: that's PIDs.
Tuning for Different Flight Styles
Freestyle
- Higher P for crisp, snappy response
- Moderate D for controlled stops after flips
- Lower I is acceptable (you're not holding position)
- Slightly higher rates (800-1200 deg/s max)
Racing
- Moderate P — not as high as freestyle because you need predictability, not snap
- Higher D to damp oscillation in high-speed turns
- Higher I to hold lines through corners and in prop wash
- Lower rates than freestyle (600-900 deg/s) for precision
Cinematic / Smooth
- Lower P for gentle, smooth movements
- Lower D to avoid any micro-corrections visible in footage
- Standard I
- Low rates (400-600 deg/s) for butter-smooth pans
Long-Range / GPS Cruise
- Default PIDs are usually fine
- I matters more here (wind rejection, position hold)
- D can be lower (less aggressive flying = less noise)
- Rates are less important (you're not doing flips at 5 km)
When to Stop Tuning
The tune is "good enough" when: - No audible buzz or vibration in normal flight - The drone responds to stick inputs without delay or overshoot - Blackbox gyro traces are clean (no sustained oscillation) - Motors are warm after flight, not hot (hot = D noise or P oscillation making the ESCs work too hard) - You stop noticing the quad and start noticing the flying
Most pilots overtune. The difference between a "good" tune and a "perfect" tune is 2-3% performance improvement that you'll never notice in real flying. Get it to "no oscillation, responsive, motors not hot" and go fly.
Next
- Chapter 10: Blackbox Logs — reading the data that drives these tuning decisions.
- Chapter 12: When Things Go Wrong — when the problem isn't PIDs at all.
The best tune is the one that lets you forget about the quad and focus on the flying. If you're thinking about PIDs in the air, you're not done tuning. If you're not thinking about PIDs in the air, you probably are.
Chapter 12: When Things Go Wrong
This is the chapter you read at the field with a broken drone in your hands. Start with the symptom. Follow the tree.
How to Use This Chapter
Find your symptom in the list below. Follow the diagnostic steps in order. Each step either solves the problem or narrows it down. Don't skip steps — the obvious cause is often not the actual cause.
Symptom: Won't Arm
The FC refuses to arm. This is the most common field problem and the one with the most possible causes.
Step 1: Read the arming flags.
- Betaflight: CLI → status → look for arming disable flags
- iNav: CLI → status → same
- ArduPilot: GCS → Messages tab → pre-arm check failures
- PX4: QGC → Vehicle Setup → Summary → pre-arm checks
Step 2: Common arming flags and fixes.
| Flag | Meaning | Fix |
|---|---|---|
| RXLOSS / No RC | FC not receiving RC signal | Check UART assignment, baud rate, protocol selection. Verify receiver is powered and bound. |
| ACC not cal | Accelerometer not calibrated | Calibrate accel (level the quad, run cal in configurator) |
| ANGLE | Quad not level enough | Place on level surface. If on uneven ground, raise arm angle limit temporarily. |
| THROTTLE | Throttle not at minimum | Move throttle stick fully down. Check endpoint calibration. |
| CLI | CLI is open | Close the CLI connection |
| MSP | MSP connection active preventing arm | Some configurator connections block arming. Disconnect. |
| LOAD | CPU overloaded | Reduce gyro/PID loop frequency or disable unnecessary features |
| RPMFILTER | RPM filter configured but no signal | Check ESC telemetry UART or disable RPM filter |
| GPS FIX | Requires GPS fix before arm (nav modes) | Wait for GPS lock or disable GPS pre-arm requirement |
Step 3: If no flags show but still won't arm. - Check switch assignment. Arm switch might be on a channel that isn't configured or is inverted. - Check throttle endpoints. Some FCs require throttle below 1050 µs. - Power cycle everything. Receiver, FC, ESCs. In that order.
Symptom: Oscillation / Vibration in Flight
The quad shakes, wobbles, or makes a buzzing sound in flight. Could be mechanical or electronic.
Step 1: Determine if it's always present or speed-dependent. - Always present (even at hover): likely filter or PID issue - Only at high throttle: likely mechanical — prop balance, motor bearing, loose standoff - Only after a crash: prop damage, bent motor shaft, cracked frame arm
Step 2: Check mechanical first. Always. Before touching PIDs. - Spin each motor by hand. Feel for grit, catch, or uneven resistance. One bad bearing can cause the whole quad to oscillate. - Check props for damage. Even a tiny nick changes balance. Replace suspect props — they're the cheapest component. - Check motor mounting screws. Loose motor = oscillation source. - Press on each arm. Flex = vibration transmission path. Carbon fiber arms don't flex. Cheap 3D-printed arms do. - Check FC mounting. Soft mount grommets should be intact and the FC should not contact the frame directly.
Step 3: Pull a blackbox log. If mechanical checks pass: - Look at gyro traces. Clean gyro = clean flight. Noisy gyro = something is shaking the FC. - Compare pre-filter and post-filter gyro. If pre-filter is noisy but post-filter is clean, your filters are working hard. Consider addressing the source instead of filtering harder. - Look for a specific frequency peak. A resonance at a consistent frequency often indicates a specific mechanical source: - Prop-speed frequency: prop balance issue - Frame resonance (usually 100-300 Hz): frame flex - Motor bearing: broadband noise that increases with throttle
Step 4: If it's a filter/PID issue: - Lower D-term first. D is the most noise-sensitive PID term. Drop D by 20% and fly again. - Check dynamic notch filter. If not enabled, enable it. If enabled, check that it's tracking the right frequency range. - Lower gyro lowpass filter cutoff. Default is usually fine, but noisy builds may need 150 Hz instead of 200 Hz. - As a last resort, lower P-term. But if you need to drop P significantly to stop oscillation, the problem is mechanical, not tuning.
Symptom: Flyaway / Unexpected Movement
The drone moves in a direction the pilot didn't command.
Step 1: Did it respond to stick input during the event? - Yes, but drifted: likely sensor issue (compass interference, GPS glitch, accelerometer drift) - No response to sticks at all: likely failsafe triggered, mode switch, or loss of RC link
Step 2: Check flight mode. Did the mode change unexpectedly? - A mode switch bumped during handling can change from acro to angle to GPS hold, causing unexpected behavior. - ArduPilot/PX4: check mode channel (usually CH5) assignment and thresholds. - Betaflight: check mode tab for overlapping ranges on the aux channels.
Step 3: Check compass and GPS. For GPS-assist modes: - Compass interference from power wires is the #1 cause of GPS-mode flyaways. The compass reads the magnetic field from the battery leads as a heading change and "corrects" by turning. - Fix: move the compass (external GPS/compass module) as far from power wires as possible. Use a GPS mast. - Check for GPS glitch in the log. A sudden position jump causes the FC to "correct" toward the wrong position.
Step 4: After landing, pull logs immediately. Don't fly again until you understand what happened. Logs will show stick inputs, actual motor outputs, sensor readings, and mode changes. The cause is almost always visible in the data.
Symptom: Video Loss / Breakup
FPV video feed drops, goes to static, shows artifacts, or freezes.
Step 1: Analog or digital?
Analog 5.8 GHz: - Gradual static/snow = range limit or obstruction. Normal degradation. - Sudden black screen = VTX failure, antenna disconnect, or power loss to VTX. - Rolling lines or interference pattern = self-interference from another transmitter on the same airframe (RC, mesh radio). - Check antenna connector. IPEX/U.FL connectors are fragile. A crash can unseat them without visible damage. Reseat and check. - Check VTX power. Is it set to the right level? Too low = no range. Too high = overheating (some VTXs thermal throttle or shut down).
Digital (DJI, HDZero, Walksnail): - Frozen frame = link degradation. Digital doesn't gracefully degrade like analog — it works perfectly until it doesn't, then freezes. - Gray screen / "No Signal" = complete link loss. - Latency spike = the link is fighting to maintain connection. Reduce range or increase power. - Check firmware versions. DJI goggles and air unit firmware must match. Mismatched firmware can cause connection failures.
Step 2: Is it consistent or intermittent? - Consistent at a specific distance/direction = range or obstruction. Normal. Adjust flight pattern or antenna. - Intermittent at close range = self-interference, loose antenna, or power supply issue. Check that VTX is getting clean power (no voltage sag from motor current). - Only happens at high throttle = voltage sag pulling VTX supply below minimum. Add a capacitor on the VTX power input or use a dedicated BEC.
Symptom: Motor Desync / Stuttering
One or more motors stutters, stops momentarily, or makes grinding sounds.
Step 1: Is it one motor or all? - One motor: likely ESC or motor issue (bearing, winding, timing) - All motors: likely FC signal issue (DShot errors, wiring)
Step 2: Swap the suspect ESC and motor. If the problem follows: - The motor: bad bearing or winding - The ESC: bad ESC - Neither (stays on the same arm): wiring issue on that arm
Step 3: Check motor timing. In BLHeli_S/BLHeli_32/AM32: - Stock timing is usually fine. If someone has adjusted it, try resetting to default. - High timing + high KV + low battery voltage = desync recipe.
Step 4: Check DShot settings. - Bidirectional DShot (for RPM filter) can cause desyncs on some ESC/motor combinations. Try disabling it to test. - DShot300 is more reliable than DShot600 on longer signal wires. If wires from FC to ESC are >10 cm, try DShot300.
Symptom: Failsafe Triggered in Flight
The drone enters failsafe (lands, returns home, or drops) unexpectedly.
Step 1: Determine which failsafe. - RC failsafe (lost RC link): check RC RSSI in the log. Was signal actually lost or did the FC misinterpret a signal issue? - Battery failsafe: check voltage in the log. Did voltage sag below threshold under load? - GPS failsafe (geofence, GPS loss): check GPS data in log. - GCS failsafe (ArduPilot/PX4): lost MAVLink heartbeat from GCS.
Step 2: RC failsafe diagnosis.
- Check RSSI history in the log. A gradual decline to zero = range.
A sudden drop = obstruction, interference, or antenna issue.
- Check failsafe settings. Betaflight: failsafe_procedure.
ArduPilot: FS_THR_ENABLE + FS_THR_VALUE. PX4: COM_RC_LOSS_T.
- Is failsafe set to the right response? "Drop" is rarely what
you want. "Land" or "RTH" are usually better. But RTH requires
GPS — if GPS isn't locked, RTH failsafe may not work.
- Check RC receiver failsafe behavior. Some receivers output "no pulses"
on signal loss (correct). Others output last-known values (dangerous
— FC doesn't know signal is lost). Others output a pre-set failsafe
position. Verify your receiver's behavior.
Step 3: Battery failsafe diagnosis. - Voltage sag under load can briefly dip below the failsafe threshold even when the battery has plenty of capacity. - Fix: lower the failsafe voltage threshold, or use mAh-consumed instead of voltage as the trigger (more reliable). - Check battery internal resistance. An aging battery sags more under load. If your pack used to fly 5 minutes and now triggers failsafe at 3 minutes, the battery is dying.
Symptom: GPS Glitch / Toilet Bowl / Position Drift
In GPS-assist modes, the drone circles, drifts, or jumps to a wrong position.
Step 1: Check satellite count. Below 8-10 satellites, GPS position accuracy degrades significantly. Don't use GPS modes with < 8 sats.
Step 2: Check HDOP. Horizontal Dilution of Precision. Below 1.5 is good. Above 2.5 is unreliable. Above 4.0, don't trust GPS position at all.
Step 3: Toilet bowl = compass problem. The classic circular drift pattern means the compass heading is wrong, so the FC "corrects" in the wrong direction, overshoots, corrects again, and orbits. - Calibrate compass away from metal, cars, buildings. - Move external compass away from power wires and motors. - Check compass orientation matches FC configuration. - If using internal compass on an FC near ESCs: disable it and use external compass only.
Step 4: Position jumps = multipath or interference. - Near buildings, GPS signals bounce off walls, creating phantom positions. This is normal in urban environments. No fix except dual-band GPS (L1+L5) which is more resistant to multipath. - Near military installations or during exercises, GPS can be jammed or spoofed. If GPS suddenly shows you 50 km away, that's not a hardware problem.
The Universal Diagnostic Rule
When something breaks:
-
Don't change multiple things at once. Change one thing, test, observe. If you change PID, filter, and rates all at once, you won't know what fixed (or broke) it.
-
Pull logs before flying again. The data is in there. Every time you fly without understanding why it broke, you're gambling.
-
Trust the instruments, not your memory. "I think it was oscillating on roll" is less useful than "gyro roll axis shows 200 Hz peak at 40% throttle." Log it. Read it. Then fix it.
-
The simplest explanation is usually right. Loose prop nut causes more crashes than firmware bugs. Check the physical hardware first.
Next
- Chapter 10: Blackbox Logs — What They Tell You — how to read the data that diagnoses everything in this chapter.
- Chapter 11: PID Tuning for People Who Fly — the tuning workflow that addresses oscillation and performance issues.
Something broke. That's normal. The question is whether you understand why, or whether you're about to break it again.
Chapter 13: Adding a Companion Computer
A flight controller flies the drone. A companion computer thinks about why it's flying. They're different jobs on different hardware connected by a serial cable.
When You Need One
You don't need a companion computer to fly a drone. You need one when:
- Autonomous missions beyond waypoints — obstacle avoidance, dynamic replanning, following a target, search patterns
- Computer vision — object detection, tracking, landing on a target, visual navigation without GPS
- Sensor fusion — combining LiDAR, depth cameras, and IMU data for environment mapping
- High-bandwidth data processing — real-time video analytics, SIGINT, spectrum analysis
- Network hub — bridging the FC to mesh radios, cellular modems, and other IP-based devices
- AI/ML inference — running neural networks for real-time decisions
If all you need is fly-to-waypoint with GPS, the FC handles that natively on ArduPilot and PX4. Don't add complexity you don't need.
The Hardware Options
| Platform | CPU | RAM | GPU / Accelerator | Weight | Power | Price | Best For |
|---|---|---|---|---|---|---|---|
| Raspberry Pi 5 | Cortex-A76 4-core | 4-8 GB | None (VideoCore for display) | 50g | 5-10W | $60-80 | General companion, MAVProxy, basic CV |
| Pi Zero 2W | Cortex-A53 4-core | 512 MB | None | 10g | 1-3W | $15 | Lightweight telemetry, data logging, RF detect |
| Jetson Orin Nano | Cortex-A78AE 6-core | 8 GB | 1024 CUDA + 32 Tensor | 60g (module) | 7-15W | $250-500 | ML inference, real-time CV, object detection |
| Jetson Orin NX | Cortex-A78AE 8-core | 8-16 GB | 1024 CUDA + 32 Tensor | 60g (module) | 10-25W | $400-900 | Heavy ML, multiple camera streams |
| ModalAI VOXL 2 | QRB5165 | 8 GB | Hexagon DSP + GPU | 16g | 4-8W | $400 | Integrated flight platform, PX4 native |
| Radxa Zero 3W | RK3566 4-core | 2 GB | Mali-G52 | 10g | 2-4W | $25 | Budget Linux companion, WiFi scanning |
What Matters Most
Weight: On a 5-inch quad, every gram counts. A Pi 5 at 50g (plus carrier board, cables, heatsink) adds 80-100g total. That's a significant percentage of all-up weight. A Pi Zero 2W at 10g is much more practical for small platforms.
Power: A companion drawing 10W from a 1300 mAh 6S battery is consuming roughly 30% of your total energy budget. Flight time drops proportionally. Budget the power before choosing the hardware.
I/O: The companion needs to connect to the FC (UART or USB), to the network (WiFi, Ethernet for mesh radio, USB for cellular), and to sensors (USB cameras, CSI cameras, SPI/I2C sensors). Count your I/O requirements before selecting hardware.
Connecting to the Flight Controller
The Physical Connection
The companion talks to the FC over serial (UART) or USB. Serial is preferred for reliability — USB adds a hub, OTG logic, and enumeration that can fail.
Companion TX → FC UART RX
Companion RX → FC UART TX
Companion GND → FC GND
Baud rate: 921600 for high-bandwidth MAVLink. 115200 for MSP. Match both ends.
Level shifting: Pi GPIO is 3.3V. Most FCs are 3.3V. Compatible without level shifting. If your FC has 5V serial outputs (rare), use a level shifter or resistor divider.
The Protocol
ArduPilot / PX4: MAVLink v2. The companion runs mavproxy, MAVSDK, DroneKit, or a custom MAVLink parser. The FC streams telemetry to the companion and accepts commands from it.
# ArduPilot: connect via MAVSDK (Python)
from mavsdk import System
drone = System()
await drone.connect(system_address="serial:///dev/ttyAMA0:921600")
# PX4: connect via MAVSDK (same API, different autopilot behavior)
drone = System()
await drone.connect(system_address="serial:///dev/ttyAMA0:921600")
Betaflight / iNav: MSP over serial. The companion sends MSP requests and receives MSP responses. No streaming — poll-based.
# MSP: manual serial (simplified)
import serial
ser = serial.Serial('/dev/ttyAMA0', 115200)
# Send MSP_IDENT request
ser.write(bytes([0x24, 0x4D, 0x3C, 0x00, 0x64, 0x64]))
response = ser.read(32)
PX4 Dual-Channel
PX4 supports two simultaneous communication channels:
- MAVLink (UART) — commands, parameters, mission, C2
- uXRCE-DDS (UART or UDP) — high-bandwidth sensor telemetry, ROS2 topics
The dual-channel architecture lets you separate control traffic (low bandwidth, high priority) from data traffic (high bandwidth, lower priority). The companion runs a Micro-XRCE-DDS agent that bridges PX4's internal uORB topics to ROS2 topics on the companion.
This replaces the older microRTPS bridge. If you see references to microRTPS in older documentation, use uXRCE-DDS instead.
Software Stack
MAVProxy (Simplest)
MAVProxy is a command-line MAVLink proxy. It connects to the FC, parses MAVLink, and forwards it to multiple destinations (GCS, scripts, log files).
# Basic: FC on serial, forward to GCS on mesh radio
mavproxy.py \
--master=/dev/ttyAMA0,921600 \
--out=udp:10.0.0.255:14550
MAVProxy can run scripts (modules) that react to MAVLink messages. It's the fastest path from "I have a companion computer" to "I have telemetry flowing to a mesh radio."
MAVSDK (Programmatic Control)
MAVSDK is a library (Python, C++, Swift, Rust) for programmatic drone control over MAVLink. It abstracts MAVLink messages into clean API calls.
# Take off, fly to a point, land
await drone.action.arm()
await drone.action.takeoff()
await drone.action.goto_location(lat, lon, alt, yaw)
await drone.action.land()
MAVSDK is the recommended path for PX4. For ArduPilot, both MAVSDK and DroneKit work (DroneKit is older, more ArduPilot-specific).
ROS2 (Full Robotics Stack)
ROS2 (Robot Operating System 2) is the standard middleware for robotics. It provides publish/subscribe messaging, service calls, parameter management, and a massive ecosystem of packages for navigation, perception, planning, and control.
PX4 integrates with ROS2 via uXRCE-DDS. ArduPilot has a ROS2 interface via mavros2.
When to use ROS2: When you need sensor fusion (multiple cameras, LiDAR, IMU), SLAM (Simultaneous Localization and Mapping), path planning with obstacle avoidance, or integration with existing robotics software. ROS2 is heavyweight — it's the right choice for research and complex autonomy, overkill for "relay telemetry to a mesh radio."
Power and Cooling
Power Distribution
The companion needs clean, stable power. Noise from ESCs and motors on the main power bus will crash a Pi faster than any software bug.
Recommended: Dedicated BEC (Battery Eliminator Circuit) from the main battery to the companion. 5V, rated for the companion's peak current draw (2A minimum for Pi 5, 500mA for Pi Zero 2W).
Do not: - Power the companion from the FC's 5V rail (not enough current for most companions, and FC brownout risk) - Share a BEC with servos or LEDs (current spikes from servos cause voltage drops that crash the companion) - Use a USB cable to power the companion from the FC (USB host mode, OTG, and power delivery vary wildly between platforms)
Cooling
Most companions need cooling at sustained load. A Pi 5 at full CPU load will thermal throttle within minutes without airflow.
On a drone, the props create significant airflow. Mount the companion where prop wash hits the heatsink. In a sealed enclosure, this doesn't help — add a small thermal pad to conduct heat to the frame (carbon fiber is a reasonable heat spreader).
The VOXL 2 is designed for drones and handles thermal management internally. The Jetson Orin modules require active cooling (fan) for sustained ML inference.
The UART Budget Impact
Adding a companion computer consumes at least one FC UART. If you're using the companion-as-hub architecture (see Chapter 8), it may be the only non-RC UART you need — GPS, mesh radio, and telemetry radio connect to the companion instead of the FC.
Before (consuming 4 FC UARTs):
FC ← RC receiver (UART1)
FC ← GPS (UART2)
FC ← Telemetry radio (UART3)
FC ← Mesh radio (UART4)
After (consuming 2 FC UARTs):
FC ← RC receiver (UART1)
FC ← Companion MAVLink (UART2)
Companion ← GPS (USB)
Companion ← Telemetry radio (Ethernet)
Companion ← Mesh radio (Ethernet)
Companion ← Camera (USB/CSI)
This is one of the strongest practical reasons to add a companion even if you don't need AI or computer vision: it solves the UART shortage on F4-class FCs.
What to Start With
If you've never used a companion computer on a drone:
-
Start with a Pi Zero 2W ($15, 10g, 2W). Wire it to the FC UART, install MAVProxy, forward telemetry to your laptop over WiFi. This proves the concept without the weight or power penalty.
-
Graduate to a Pi 5 when you need more compute — running CV models, processing sensor data, or hosting a Wingman agent.
-
Move to Jetson or VOXL 2 when you need real-time ML inference with multiple camera streams. This is where object detection, visual SLAM, and neural network planning live.
The hardware changes. The MAVLink connection pattern stays the same. Learn it once on a Pi Zero and it works the same on a Jetson.
Next
- Chapter 8: UART Layout — how the companion fits into the FC's limited serial ports.
- Chapter 14: Mesh Radios — the network hardware that the companion bridges to the FC.
The flight controller flies. The companion thinks. Don't make the flight controller think. Don't make the companion fly.
Chapter 14: Mesh Radios for Multi-Vehicle Operations
The expensive tactical mesh radio in your kit bag is running the same open-source software as a $15 router. Knowing this changes how you think about mesh networking.
What Mesh Radios Actually Are
A mesh radio is a WiFi radio in a ruggedized enclosure with custom firmware that routes traffic between nodes without infrastructure. No access point, no router, no internet connection. Nodes find each other, establish links, and route packets through intermediate nodes to reach destinations.
That's it. Everything else is implementation detail.
The Software Stack (What They Won't Tell You in the Datasheet)
| Vendor | Operating System | Mesh Protocol | Radio Hardware |
|---|---|---|---|
| Doodle Labs | OpenWRT (Linux) | batman-adv (layer 2 mesh) | Qualcomm/Atheros WiFi |
| Silvus | Custom Linux | Custom MAC + TDMA | Custom MIMO radio |
| Persistent Systems | Custom Linux | Wave Relay (proprietary) | Custom wideband |
| Rajant | Custom Linux | InstaMesh (proprietary) | Dual-radio Atheros |
Doodle Labs is the most transparent about this — their radios run OpenWRT, and if you SSH into one (which you can), you'll see batman-adv kernel modules, standard Linux networking, and iptables rules. The "mesh intelligence" that costs $3,000 per radio is largely batman-adv with custom antenna design and RF front-end optimization.
This isn't a criticism. Antenna design, RF front-end engineering, thermal management, and ruggedization are real engineering. The software is well-integrated and tuned. But understanding that the foundation is open-source Linux networking demystifies mesh radios and helps you troubleshoot them.
The Major Players
Doodle Labs
What they sell: Compact mesh radios from 200 MHz to 6 GHz. The Mini series (Mini900, Mini2400, etc.) are small enough to mount on a drone. The MR series are larger with better RF performance. The Helix series covers L/S/C bands for defense.
What's good: - Open platform (OpenWRT) — you can SSH in and configure anything - Small form factor (Mini series fits on a 5-inch quad) - Wide frequency range across the product line - batman-adv mesh is well-understood and debuggable - Active development, responsive technical support
What's not: - batman-adv mesh has convergence delays when topology changes (a drone moving fast can outrun the routing table) - Power consumption is significant (2-5W depending on model) - At the low end (Mini series), RF performance is limited by the tiny antenna and low TX power
Typical use: Commercial drone fleets, tactical ISR, research platforms, any application where you want mesh but also want to understand and customize the network.
Silvus Technologies
What they sell: StreamCaster mesh radios. Higher-end than Doodle Labs, with custom MIMO radio hardware and their own MAC-layer protocol. The SC4200/4400 series are the workhorses.
What's good: - Custom MIMO gives better spectral efficiency than commodity WiFi - TDMA-based MAC layer provides deterministic latency - High throughput (up to 100 Mbps per radio) - Strong defense/government customer base - Good video streaming support (multicast-aware mesh)
What's not: - Closed platform — you can't SSH in and debug the way you can with Doodle Labs - Expensive ($5,000-15,000 per node) - Configuration is through their web GUI, which is functional but not scriptable - Larger and heavier than Doodle Labs Mini series
Typical use: Defense ISR, government operations, commercial applications where budget supports the higher cost.
Persistent Systems
What they sell: MPU5 (manpack), Wave Relay ecosystem. The most mature tactical mesh network product. Used extensively by US SOF and allied forces.
What's good: - Wave Relay protocol is the most resilient mesh available — handles high mobility, rapid topology changes, and contested spectrum better than batman-adv - Proven in combat - Ecosystem includes vehicle mounts, body-worn units, drone-specific form factors - Integrated MANET management tools
What's not: - Most expensive option ($10,000-50,000 per node) - Heaviest option (MPU5 is not going on a 5-inch quad) - Closed ecosystem — Wave Relay doesn't interoperate with batman-adv or other mesh protocols - Long procurement cycles for military variants
Typical use: Military operations, high-end defense ISR, applications where proven combat performance justifies the cost.
Rajant
What they sell: BreadCrumb mesh radios. Dual-radio architecture (each node has two radios on different bands for simultaneous transmit and receive on different frequencies).
What's good: - Dual-radio avoids the half-duplex penalty of single-radio mesh - InstaMesh protocol handles mobility well - Good industrial track record (mining, oil & gas)
What's not: - Larger form factor than Doodle Labs - Less drone-specific than Silvus or Persistent
Typical use: Industrial applications, infrastructure monitoring, some defense applications.
Mesh Networking Fundamentals
How batman-adv Works (And Why It Matters)
batman-adv (Better Approach To Mobile Ad-hoc Networking - advanced) is a Linux kernel module that implements layer-2 mesh routing. It's what Doodle Labs and many other mesh products use underneath.
Key concepts: - Each node broadcasts OGMs (Originator Messages) periodically. These propagate through the mesh, allowing every node to learn the best path to every other node. - OGM interval (default 1 second) controls how fast the mesh adapts to topology changes. Lower = faster adaptation but more overhead. - TQ (Transmit Quality) is batman-adv's link quality metric. It's calculated from OGM reception rates. Higher = better link. - Routing is hop-by-hop. Each node only needs to know the next hop toward the destination, not the full path.
Why this matters for drones: Drones move fast. A mesh network optimized for static nodes (cell towers, sensor posts) may not adapt fast enough for a drone moving at 20+ m/s. If the OGM interval is 1 second and the drone has moved 20 meters since the last OGM, the routing table may be stale. Solutions: - Lower OGM interval (250-500 ms for fast-moving nodes) - Accept that mesh routing will lag position by 0.5-1 second - Use direct unicast for time-critical messages when nodes are within direct radio range (bypass mesh routing)
Throughput vs. Hops
Every hop in a mesh network costs throughput. A single-hop link at 50 Mbps becomes roughly: - 2 hops: ~25 Mbps - 3 hops: ~17 Mbps - 4 hops: ~12 Mbps
This is because traditional mesh radios are half-duplex — they can't transmit and receive at the same time on the same channel. Each hop requires the intermediate node to receive, then retransmit. Rajant's dual-radio approach mitigates this by receiving on one radio while transmitting on the other.
For drone operations: Keep the mesh shallow. 2-3 hops maximum for real-time data (telemetry, commands). Store-and-forward is acceptable for non-real-time data (sensor logs, blackbox files).
Channel Planning
Mesh radios on the same channel form a shared collision domain. More nodes = more contention = less per-node throughput.
Rules of thumb: - Up to 5 nodes on one channel works well - 5-15 nodes: consider splitting into two channels with a gateway node bridging them - 15+ nodes: you need a proper network plan with multiple channels and deliberate topology
For drone swarms, the practical limit is usually 8-12 platforms on a single mesh channel before throughput degrades noticeably. This aligns with typical tactical swarm sizes.
Practical Setup: Doodle Labs on a Drone
This section covers the most common drone mesh setup — a Doodle Labs Mini radio on a multi-rotor.
Physical Installation
- Mount with the antenna(s) pointing down or outward, not blocked by carbon fiber. CF is a moderate RF attenuator.
- Keep the radio away from the ESCs and battery leads. Conducted EMI from motor current can desense the radio's receiver.
- Power from a dedicated BEC, not the FC's 5V rail. Mesh radios draw 500-2000 mA and the FC's regulator may not handle it.
- Secure the Ethernet or USB cable. A disconnect in flight kills your mesh link and possibly your telemetry.
Network Configuration
- Assign static IP addresses. DHCP works but adds boot time and can fail in contested RF environments.
- Use a consistent addressing scheme:
10.0.0.{MAVLink_system_ID}— GCS is 10.0.0.255, drone 1 is 10.0.0.1, drone 2 is 10.0.0.2, etc. - Set the mesh SSID and encryption key to match across all nodes. PSK (pre-shared key) with AES-256 is standard.
- Set the OGM interval based on platform speed:
- Static ground nodes: 1000 ms (default)
- Slow-moving drones (<10 m/s): 500 ms
- Fast-moving drones (>10 m/s): 250 ms
MAVLink Over Mesh
The companion computer (or FC with Ethernet) sends MAVLink over UDP to the mesh radio. The mesh radio delivers it to the GCS.
FC (UART) → Companion (mavproxy) → UDP → Mesh Radio → [mesh] → GCS
MAVProxy configuration on the companion:
mavproxy.py --master=/dev/ttyS1,921600 --out=udp:10.0.0.255:14550
On the GCS, QGroundControl or Mission Planner listens on UDP 14550 for incoming MAVLink from any mesh node.
Critical: Set the MAVLink system ID on each drone to a unique value.
If two drones both use system ID 1, the GCS can't distinguish them.
PX4: MAV_SYS_ID parameter. ArduPilot: SYSID_THISMAV parameter.
When Mesh Isn't The Answer
Mesh networking adds weight, power consumption, complexity, and a new failure mode to every platform. Before adding a mesh radio, ask:
-
Do I need real-time data between platforms? If each drone operates independently and you analyze data after landing, you don't need mesh. You need SD cards and patience.
-
Can I solve it with sequential operations? If you can brief platforms one at a time via direct link (Tooth, phone, laptop), you don't need mesh. Mesh is for simultaneous coordination.
-
Is my mesh just carrying telemetry to a GCS? If you only need one drone's telemetry at a time, a point-to-point telemetry radio (RFD900x) is simpler, cheaper, lighter, and more reliable than mesh.
-
Is my operation within visual line of sight? If all platforms are within 500m of the operator, ESP-NOW (free, built into ESP32, no additional hardware) may be sufficient for coordination.
Mesh is the right answer when you need multiple platforms sharing data simultaneously, beyond point-to-point range, with dynamic topology. For everything else, simpler is better.
Next
- Chapter 13: Adding a Companion Computer — the compute platform that bridges the FC and the mesh radio.
- Chapter 15: TAK Integration — getting drone data onto the tactical common operating picture.
A $5,000 mesh radio is a $15 router with a great antenna and a ruggedized case. Respect the engineering. But don't be intimidated by it.
Chapter 15: TAK Integration
TAK is where your drone shows up on the map next to everyone else's position. Getting there doesn't require a defense contractor. It requires one UDP packet.
What TAK Is
TAK (Team Awareness Kit) is a situational awareness platform used by the US military, law enforcement, fire services, and increasingly by civilian teams. It shows positions, tracks, sensor data, and messages on a shared map.
The ecosystem: - ATAK — Android TAK (phone/tablet) - WinTAK — Windows version (laptop) - iTAK — iOS version - TAK Server — centralized server for team data sharing - WebTAK — browser-based viewer
TAK speaks one protocol: Cursor-on-Target (CoT). Everything that appears on the map is a CoT event — an XML message with a type, position, and metadata. If your drone can send a CoT event, it appears on TAK.
Cursor-on-Target (CoT) Basics
A CoT event is an XML message. Here's the minimum viable drone position report:
<?xml version="1.0" encoding="UTF-8"?>
<event version="2.0"
uid="drone-01"
type="a-f-A-M-H-Q"
how="m-g"
time="2026-03-16T18:30:00Z"
start="2026-03-16T18:30:00Z"
stale="2026-03-16T18:30:30Z">
<point lat="44.9778" lon="-93.2650" hae="300"
ce="10" le="15"/>
</event>
That's it. Send this over UDP to port 4242 on a TAK Server or directly to ATAK devices on the local network, and your drone appears on the map.
The Fields That Matter
uid: Unique identifier for your drone. Once set, every update
with the same uid moves the same icon on the map. Use something
stable — wingman-{tooth-id} or drone-{serial}.
type: The CoT type code determines the icon and classification. It follows the 2525C symbology standard:
| Type Code | Meaning | Icon |
|---|---|---|
| a-f-A-M-H-Q | Friendly, Air, Military, Rotary Wing | Blue helicopter |
| a-f-A-M-F-Q | Friendly, Air, Military, Fixed Wing | Blue airplane |
| a-f-G | Friendly, Ground | Blue ground vehicle |
| a-n-A-M-H-Q | Neutral, Air, Rotary Wing | Green helicopter |
| a-h-A-M-H-Q | Hostile, Air, Rotary Wing | Red helicopter |
| a-h-G-E-V-A | Hostile, Ground, Equipment, Vehicle | Red vehicle (used for RF detections) |
The first character after a- is the affiliation:
f = friendly, n = neutral, h = hostile, u = unknown.
how: How the position was determined.
m-g = machine GPS, h-e = human entry, h-g-i-g-o = GPS from another source.
time/start/stale: When the event was generated, when it starts being valid, and when it becomes stale (should be removed from the map if not refreshed). Set stale to 30-60 seconds for a moving drone so the icon disappears if the drone stops reporting.
point: Latitude, longitude, height above ellipsoid (meters), circular error (meters), linear error (meters).
Adding Detail
Telemetry in CoT
CoT supports a <detail> element for additional data. TAK clients
display this in the info popup when you tap the icon:
<event ...>
<point lat="44.9778" lon="-93.2650" hae="300" ce="10" le="15"/>
<detail>
<remarks>Battery: 14.8V (76%) | Alt: 300m AGL | Speed: 12 m/s</remarks>
<track course="045" speed="12"/>
<contact callsign="WINGMAN-01"/>
<__group name="Blue" role="Team Member"/>
</detail>
</event>
track: Course (degrees true) and speed (m/s). Allows TAK to show heading arrows and predict future position.
contact: The callsign displayed on the map next to the icon.
__group: Team assignment and role. Determines icon color in some TAK configurations.
remarks: Free-text field. Put your telemetry summary here. ATAK shows it in the detail popup.
Sensor Point of Interest
When your drone detects something (RF emission, visual target, anomaly), send a separate CoT event for the detection:
<event uid="detect-001"
type="a-h-G-E-V-A"
how="m-g" ...>
<point lat="44.9790" lon="-93.2640" hae="0" ce="50" le="50"/>
<detail>
<remarks>RF Detection: DoodleLabs MR900 | RSSI: -72 dBm | Bearing: 045</remarks>
<contact callsign="RF-DETECT-001"/>
</detail>
</event>
This places a hostile marker on the map at the estimated position of the detection. The NeedleNThread tactical RF detector uses exactly this pattern to push detections to TAK.
Transport: Getting CoT to TAK
Direct UDP (Simplest)
Send CoT XML as a UDP packet to ATAK devices on the local network. Default port: 4242.
import socket
cot_xml = '''<?xml version="1.0" encoding="UTF-8"?>
<event version="2.0" uid="drone-01" type="a-f-A-M-H-Q"
how="m-g" time="{time}" start="{time}" stale="{stale}">
<point lat="{lat}" lon="{lon}" hae="{alt}" ce="10" le="15"/>
<detail>
<contact callsign="WINGMAN-01"/>
<track course="{heading}" speed="{speed}"/>
</detail>
</event>'''
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(cot_xml.encode(), ('239.2.3.1', 6969)) # multicast
# or
sock.sendto(cot_xml.encode(), ('192.168.1.100', 4242)) # unicast to ATAK device
Multicast (239.2.3.1:6969) reaches all ATAK devices on the local network without knowing their IPs. Requires a network that supports multicast (WiFi works, some mesh radios don't forward multicast by default).
Unicast to a specific IP is more reliable but requires knowing the ATAK device's address.
Via TAK Server
A TAK Server centralizes all CoT traffic. Devices connect to the server (TCP, TLS, or WebSocket) and the server distributes events to all connected clients.
The drone (or its companion computer) connects to the TAK Server and sends CoT events. All ATAK/WinTAK clients connected to the same server see the drone.
FreeTAKServer is an open-source TAK Server that runs on a Pi, laptop, or cloud VM. It handles basic CoT routing without the complexity of the official TAK Server.
pip install FreeTAKServer
python -m FreeTAKServer.controllers.services.FTS
Via Mesh Radio
If the drone has a mesh radio (Chapter 14), CoT can travel over the mesh. The companion computer sends CoT to the mesh radio's IP, and the mesh radio delivers it to the GCS or TAK Server on the other end.
Drone: FC → Companion → CoT UDP → Mesh Radio → [mesh] → GCS/TAK Server
This is the standard architecture for tactical drone operations. The mesh radio carries both MAVLink (for flight control) and CoT (for situational awareness) on the same link, typically on different UDP ports.
Integration Points
From the Flight Controller
The FC has the position, altitude, heading, speed, and battery data. This needs to get from the FC to the TAK sender:
ArduPilot/PX4: MAVLink messages on the companion → parse GLOBAL_POSITION_INT, VFR_HUD, BATTERY_STATUS → format as CoT → send.
Betaflight/iNav: MSP on the companion → parse MSP_RAW_GPS, MSP_ATTITUDE, MSP_ANALOG → format as CoT → send. Or use the ELRS/CRSF telemetry downlink on the transmitter side → forward to ATAK on the GCS phone.
From Sensors
Payload sensors (cameras, RF detectors, environmental) generate their own CoT events through the companion computer. Each detection gets its own uid and type code.
From the Wingman Ecosystem
The Wingman architecture naturally generates TAK-compatible data: - Tooth mesh: Fleet position sharing maps directly to CoT events - Seed detections: Acoustic, RF, and PIR detections become CoT hostile/unknown markers - Wingman Command: The Command layer IS the TAK integration point for the full ecosystem — it translates Wingman mesh data into the CoT format that existing TAK infrastructure consumes
Practical Tips
1. Keep CoT events small. TAK clients handle thousands of events. Your drone doesn't need to send a novel — position, callsign, basic telemetry in remarks. The detail popup in ATAK has limited space.
2. Update rate: 1 Hz is enough. TAK is situational awareness, not flight control. Sending position once per second is plenty. Faster than that wastes bandwidth and doesn't improve the map display.
3. Use meaningful callsigns. "WINGMAN-01" is useful on a shared map. "drone-abc123def" is not. Callsigns should be short, unique, and recognizable.
4. Set stale time appropriately. 30 seconds for a moving drone. If the drone stops sending CoT (crash, link loss, battery dead), the icon disappears from the map after the stale time. This is correct behavior — a stale position is worse than no position.
5. Test with ATAK first. Install ATAK on an Android phone, connect to the same network as your CoT sender, and verify the icon appears. Don't integrate with a TAK Server until direct UDP works.
6. CoT type codes matter. Using the wrong type code means your drone shows up as a ground vehicle, or a hostile, or a waypoint. Get the type code right for your affiliation and platform type.
Next
- Chapter 14: Mesh Radios — the transport that carries CoT from the drone to the TAK ecosystem.
- Chapter 13: Adding a Companion Computer — the platform that generates CoT from flight controller data.
TAK is a shared map. Your drone belongs on it. One UDP packet puts it there. Everything else is refinement.
Unsolved Problems — What's Left to Build
The Unhandled Exceptions in Mesh Networking & Drone Swarm Operations
Version 1.0 — March 2026
This handbook covers what works today — the RF fundamentals, the firmware, the field procedures, the integration patterns, the components. But a handbook is only useful if it's honest about where the knowledge stops.
This chapter is the other side of the ledger. Every problem listed here is something the handbook can't solve for you yet because nobody has solved it. Some are active research. Some have partial answers that fall apart in the real world. Some have no credible path forward with current technology.
The point isn't to discourage. The point is to focus. If you're building something new, start here — because every unsolved problem on this list is an invitation. Solve one and the next edition of this handbook gets a new chapter.
Drone shows are not swarms. They are pre-choreographed screensavers playing back trajectory files in controlled airspace with RTK GPS and zero autonomy. If your "swarm" can't handle a 15 mph crosswind, a lost radio link, or a drone it's never met before, it's not a swarm.
This document exists because every unchecked box is an invitation. Solve one of these and you've moved the entire industry forward.
Buddy up.
The Drone Show Illusion
People watch 5,000 drones paint a dragon in the night sky and walk away thinking swarm technology is solved. It is not. Those shows are remarkable engineering achievements, but they are the opposite of what the word "swarm" means in any operational context. Here is what a drone show actually is:
- Pre-choreographed: Every trajectory is computed offline, often hours or days before the show. No drone makes a single decision during flight.
- Central server playback: A ground computer sends every position waypoint to every drone. Remove the server and nothing flies.
- RTK GPS: Sub-centimeter positioning from fixed base stations set up at the venue. Not field-deployable, not available indoors, not available in contested environments.
- Controlled airspace: The show area is a restricted zone with no other air traffic, no RF interference, no obstacles, no unknowns.
- Identical hardware: Every drone is the same model with the same firmware. Zero heterogeneity.
- No wind tolerance: Shows are cancelled in winds above 10–15 mph. Real operations happen in whatever weather the mission requires.
- No autonomy: If a drone loses comms, it lands. If the server fails, everything lands. There is no independent decision-making.
- No sensing: The drones don't see anything. They don't detect anything. They don't react to anything. They play back a file.
Now consider what a real operational swarm would need to do:
- Fly heterogeneous platforms (different sizes, different sensors, different endurance) in uncontrolled airspace.
- Coordinate in real time with sub-second latency over unreliable mesh radio links.
- Make autonomous decisions when communication is lost, degraded, or jammed.
- Share sensor data (video, detections, position) across the mesh without saturating bandwidth.
- Handle wind, weather, obstacles, and other aircraft that weren't in the plan.
- Operate with or without GPS.
- Add and remove drones mid-mission without stopping the operation.
- Keep flying safely when individual drones fail.
The gap between these two lists is the subject of this document. Every item below is a specific, defined problem that stands between the drone show illusion and real swarm capability. Some are being actively worked on. Some have partial solutions. Some have no credible path to solution with current technology.
If someone tells you their drone swarm "just works," ask them: how many drones, at what range, sharing what bandwidth, at what latency, in what weather, for how long, with how many operators, and what happens when you jam the radio? The answers will be disappointing. That's not a criticism. That's where the work is.
How to Read This Document
This is a checklist, not a textbook. Each problem is stated as concisely as possible with three columns:
- The Problem: What doesn't work and why it matters.
- The Reality: What actually happens today, with real numbers where available.
- What Would Solve It: What a solution would look like. This is the invitation.
Status key:
- ☒ UNSOLVED — No production-ready solution exists. Active research problem. Pick this one if you want to change the industry.
- ▣ PARTIAL — Works in controlled conditions, degrades or fails in the real world. Improvement is valuable but the core problem is understood.
- ☑ SOLVED — Production solutions exist and are deployed. Included for context — these were once unsolved too.
The goal is to turn red boxes amber, and amber boxes green. Every color change is a real contribution.
RF & Communications
Radio is the nervous system of a swarm. Everything else — coordination, navigation, sensing — depends on drones being able to talk to each other. And radio physics does not care about your product roadmap.
| # | Problem | The Reality | What Would Solve It |
|---|---|---|---|
| ☒ | Spectrum Congestion at Scale | 20+ drones on the same WiFi channel destroy each other's throughput. Hidden node problem compounds in 3D airspace. CSMA/CA was designed for offices, not swarms. | Dynamic spectrum access with cognitive radio. Licensed spectrum for UAS. Directional antennas that create spatial channels. All expensive, all heavy, all power-hungry. |
| ☒ | Latency vs. Hop Count | Each mesh hop adds 10–50ms. A 5-hop path = 50–250ms minimum. Swarm coordination needs <100ms. These numbers don't work together. | Deterministic TDMA scheduling on custom waveforms. Eliminates contention but requires precise clock sync (see Navigation section). Military radios do this but cost $20K+ per node. |
| ☒ | Bandwidth vs. Range | Shannon's law is not negotiable. High bandwidth = wide channel = high frequency = short range. 5.8 GHz gives bandwidth but 500m range. 900 MHz gives range but 1 Mbps. You cannot have both. | Don't stream raw video. Process onboard (NPU), send detections + thumbnails (100× compression). Design the swarm protocol for the link, not the other way around. |
| ☒ | Inter-Swarm Interference | Two swarms in the same area on the same frequencies interfere with each other. No coordination mechanism exists between independent swarm operators. | Airspace-anchored spectrum allocation. Cooperative spectrum sharing protocols. Standardized swarm-to-swarm deconfliction. None of this exists yet. |
| ▣ | Mesh Self-Healing Speed | Mesh protocols can reroute around a failed node, but convergence takes 1–10 seconds. A drone at 20 m/s travels 20–200m during reconvergence. That's an eternity for collision avoidance. | Proactive routing with pre-computed backup paths. batman-adv and OLSR do this partially. Still too slow for safety-critical coordination. |
| ▣ | EW/Jamming Resilience | Frequency hopping helps but a broadband jammer saturates all hop frequencies simultaneously. DSSS provides processing gain but at the cost of bandwidth. Commercial mesh radios are not designed for contested RF. | Affordable, compact, jam-resistant waveforms for sub-250g platforms. The military has solutions but they weigh 2 kg and cost $50K. The gap is bringing that capability to small drones. |
| ▣ | Video Backhaul | Real-world WiFi mesh throughput is 20–40 Mbps aggregate. That's 4–8 simultaneous 720p streams. A 20-drone swarm with cameras cannot stream everything. | Edge processing eliminates the need to stream raw video. Compress observations to metadata + keyframes. The compute exists (NPUs) but the software pipeline is immature. |
Swarm Coordination & Decision-Making
Coordination is where the swarm either becomes more than the sum of its parts, or collapses into an expensive traffic jam. Almost every coordination algorithm that works in simulation has never been tested with real radios, real wind, and real failure modes.
| # | Problem | The Reality | What Would Solve It |
|---|---|---|---|
| ☒ | Scaling Past ~50 Agents | Algorithms that coordinate 10 drones break at 100. Communication and computation scale O(n²) or worse. No production system has demonstrated reliable coordination beyond ~50 heterogeneous agents. | Hierarchical coordination: cluster leaders + local consensus + inter-cluster gossip. Reduces scaling to O(n log n). Proven in simulation, unproven in the field with real comms. |
| ☒ | Consensus Under Packet Loss | Consensus algorithms assume reliable delivery. Real mesh loses 5–20% of packets under load. Byzantine fault tolerance adds latency. Raft and Paxos weren't designed for 100ms round-trips with 15% loss. | Byzantine fault-tolerant consensus adapted for high loss. Computationally expensive. May need to accept eventual consistency instead of strong consensus for non-safety-critical decisions. |
| ☒ | Real-Time Task Allocation | Optimal task assignment for N drones is NP-hard. Heuristics exist but degrade with incomplete information (which is the normal case in a swarm). | Distributed auction/market algorithms with bounded computation. Show promise in simulation. Performance with real latency and packet loss is unknown. |
| ☒ | Graceful Degradation at Scale | When 1 of 10 drones fails, the swarm adapts. When 10 of 100 fail simultaneously, cascading failures are likely. No system has demonstrated graceful degradation at scale with realistic failure rates. | Pre-computed degradation scenarios (the Assumptions List concept). Resilient planning that expects failure, not just tolerates it. Tested only in simulation. |
| ▣ | Formation in Real Wind | Precise formation requires sub-second position updates and responsive control. Gusty conditions create oscillations. Wind estimation is local — each drone sees different wind. | Cooperative wind estimation (share wind observations across swarm). GPS + VIO + IMU fusion for position. PID gains that adapt to conditions. Works in light wind, untested in real gusts. |
| ▣ | Human-Swarm Interface | One operator, one drone: well understood. One operator, 20 drones: information overload. Current GCS interfaces show individual drone telemetry. No interface has solved swarm-level situational awareness. | Intent-based commands ("survey this area" not "fly to waypoint 7"). Autonomy sliders that let operators choose how much control to delegate. Exception-based management: the UI is quiet unless something needs human attention. |
Navigation & Positioning
GPS made drone navigation feel solved. It is not. Take away GPS and most drones become expensive lawn darts. Even with GPS, the accuracy and update rate are insufficient for tight swarm coordination.
| # | Problem | The Reality | What Would Solve It |
|---|---|---|---|
| ▣ | VIO Drift | Visual odometry drifts 0.5–2% of distance traveled. After 1 km, error is 5–20m. Accumulates over time with no correction. Not acceptable for precision coordination. | Loop closure (revisit known areas), terrain-relative matching (reference maps), GPS integration when available. Each adds compute, power, and complexity. No single solution works in all conditions. |
| ☒ | Absolute Position Without GPS | No vision-based system provides absolute Earth-referenced position. VIO/SLAM gives relative position only. eLoran, terrestrial beacons, and signals-of-opportunity navigation are research-stage. | Alternative absolute positioning: eLoran, terrestrial beacons, signals of opportunity (cellular, WiFi, broadcast TV). All immature or unavailable for airborne platforms. |
| ☒ | Vision Nav in Bad Conditions | VIO and SLAM fail in: low light, fog, rain, smoke, snow, featureless terrain (water, desert, snow fields). These are exactly the conditions where GPS-denied navigation is most needed. | Multi-modal sensing: thermal + radar + LiDAR + acoustic. Each adds weight, power, and cost. Sensor fusion algorithms for degraded-visual-environment navigation are active research. |
| ▣ | Inter-Drone Relative Position | Swarm-mates need to know each other's positions. Options: GPS (1–3m error, requires satellites), UWB ranging (centimeter accuracy, requires line of sight), vision (works but computationally expensive). | Cooperative localization: drones share observations to collectively improve position estimates. Mathematically elegant. Practically untested at scale with real latency. |
| ▣ | Clock Sync Without GPS | Swarm protocols need synchronized clocks. GPS provides nanosecond sync. Without GPS, network-based sync achieves microsecond accuracy at best, which degrades with hop count and packet loss. | Network time protocols over mesh. Cooperative clock sync. Chip-scale atomic clocks (CSACs) are $1,500+ and provide holdover but not initial sync. |
Power, Weight & Endurance
Every capability we add to a drone — compute, radios, sensors, cameras — draws power from the same battery that keeps it in the air. Physics does not offer free compute cycles.
| # | Problem | The Reality | What Would Solve It |
|---|---|---|---|
| ☒ | Compute vs. Flight Time | Running VIO + SLAM + detection + mesh networking draws 5–15W on a companion computer. On a 250g drone with a 2S battery, that's 20–50% of total power budget. Every watt of compute is a minute of flight time. | More efficient silicon (NPUs > GPUs by 10× per watt). Algorithm optimization. Larger drones with more battery. Each solution has tradeoffs — efficiency means less capability, size means less deployability. |
| ☒ | Mesh Relay Power Cost | A drone relaying other drones' traffic keeps its radio transmitting continuously. A WiFi radio at full power draws 2–5W. This is comparable to the propulsion cost of the compute itself. | Duty-cycle-aware routing that balances relay load. Sleep scheduling. Both reduce throughput. The fundamental tension: the mesh needs relay nodes, but relay duty kills endurance. |
| ▣ | Heterogeneous Endurance | Different drones have different battery levels. The swarm's effective mission time equals its lowest-endurance member unless you plan for early RTLs. Most swarm planners don't. | Dynamic role assignment based on energy state. Low-battery drones take passive roles. Landing and relaunching mid-mission. Battery-aware task allocation. Demonstrated in simulation only. |
| ☒ | Weight Budget for Swarm Hardware | A mesh radio module + antennas + companion computer + cameras + ranging sensors = 50–200g. On a 250g drone, that's the entire payload budget. On a 5 kg drone, it's manageable. Sub-250g swarm-capable drones don't exist yet. | Integration (APB-style single boards). Lighter radios. More capable SoCs. The trend is favorable but current COTS options still exceed budget for small platforms. |
Software, Standards & Regulation
Even if we solved every physics problem above, the software and regulatory infrastructure to deploy real swarms does not exist.
| # | Problem | The Reality | What Would Solve It |
|---|---|---|---|
| ☒ | No Swarm Protocol Standard | MAVLink standardized single-drone C2. Nothing equivalent exists for multi-agent coordination. Every swarm project invents its own protocol. Interoperability is zero. | An open swarm coordination protocol. STANAG 4586 covers single-UAS but not multi-agent. ROS 2 DDS provides middleware but not a swarm protocol. Someone needs to write the MAVLink equivalent for swarms. |
| ☒ | Multi-Vendor Abstraction | Different FCs, different firmware, different sensors, different radios. Building a swarm from mixed hardware is an integration nightmare. No abstraction layer exists. | Lightweight swarm middleware that runs on ESP32 through Jetson. Must abstract FC differences, sensor differences, and radio differences behind a common API. The integration tax is currently paid per-project. |
| ▣ | Sim-to-Reality Gap | Swarm algorithms tested in simulation often fail in the real world. Simulations underestimate latency, overestimate link reliability, ignore wind, and don't model RF propagation accurately. | Hardware-in-the-loop simulation with real radios and injected faults. Digital twins that model RF, wind, and failure modes. Expensive to build, essential to trust. |
| ☒ | Regulatory Framework | No country has a clear regulatory path for one operator controlling multiple autonomous drones simultaneously. BVLOS waivers exist for single drones. Swarm operations are regulatory terra incognita. | Regulatory frameworks that recognize swarm-level autonomy and define acceptable failure modes. This requires technical standards (see above) that regulators can reference. Chicken-and-egg problem. |
| ☒ | Cybersecurity at Swarm Scale | Mesh networks are inherently harder to secure than point-to-point links. Every node is an attack surface. Spoofing, injection, and denial of service at swarm scale are largely unstudied. | Lightweight authenticated encryption that doesn't break latency budgets. Hardware root of trust on each node. Swarm-level intrusion detection. All active research areas with no deployed solutions for small UAS. |
The Scoreboard
As of March 2026:
| Category | ☒ Unsolved | ▣ Partial | ☑ Solved | Total |
|---|---|---|---|---|
| RF & Communications | 4 | 3 | 0 | 7 |
| Coordination & Decision-Making | 4 | 2 | 0 | 6 |
| Navigation & Positioning | 2 | 3 | 0 | 5 |
| Power, Weight & Endurance | 3 | 1 | 0 | 4 |
| Software, Standards & Regulation | 4 | 1 | 0 | 5 |
| TOTAL | 17 | 10 | 0 | 27 |
17 unsolved. 10 partial. 0 solved.
Zero boxes in the green column. That is the honest state of swarm technology in 2026. This is not a condemnation — it is the most exciting engineering frontier in robotics. Every one of these 27 problems is a PhD thesis, a startup, a contract, or a contribution to an open-source project that the entire industry would benefit from.
What AI Wingman Does About It
We don't pretend these problems are solved. We design around them:
- The Wingman Grid works without GPS. It doesn't fix GNSS-denied absolute positioning — it sidesteps it by making GPS optional, not required.
- The Assumptions List acknowledges that communication will fail. Instead of pretending the mesh is reliable, we pre-agree on what each drone does when the mesh is gone.
- Edge processing reduces the bandwidth problem. The APB's NPU processes video onboard and sends detections, not streams. This turns a 5 Mbps problem into a 50 Kbps problem.
- The autonomy slider explicitly communicates how much the system can do alone. L0 is honest: the drone flies, the human decides. L4 is aspirational: the drone operates independently per the Assumptions List. We don't claim L4 is production-ready.
- Product separation (Wingman advises, Forge recommends hardware, Command integrates C2) means each product can be honest about its own limitations without pretending the whole system is more capable than it is.
- Open documentation (including this document) invites the community to help solve these problems rather than pretending we already have.
We put "safety" in quotes because it reduces danger without eliminating it. We should put "swarm" in quotes too. The honest version: a group of drones that try to coordinate, sometimes succeed, and have a plan for when they can't.
The Invitation
This document is intended for inclusion in The Drone Integration Handbook — the free, open industry reference. It is not proprietary. It is not competitive intelligence. It is a shared accounting of what is hard, written by people who have tried to make this stuff work and know where it breaks.
If you solve one of these problems — even partially — tell someone. Publish it. Open-source it. Present it at a conference. File a patent if you need to, but make sure the knowledge reaches the people building drones in garages and labs and forward operating bases. The industry moves forward when hard problems get easier, and they get easier when people share what they've learned.
Every red box that turns amber is progress. Every amber box that turns green is a breakthrough. The scoreboard will be updated as the state of the art advances.
The drone show is beautiful. The unsolved problems list is useful. We'd rather be useful.
AI Wingman — Unsolved Problems in Mesh & Swarm v1.0 17 unsolved. 10 partial. 0 solved. Let's get to work.
Buddy up.
Part 5 — Platform References
Full integration profiles — RF links, firmware, payloads, SDKs, and gotchas. Vetted parts only.
Autel Robotics EVO MAX 4T V2
Category: Commercial Off-the-Shelf (COTS) NDAA Status: XE variant is NDAA compliant; standard V2 has mixed sourcing Manufacturer: Autel Robotics (Bothell, WA / Shenzhen assembly)
Overview
Autel's flagship enterprise drone and the most direct competitor to the DJI M30T. Quad-sensor gimbal (wide, zoom, thermal, laser rangefinder), GPS-denied flight via SLAM, A-Mesh drone-to-drone networking, and no geofencing. Positioned as the go-to DJI alternative for public safety and inspection operators.
Specs
| Spec | Value |
|---|---|
| Weight | ~1.185 kg (2.61 lb) takeoff |
| Max Flight Time | 42 min |
| Max Speed | 23 m/s |
| Service Ceiling | 23,000 ft |
| Wind Resistance | 27 mph |
| IP Rating | IP43 |
| Operating Temp | -20°C to 50°C (-4°F to 122°F) |
Sensors
| Sensor | Spec |
|---|---|
| Wide Camera | 50MP 1/1.28″ CMOS, f/1.9, 85° DFOV |
| Zoom Camera | 48MP, 10x optical / 160x hybrid zoom, 8K |
| Thermal | 640×512, 13mm, 16x digital zoom, -20°C to 550°C |
| Laser Rangefinder | 5–1200 m, ±1 m accuracy |
| Obstacle Avoidance | 720° — binocular vision + mmWave radar |
RF Links
SkyLink 3.0
- Antennas: 6 (4 tx, 6 rx)
- Frequency Bands: 900 MHz, 2.4 GHz, 5.2 GHz, 5.8 GHz — adaptive frequency hopping
- Range: 20 km (12.4 mi) — FCC
- Video Quality: 1080p/60fps, <150ms latency
- Encryption: AES-256 full-link
- Cellular: Optional 4G dongle
- A-Mesh 1.0: Drone-to-drone autonomous communication — drones relay comms and extend network coverage without ground infrastructure
Frequency Restrictions
- 5.2 GHz only available in FCC, CE, UKCA regions
- 900 MHz only available in FCC regions
Firmware & Software
- GCS: Autel Enterprise App (Android, on Smart Controller V3)
- Firmware: Proprietary, OTA updates
- SDK: UX SDK (iOS/Android), Payload SDK for third-party mounts
- No MAVLink, no QGroundControl
- Data stays local — no mandatory cloud connection, no cloud upload unless operator enables it
Autonomy & GPS-Denied Flight
- Autel Autonomy Engine: Real-time 3D scene reconstruction and autonomous path planning
- GNSS-Denied Navigation: SLAM-based visual navigation for indoors, underground, urban canyons
- AI Target Detection: Auto-identify and lock onto heat sources, people, vehicles
- Mission Reproduction: Fly once manually, the drone replays the exact mission autonomously
- Triple Anti-Jamming: RFI, EMI, and GPS spoofing countermeasures
Payload Integration
- Integrated quad-sensor gimbal — not swappable
- Payload SDK interface for accessories (loudspeaker, spotlight, RTK module)
- RTK module available for cm-level positioning
- Compatible with EVO Nest for automated remote operations
Gotchas
-
No geofencing — good for operators who need flexibility, but means no built-in airspace safety net. Know your airspace.
-
NDAA compliance depends on variant. The XE model is purpose-built for compliance. The standard V2 may contain restricted components. Ask your dealer specifically about the XE if compliance matters.
-
A-Mesh requires multiple Autel aircraft. No cross-manufacturer mesh networking.
-
Smart Controller V3 is proprietary — no third-party controller support.
-
Integrated gimbal means no payload swap. If you need LiDAR, this is the wrong platform.
-
900 MHz band only in FCC regions. International operators lose a frequency band.
When to Use This Platform
The MAX 4T V2 is the strongest DJI M30T competitor for public safety and inspection. The quad-sensor gimbal, GPS-denied flight, and A-Mesh networking give it capabilities DJI doesn't offer. No geofencing is a feature, not a bug, for operators who know what they're doing. The XE variant solves the NDAA question for agencies that need it.
Last updated: March 2026
Autel EVO II Enterprise V3 (Dual 640T)
Category: Commercial Off-the-Shelf (COTS) NDAA Status: Non-NDAA standard; check with Autel for compliant builds Manufacturer: Autel Robotics (Bothell, WA / Shenzhen assembly)
Overview
Autel's workhorse dual-sensor enterprise platform. 8K RGB + 640×512 thermal in a foldable, portable form factor. Less autonomy than the MAX series but more affordable and widely deployed for fire, law enforcement, and utility inspection.
Specs
| Spec | Value |
|---|---|
| Camera | 0.8″ RYYB CMOS 8K + 640×512 thermal @ 30fps |
| Flight Time | 42 min |
| Transmission | 15 km range, AES-256 |
| Weight | ~1.25 kg |
| Thermal Modes | 10 color schemes, 4x lossless zoom |
Integration Notes
- Solid mid-tier enterprise platform
- No GPS-denied flight or mmWave radar like the MAX
- Good thermal resolution for the price (640×512 @ 30fps)
- Supports Remote ID
- Same Autel Enterprise App ecosystem
- No payload swap — integrated dual sensor only
- No MAVLink
When to Use This Platform
Budget-conscious agencies that need thermal + RGB in a portable package. If you don't need the MAX's GPS-denied flight or A-Mesh networking, this saves money without sacrificing core sensor capability.
Last updated: March 2026
DJI Agras T50
Category: Commercial / Industrial — Agriculture NDAA Status: NOT compliant Manufacturer: DJI (Shenzhen, China)
Overview
DJI's flagship agricultural spraying/spreading drone. Coaxial twin-rotor design carrying 40 kg spraying or 50 kg spreading payloads. Dual atomizing spraying system, front/rear phased array radars, binocular vision. The dominant platform in commercial ag spraying worldwide. Covers ~52 acres/hour at 2 GPA.
Specs
| Spec | Value |
|---|---|
| Empty Weight | 39.9 kg (88 lb) |
| Max Takeoff Weight | 92 kg (spraying) / 103 kg (spreading) |
| Spray Tank | 40 L (10.56 gal), 40 kg operating payload |
| Spread Tank | 50 kg capacity |
| Spray Width | 4–11 m (13–36 ft) at 3 m height |
| Flow Rate | Up to 16 L/min (2 nozzles), 24 L/min (4 nozzles) |
| Droplet Size | 50–500 μm (adjustable) |
| Coverage | ~52 acres/hour |
| RTK Accuracy | ±10 cm (H/V) with D-RTK |
| Battery | DB1560, 9-min fast charging, 1500 cycle life |
| Obstacle Avoidance | 360° — front/rear phased array radar + binocular vision |
| Camera | 12MP adjustable gimbal for surveying |
RF Links
- Control: DJI O3 transmission, 2.4/5.8 GHz, up to 7 km (FCC)
- Controller: RM700B high-brightness 7" touchscreen
- RTK: D-RTK 2 Mobile Station for cm-level positioning
- Relay Module: Available for signal extension in hilly/canopy terrain
Software & Autonomy
- App: DJI Agras App / DJI SmartFarm
- Mapping: DJI Terra for local map generation, boundary/obstacle detection
- Variable Rate: Pairs with Mavic 3 Multispectral for NDVI-based prescription maps
- Mission Types: Farmland survey, spray, spread — auto route generation from boundary points
- KML Import: Supports third-party GIS file import
Gotchas
- NOT NDAA compliant. Federal ag funding that requires compliant equipment cannot be used for this platform.
- Requires Part 137 exemption for commercial agricultural application in the US.
- 88 lb empty weight — not remotely portable. Requires truck/trailer setup.
- DJI FlyCart 100 and T60 exist in China but are NOT FAA approved in the US. The T50 is currently the largest DJI ag drone available in the US market.
- Battery logistics are critical. 9-min fast charge with DJI C10000 charger + generator is the only way to maintain production rates.
- Nozzle clogging with powder-base products was an issue on earlier models — dual atomizing centrifugal nozzles on T50 address this.
Last updated: March 2026
DJI FlyCart 30
Category: Commercial / Industrial — Heavy-Lift Delivery NDAA Status: NOT compliant Manufacturer: DJI (Shenzhen, China)
Overview
DJI's heavy-lift delivery drone. 4-axis, 8-propeller configuration. 30 kg payload (dual battery) / 40 kg (single battery). Cargo mode and winch mode (30 m retractable cable). FAA-approved with Remote ID in the US. Built for logistics, agriculture supply, emergency response, and industrial material transport.
Specs
| Spec | Value |
|---|---|
| Max Payload | 30 kg (dual battery) / 40 kg (single battery) |
| Flight Distance | 28 km (no payload) / 16 km (full load) |
| Max Speed | 20 m/s (45 mph) |
| Max Altitude | 6,000 m |
| Operating Temp | -20°C to 45°C |
| Wind Resistance | 12 m/s |
| IP Rating | IP55 |
| Video Tx | DJI O3, 20 km + 4G enhanced |
| Obstacle Avoidance | Front/rear phased array radar + binocular vision |
| ADS-B | Integrated receiver |
| Parachute | Integrated, independent power source |
| Delivery Modes | Cargo mode (direct), Winch mode (30 m cable) |
RF Links
- Control/Video: DJI O3, 2.4/5.8 GHz, 20 km range
- 4G Enhancement: For obstructed terrain
- Dual Operator Mode: Supported
- Controller: RC Plus, 7" high-brightness display
Gotchas
- NOT NDAA compliant.
- Winch kit sold separately — base price does not include it.
- Battery and charger sold separately.
- Requires careful weight/CG management — drone auto-detects payload weight and center of gravity.
- FlyCart 100 (80 kg payload) exists but is China-only as of 2026.
Last updated: March 2026
DJI Matrice 30T
Category: Commercial Off-the-Shelf (COTS) NDAA Status: NOT compliant Manufacturer: DJI (Shenzhen, China)
Overview
DJI's mid-tier enterprise drone — smaller and more portable than the M350 but still a serious inspection and public safety platform. Integrated dual-camera + thermal + laser rangefinder payload. Weather-sealed and designed for rapid deployment.
Specs
| Spec | Value |
|---|---|
| Weight | 3.77 kg (8.31 lb) with battery |
| Max Flight Time | 41 min |
| Max Speed | 23 m/s |
| Payload | Integrated — no swappable gimbals |
| Cameras | 48MP zoom (5–16x optical), 12MP wide, 640×512 thermal, LRF |
| Video Tx | DJI O3 Enterprise, 2.4/5.8 GHz, 15 km range |
| IP Rating | IP55 |
RF Links
Same DJI O3 Enterprise video system as M350. Supports DJI RC Plus controller. Dual-operator mode. 4G dongle compatible. No MAVLink.
Firmware & Software
Proprietary DJI firmware. DJI Pilot 2 on RC Plus. MSDK and Cloud API for third-party app development. DJI Dock compatible for fully autonomous remote operations (automated takeoff, landing, charging, mission execution).
Gotchas
- Not NDAA compliant.
- No payload flexibility — the integrated sensor package is the only option. No LiDAR, no custom payloads.
- DJI Dock integration is powerful but locks you into DJI's cloud ecosystem.
- If you need LiDAR or custom sensors, use the M350 RTK instead.
Last updated: March 2026
DJI Matrice 350 RTK
Category: Commercial Off-the-Shelf (COTS) NDAA Status: NOT compliant — banned from U.S. federal procurement as of Dec 2025 (American Security Drone Act) Manufacturer: DJI (Shenzhen, China)
Overview
The DJI M350 RTK is DJI's flagship enterprise platform and the successor to the M300 RTK. It is the most widely deployed commercial drone for inspection, mapping, and public safety worldwide. Closed ecosystem, but deep third-party payload support via E-Port and Payload SDK.
Specs
| Spec | Value |
|---|---|
| Weight (no payload) | ~3.77 kg (8.31 lb) |
| Max Takeoff Weight | 9.2 kg (20.3 lb) |
| Max Payload | 2.73 kg (6.01 lb) — triple gimbal support |
| Max Flight Time | 55 min (no payload, no wind) |
| Max Speed | 23 m/s (51.5 mph) |
| Max Altitude | 7000 m (with high-altitude propellers) |
| IP Rating | IP55 |
| Operating Temp | -20°C to 50°C |
| RTK Positioning | 1 cm + 1 ppm (H) / 1.5 cm + 1 ppm (V) |
RF Links
Link 1 — Control & Video (Combined)
- System: DJI O3 Enterprise transmission
- Frequencies: 2.4 GHz / 5.8 GHz (auto-switching)
- Max Range: 20 km (FCC) / 8 km (CE)
- Video Downlink: 1080p/30fps to DJI RC Plus controller
- Dual Operator: Supported — pilot + payload operator on separate controllers
- Cellular Backup: Optional 4G dongle for cellular C2
Link 2 — Telemetry
- Protocol: Proprietary DJI protocol — no native MAVLink
- Access: Telemetry data available via DJI MSDK / Cloud API for third-party GCS integration
- Fleet Management: DJI FlightHub 2
Firmware & Software
- Firmware: Proprietary DJI firmware
- Updates: DJI Pilot 2 app (OTA or offline SD card), or DJI Assistant 2 (Enterprise Series) via USB
- GCS: DJI Pilot 2 (Android, on RC Plus)
- Third-Party GCS: DroneSense, Pix4Dcapture, DJI FlightHub 2 — all via Mobile SDK
- No QGroundControl or Mission Planner support
Payload Integration
- Gimbal Mounts: 3 — single upward + dual downward
- Native Payloads: Zenmuse H30/H30T, H20/H20T/H20N, L2, L1, P1, S1, V1
- Third-Party Payloads: Skyport V2 adapter or E-Port
- E-Port: UART, USB, SDK API, 24V power — replaces the old Onboard SDK port
- DJI X-Port: For lightweight third-party gimbals
- Payload SDK: Custom camera control, data streaming, widget display on Pilot 2
Companion Computer / SDK
- E-Port: USB device connection for companion computers (Jetson, RPi, etc.)
- CRITICAL: Companion computer must operate as USB device (not host) — opposite of the old OSDK port
- SDKs: Payload SDK (PSDK), Mobile SDK (MSDK), Cloud API
- No open MAVLink access
Gotchas
-
NOT NDAA compliant. Banned from U.S. federal procurement as of December 2025 under the American Security Drone Act. If your funding source is federal, you cannot buy this.
-
E-Port USB role is reversed from OSDK. If you're migrating from M300 with an existing companion computer setup, the USB host/device relationship is flipped. You need to rewire or re-architect.
-
M300 Skyport V1 payloads need V2 adapter. Not all V1 payloads have V2 updates available from their manufacturers.
-
DJI firmware updates can break third-party integrations without warning. Pin your firmware version and test updates before deploying to your fleet.
-
Geofencing is aggressive. GEO 2.0 system can prevent flight in restricted areas without unlock authorization. This is a problem for emergency responders who need to fly NOW.
-
Data stays local unless operator enables FlightHub. No mandatory cloud connection — but also no easy way to share fleet data without buying into DJI's ecosystem.
When to Use This Platform
Despite the NDAA issues, the M350 RTK remains the most capable enterprise drone on the market in terms of raw performance, payload flexibility, and ecosystem maturity. If your use case is commercial (not federally funded), and you need a workhorse that Just Works, this is still the benchmark.
If you need NDAA compliance, look at Freefly Astro, Inspired Flight IF1200A, or Skydio X10D.
Last updated: March 2026
DJI Matrice 4 Series
Category: Commercial Off-the-Shelf (COTS) NDAA Status: NOT compliant Manufacturer: DJI (Shenzhen, China)
Overview
DJI's newest enterprise platform family, announced 2025. Successor positioning alongside the M350 RTK. Details emerging as the platform reaches market. Expected to feature updated DJI O4 transmission, improved obstacle sensing, and next-generation gimbal/payload system.
Notes
Platform is still reaching full market availability. Check DJI Enterprise for latest specs and availability. Community contributions with early field experience welcome.
Last updated: March 2026
DJI Mavic 3 Enterprise (Thermal / Multispectral)
Category: Commercial Off-the-Shelf (COTS) NDAA Status: NOT compliant Manufacturer: DJI (Shenzhen, China)
Overview
DJI's compact enterprise platform. Available in Thermal (Mavic 3T) and Multispectral (Mavic 3M) variants. The go-to portable enterprise drone for inspection, search & rescue, and precision agriculture. Lightweight, foldable, excellent camera. The platform most fire departments and small agencies buy first.
Specs
| Spec | Value |
|---|---|
| Weight | ~920 g (Thermal) / ~951 g (Multispectral) |
| Flight Time | Up to 45 min |
| Cameras (3T) | 48MP wide, 12MP zoom (56x), 640×512 thermal |
| Cameras (3M) | 20MP RGB + 4-band multispectral (G/R/RE/NIR) |
| Video Tx | DJI O3 Enterprise, 15 km |
| RTK | Via D-RTK 2 or network RTK module |
| IP Rating | — |
| Controller | DJI RC Pro Enterprise |
Integration Notes
- DJI Pilot 2 for flight control
- MSDK for third-party app development
- DJI FlightHub 2 for fleet management
- Pairs with Agras T50 for variable-rate prescription spraying (3M variant)
- RTMP/RTSP live streaming capable
- No MAVLink
Gotchas
- NOT NDAA compliant.
- No payload swap — fixed sensor package per variant.
- Not as robust as M30T or M350 — smaller platform, less wind resistance.
- Widely deployed — good parts availability and support network.
Last updated: March 2026
DJI Mavic 4 Pro
Category: Commercial Off-the-Shelf (COTS) — Prosumer/Light Commercial NDAA Status: NOT compliant Manufacturer: DJI (Shenzhen, China)
Overview
DJI's latest prosumer platform. Hasselblad camera, omnidirectional sensing, DJI O4 transmission. Not an enterprise platform — no thermal, no payload swap — but widely used for real estate, light mapping, and cinematography.
Specs
| Spec | Value |
|---|---|
| Weight | ~900 g (sub-2 lb) |
| Camera | Hasselblad 1″ CMOS, 50MP, 4K/120fps |
| Max Flight Time | ~46 min |
| Video Tx | DJI O4, 2.4/5.8 GHz, 20 km range |
| Obstacle Sensing | Omnidirectional |
RF Links
DJI O4 transmission — 1080p/60fps at up to 20 km. Consumer-grade link. No SDK access for autonomous operations. No MAVLink. No third-party payload mount.
Gotchas
- Not NDAA compliant.
- Did not officially launch in the U.S. market — availability is complicated.
- No SDK for autonomous operations in the consumer product line.
- This is an imaging/video platform, not an integration platform. If you need to plug things into it, look elsewhere.
Last updated: March 2026
Flyability Elios 3
Category: Commercial / Industrial — Confined Space Inspection NDAA Status: Not listed (Swiss manufacturer) Manufacturer: Flyability (Lausanne, Switzerland)
Overview
The only collision-tolerant inspection drone in mass production. Designed for confined spaces — tanks, boilers, pressure vessels, tunnels, mines, ore passes. Protective carbon cage allows contact with walls and structures without crashing. LiDAR SLAM for GPS-denied navigation and 3D mapping. Unique reversing motors recover from upside-down flips.
Specs
| Spec | Value |
|---|---|
| Design | Quadcopter in protective carbon cage |
| Flight Time | Up to 12 min (standard), 17 min (high-capacity battery) |
| Camera | 4K visual, 180° unobstructed FOV |
| Thermal | Radiometric thermal camera |
| LiDAR | SLAM-based 3D mapping and stabilization |
| Lighting | 16k lumens, oblique dust-proof, adaptive |
| IP Rating | IP44 (designed, not certified) |
| Navigation | FlyAware™ — computer vision + LiDAR + NVIDIA GPU |
| Stabilization | SLAM-based, cm-accurate indoor positioning |
| Payloads (modular) | LiDAR surveying, UT (ultrasonic testing), radiation detection, gas sensing |
Autonomy
- FlyAware™: Real-time 3D map building, trajectory tracking, coverage assessment
- Smart Return-to-Home: Retraces path autonomously
- Return-to-Signal: Auto-returns on signal loss
- Collision tolerance: Recovers from impacts and flips — no other drone does this
Software
- Cockpit App: Real-time 3D view, trajectory, coverage assessment
- Inspector 4.0: Data processing, reporting on 3D model
- Compatible: Recap, CloudCompare, industrial 3D software
- Training: One-day onboarding program
Gotchas
- 12-minute flight time is limiting for large assets. High-capacity battery helps (17 min). Tether power unit eliminates limit entirely.
- Not for outdoor use — the cage creates drag, no GPS, limited speed (7 m/s max).
- Not NDAA listed — may be an issue for US federal confined-space inspection contracts.
- Environments must be cleaned and inerted before flying in explosive atmospheres — drone is NOT ATEX certified.
- $50K+ system cost — justified by the 90% cost reduction vs scaffolding/rope access, but significant upfront investment.
When to Use This Platform
If you need to inspect inside a boiler, tank, pressure vessel, mine shaft, or any confined space where sending a person is dangerous, expensive, or impossible. Nothing else does what the Elios 3 does. It replaced months of scaffolding work with 10-minute flights at LKAB's Kiruna mine.
Last updated: March 2026
Hylio AG-272
Category: Commercial / Industrial — Agriculture NDAA Status: NDAA compliant (designed and manufactured in USA) Manufacturer: Hylio, Inc. (Houston, TX) — Made in USA
Overview
American-made agricultural spray drone. 18-gallon capacity, 8-rotor configuration, up to 50 acres/hour at 2 GPA. NDAA-compliant GroundLink Controller. The largest and most capable US-made ag spray drone currently available. Designed for producers and applicators who need NDAA compliance or want to avoid Chinese supply chain dependencies.
Specs
| Spec | Value |
|---|---|
| Configuration | 8-rotor |
| Tank Capacity | 18.0 gal (68.2 L) |
| Swath Width | Up to 40 ft (12.2 m) |
| Coverage Rate | Up to 50 acres/hr @ 2 GPA |
| Max Spray Rate | 4.6 gal/min |
| Nozzles | TeeJet with electronic flowmeters |
| Batteries | 2x 42 Ah, 51.8V (2175.6 Wh) LiPo — 30 min charge |
| GPS | Dual GPS, RTK-compatible (base station sold separately) |
| Obstacle Avoidance | Multi-angle wide-angle radar (lateral, up, down) |
| FPV | 1080p HD video streaming |
| Controller | GroundLink: 13.3" Windows tablet + 2.4 GHz radio, NDAA compliant |
| Multi-Drone | Up to 3 UAS from single ground station |
| Software | AgroSol GCS (lifetime access, no recurring fees) |
| Waterproof | Yes |
| NDAA | Compliant — designed and manufactured in Houston, TX |
Also in the Hylio Family
| Model | Tank | Swath | Coverage | Notes |
|---|---|---|---|---|
| AG-210 | 2.6 gal (10 L) | — | Spot spray | Compact, swarm-capable |
| AG-216 | 4.5 gal | 25 ft | 27.5 ac/hr | 6-rotor, entry-level |
| AG-230 | 8.0 gal (2x4) | 35 ft | 50 ac/hr | Dual-tank |
| AG-272 | 18.0 gal | 40 ft | 50 ac/hr | Flagship |
Gotchas
- Requires Part 137 exemption — Hylio assists with onboarding (complimentary).
- RTK base station sold separately. Budget for it.
- 30-minute battery charge time is slower than DJI's 9-minute fast charge — need more battery sets for production rates.
- US-made means higher price point than Chinese alternatives (DJI, XAG).
- AgroSol software is functional but not as polished as DJI Agras app.
When to Use This Platform
When you need an American-made, NDAA-compliant ag spray drone. Only real option in the US market for federally-funded ag programs that require NDAA compliance. The AG-272 at 18 gal capacity competes with the DJI Agras T50 on throughput.
Last updated: March 2026
Quantum Systems Trinity Pro
Category: Commercial / Industrial — Fixed-Wing VTOL NDAA Status: NDAA compliant (German manufacturer, NATO-allied) Manufacturer: Quantum Systems (Munich, Germany)
Overview
Long-endurance fixed-wing VTOL drone built for large-scale mapping and ISR missions. Highly modular design with AI-ready onboard computing. Supports wide range of sensors and mission profiles. Used by military and commercial operators across NATO countries.
Specs
| Spec | Value |
|---|---|
| Type | Fixed-wing VTOL (tilt-rotor transition) |
| Flight Time | Up to 90 min |
| Cruise Speed | 17 m/s |
| Range | Up to 75 km |
| Payload | Modular sensor bay |
| Cameras | RGB, multispectral, thermal, EO/IR |
| Onboard Computing | AI-ready edge processing |
| GNSS | RTK/PPK |
| Wind Resistance | Up to 45 km/h |
Notes
Strong NATO/defense pedigree. Used in Ukraine conflict for ISR. Modular sensor bay allows mission-specific configuration. AI onboard processing enables real-time intelligence rather than post-flight analysis.
Last updated: March 2026
senseFly eBee X (AgEagle)
Category: Commercial / Industrial — Fixed-Wing Mapping NDAA Status: NDAA compliant (Swiss/US — AgEagle Aerial Systems) Manufacturer: senseFly (now part of AgEagle, Wichita, KS)
Overview
Professional fixed-wing mapping drone for survey, agriculture, and mining. Hand-launched, no runway needed. Up to 90-minute flight time. Swappable camera payloads (RGB, multispectral, thermal). eMotion flight planning software. Widely used in surveying, mining volumetrics, and precision agriculture.
Specs
| Spec | Value |
|---|---|
| Type | Fixed-wing, hand-launched |
| Wingspan | 116 cm |
| Weight | ~1.6 kg (with camera) |
| Flight Time | Up to 90 min |
| Cruise Speed | 40–110 km/h |
| Coverage | Up to 500 ha (1,235 acres) per flight |
| Wind Resistance | Up to 46 km/h |
| Cameras | senseFly S.O.D.A. (RGB), Aeria X (multispectral), thermalSODA |
| GNSS | RTK/PPK capable |
| GCS | eMotion software |
| Landing | Automated belly landing |
Gotchas
- Fixed-wing = no hover. Cannot stop and inspect a structure.
- Hand launch requires technique — not ideal for inexperienced operators.
- Belly landing means wear on the fuselage over time.
- AgEagle has had corporate instability — verify current support and parts availability.
- Competes with WingtraOne (VTOL, no hand launch) and DJI Matrice + L2 (multirotor with LiDAR).
Last updated: March 2026
XAG P100 Pro / P150
Category: Commercial / Industrial — Agriculture NDAA Status: NOT compliant (Chinese manufacturer) Manufacturer: XAG Co. (Guangzhou, China)
Overview
XAG's flagship agricultural drone family. The P100 Pro carries 50 kg payload with 60L spray tank, covering 70 acres/hour. The P150 steps up to 70L tank and 80 kg max payload (P150 Max). Modular hot-swap payload system: spraying, spreading, mapping, and cargo transport. Fully autonomous via XAG One App with RTK cm-level positioning. Biggest direct competitor to DJI Agras T50.
Specs — P100 Pro
| Spec | Value |
|---|---|
| Rated Payload | 50 kg (110 lb) |
| Spray Tank | 60 L (15.8 gal) |
| Max Flow Rate | 22 L/min (5.8 GPM) dual pump |
| Spray Width | Up to 10 m (33 ft) |
| Coverage | ~70 acres/hr @ 2 GPA |
| Droplet Size | 60–400 μm (centrifugal atomization) |
| Flight Speed | Up to 13.8 m/s |
| Spread Rate | 150 kg/min |
| Battery | B13960S, 962 Wh, 11-min water-cooled fast charge |
| IP Rating | IPX6K (flight platform), IPX7 (components) |
| RTK | Centimeter-level, integrated base station support |
| Obstacle Avoidance | 4D imaging radar, terrain-following radar |
Specs — P150 / P150 Max
| Spec | Value |
|---|---|
| Max Payload | 50 kg (P150) / 80 kg (P150 Max) |
| Spray Tank | 70 L (18.5 gal) / 80 L (P150 Max) |
| Max Flow Rate | 32 L/min (P150 Max with RevoSpray 5) |
| Coverage | 70+ acres/hr |
| Flight Speed | Up to 20 m/s (P150 Max) |
| Spread Rate | 150+ kg/min |
Software & Autonomy
- XAG One App: Fully autonomous flight planning, one-tap operation
- XAG SuperX 4 Pro: Intelligent flight control with AI algorithms
- RTK Network: Centimeter-level positioning, supports multiple simultaneous drones
- Multi-drone: Single operator can command multiple aircraft
- Mapping: 12MP camera with mechanical shutter for field survey/boundary detection
Gotchas
- NOT NDAA compliant. Chinese manufacturer — same procurement restrictions as DJI.
- Massive platform — requires truck/trailer infrastructure, generator for fast charging.
- Part 137 exemption required for commercial ag application in the US.
- XAG ecosystem is less mature in North America than DJI Agras — fewer dealers, less local support.
- Competes directly with DJI Agras T50 — DJI has better software integration, XAG has larger payload options.
Last updated: March 2026
Ascent Aerosystems (Coaxial Platforms)
Category: NDAA-Compliant / Blue UAS NDAA Status: NDAA compliant Manufacturer: Ascent Aerosystems (USA)
Overview
Unique coaxial drone design — two counter-rotating rotors on a single axis. Compact, robust, and high-performance. Designed for industrial, defense, and public safety markets. The coaxial design provides exceptional stability and efficiency in a smaller form factor than equivalent multirotor platforms.
Key Features
- Coaxial rotor design: Smaller footprint than traditional multirotors for equivalent lift
- Rugged construction: Built for demanding industrial and defense environments
- Modular payloads: Configurable for ISR, inspection, mapping
- NDAA compliant
- Compact deployment
Notes
Niche platform worth tracking for operators who need compact form factor with heavy-lift capability. Less mainstream than Skydio/Freefly/Inspired Flight but carving out a space in defense and industrial inspection.
Last updated: March 2026
Freefly Astro (Astro Max)
Category: NDAA-Compliant / Blue UAS NDAA Status: Blue UAS certified (NDAA-compliant build available) Manufacturer: Freefly Systems (Woodinville, WA) — Made in USA
Overview
American-made, open-architecture mapping and inspection drone built on PX4. Running Auterion Enterprise PX4 on a Skynode flight controller with triple-redundant IMUs. Blue UAS certified. Swappable payload via Smart Dovetail system. The Astro Max variant carries the 61MP Sony LR1 full-frame sensor. Over 100,000 commercial flights logged.
This is the open-source success story. PX4-based, MAVLink-native, with a real payload ecosystem and federal compliance.
Specs
| Spec | Value |
|---|---|
| Weight | ~2.3 kg (varies with payload) |
| Max Flight Time | 25 min with LR1 payload, 30 min with 2 lb payload |
| Payload Capacity | 2 lb (0.9 kg) |
| Flight Controller | Auterion Skynode (Pixhawk-class) |
| Firmware | Auterion Enterprise PX4 |
| IMU Redundancy | Triple-redundant |
| GNSS | Multi-band with RTK (NTRIP or base station) |
| Connectivity | LTE via AuterionOS, Doodle Labs RF link |
| Controller | Pilot Pro (ruggedized, hot-swap power) |
| Folded Size | ~390 × 178 mm — fits in a backpack |
| Batteries | Dual SL8-Air, 500+ cycle guarantee |
RF Links
Primary C2/Video
- Radio: Doodle Labs (NDAA compliant)
- Protocol: MAVLink v2 native
- Encryption: AES
Backhaul
- LTE: Via Auterion Skynode — cloud connectivity, OTA updates, fleet management
- Telemetry: SiK-compatible for development environments
Firmware & Software
- Firmware: Auterion Enterprise PX4 (open-source based, commercially supported)
- GCS: Auterion Mission Control (pre-installed)
- Compatible GCS: QGroundControl, UgCS, Esri SiteScan (validated)
- Other PX4 GCS: Works but not officially tested
- Fleet Management: AuterionOS provides predictive maintenance, geotagging, OTA updates
- Auterion SDK: For enterprise developers
This is a real PX4 platform. You get MAVLink. You get open parameters. You get QGC compatibility. But you also get commercial support, LTE connectivity, and fleet management that you won't get from a DIY Pixhawk build.
Payload Integration
Smart Dovetail System
Tool-less payload swap — slide on, lock, fly. Proprietary mechanical interface but open electrical/data bus.
Native Payloads
- Sony LR1: 61MP full-frame — the Astro Max flagship sensor
- Sony A7R IV: 60MP (previous gen)
- Various mapping payloads: Third-party sensors via Smart Dovetail adapter
- Thermal, LiDAR: Via adapter — check Freefly for current payload catalog
Gotchas
-
25-minute flight time is shorter than competitors. DJI M350 does 55 min. Inspired Flight IF1200A does 43 min. If endurance is critical, factor this in.
-
Smart Dovetail is proprietary. Third-party payloads need an adapter. Freefly's payload ecosystem is good but not as deep as DJI's gimbal lineup.
-
NDAA/Blue build ships with GPS logging disabled by default. You must enable it in settings before your first mapping mission or you'll get untagged imagery.
-
Freefly keeps some PX4 code closed — motor drives, autonomy, avoidance. The core flight stack is open, but not everything.
-
Dual SL8-Air batteries are proprietary. Guaranteed 500+ cycles, but no third-party alternatives exist.
-
Network RTK requires Auterion licence (~$1,200) for NTRIP caster access. Base-station RTK works with any multi-band GNSS base.
When to Use This Platform
The Freefly Astro is the right choice when you need: Blue UAS compliance + open MAVLink + real payload flexibility + commercial support. It's the platform that proves you don't have to choose between open-source and enterprise readiness.
Best for: precision mapping, photogrammetry, inspection, agriculture. Not ideal for: long-endurance surveillance (25 min limit), heavy-lift (2 lb max), or thermal-primary missions (need to add thermal as a payload).
Last updated: March 2026
Inspired Flight IF1200A
Category: NDAA-Compliant / Blue UAS NDAA Status: Blue UAS certified, NDAA compliant, Green UAS certified Manufacturer: Inspired Flight Technologies (San Luis Obispo, CA) — Made in USA
Overview
Heavy-lift hexacopter developed to U.S. Air Force standards. The workhorse of the NDAA-compliant drone world. Carries large payloads (LiDAR, EO/IR, Phase One cameras) with 43-minute endurance. Open payload interface. ArduPilot-based. SAFE motor-out redundancy keeps flying if a motor fails.
Specs
| Spec | Value |
|---|---|
| Configuration | Hexacopter (coaxial dual-prop) |
| Max Payload | 19.1 lb (8.66 kg) under Part 107; 28.7 lb with certification |
| Max Flight Time | 43 min (no payload) |
| Real-World with 8 lb Payload | 30+ min |
| Max Speed | 56 mph (25 m/s) |
| Wind Resistance | 29 knots |
| Batteries | 16000mAh intelligent batteries |
| GPS | Dual GPS units |
| FPV | Built-in FPV camera |
| Remote ID | Integrated |
RF Links
- C2/Video: Doodle Labs or similar NDAA-compliant radio
- GCS: GS-ONE ground control station (integrated controller + display)
- Protocol: MAVLink v2
- Telemetry: Standard MAVLink telemetry stream
Firmware & Software
- Firmware: ArduPilot-based
- GCS: Mission Planner, QGroundControl
- Flight Modes: Position Hold, Loiter, Auto, Return-to-Launch
- Open system architecture — configurable for specific missions
Payload Integration
Universal payload interface supports:
- EO/IR: FLIR, L3Harris
- LiDAR: Yellowscan, RIEGL, Velodyne
- Optical Imaging: Phase One, Sony
- Multispectral: Sentera 6X series
- Payload adapter guides available from Inspired Flight
Gotchas
- Heavy platform — not backpackable. This is a truck drone, not a backpack drone.
- Folding arms can be stiff after flight — thrust loads the locking mechanism. Support the arm bottom with upward force while sliding the lock.
- Requires Part 107 waiver if total weight (aircraft + payload) exceeds 55 lb.
- Batteries are proprietary.
- No integrated camera — payload must be purchased separately. Budget accordingly.
- SAFE motor-out capability is a lifesaver for expensive payloads but requires pilot awareness — land promptly when alerted.
When to Use This Platform
The IF1200A is the platform when you need to carry heavy sensors (LiDAR, Phase One, EO/IR) with NDAA/Blue UAS compliance. Nothing else in the Blue UAS ecosystem comes close on payload capacity. ArduPilot firmware means full MAVLink access and Mission Planner compatibility.
Last updated: March 2026
Parrot ANAFI USA
Category: NDAA-Compliant / Blue UAS NDAA Status: Blue UAS listed Manufacturer: Parrot (Paris, France) — NDAA Compliant
Overview
One of the lightest enterprise drones on the market at 500g. French-designed. Triple-sensor payload (32x zoom, wide, FLIR thermal). GOV and MIL variants. The MIL version adds a Microhard radio for extended comms. ISO9001 certified manufacturing.
Specs
| Spec | Value |
|---|---|
| Weight | 500g (GOV) / 1.16 kg (MIL with Microhard) |
| Max Flight Time | 32 min |
| Max Speed | 14.7 m/s (33 mph) |
| Cameras | 32x zoom (21MP), wide (48MP), FLIR Boson 320 thermal |
| Encryption | AES-XTS 256-bit |
| Video Output | RTSP via Ethernet from Skycontroller |
| Transmission | Wi-Fi 802.11 a/b/g/n (GOV); + Microhard radio (MIL) |
RF Links
- GOV version: Wi-Fi based control/video via Skycontroller
- MIL version: Adds Microhard radio for longer range and better RF penetration
- Video sharing: RTSP stream via Ethernet (RJ45) to VLC-equipped PC, or via FFmpeg
- Fly-by-coordinates: GPS coordinate display and sharing for any visible POI
Firmware & Software
- App: FreeFlight 6 Enterprise
- SDK: Open Flight SDK for developer integration
- No MAVLink
Gotchas
- Wi-Fi link on GOV version is range-limited and susceptible to interference in dense RF environments.
- Small thermal sensor — FLIR Boson 320 vs competitors at 640×512. Adequate for detection, not ideal for detailed thermal analysis.
- No payload swap. The integrated sensor package is all you get.
- Lightweight is a double-edged sword — extremely portable, but poor wind resistance.
- Parrot's enterprise support has historically been inconsistent compared to DJI/Autel/Skydio.
When to Use This Platform
Ultra-portable Blue UAS recon. When you need the smallest possible compliant drone with thermal capability. The MIL variant with Microhard is the more serious option for government work. Not a primary inspection or mapping platform.
Last updated: March 2026
Skydio X10 / X10D
Category: NDAA-Compliant / Blue UAS NDAA Status: X10 is NDAA compliant; X10D is Blue UAS listed Manufacturer: Skydio (San Mateo, CA) — Made in USA
Overview
Skydio's flagship AI-autonomous drone. The X10 is the commercial/public safety variant; the X10D is the defense variant with hardened comms, MAVLink support, and RAS-A compliance. Both feature six navigation cameras, NVIDIA Jetson Orin GPU, and the industry's most capable obstacle avoidance. Best-in-class autonomy. Built in the USA.
Specs
| Spec | Value |
|---|---|
| Weight | <4.7 lb (2.13 kg) |
| Max Flight Time | ~40 min |
| Max Speed | 45 mph (20 m/s) |
| Processors | NVIDIA Jetson Orin + Qualcomm QRB5165 |
| Nav Cameras | Six 32MP custom cameras (360° coverage) |
| Encryption | AES-256 |
| IP Rating | IP55 |
| GNSS | GPS, GLONASS, Galileo, BeiDou + ADS-B In receiver |
| Deployment | Folds to 13.8″, sub-40 second launch |
| Modular Payload | 4 attachment bays, 340g max |
Sensor Packages (choose at purchase)
| Package | Wide | Narrow | Thermal | Telephoto |
|---|---|---|---|---|
| VT300-L | 50MP 1″ f/1.95 | 64MP 1/1.7″ f/1.8 | FLIR Boson+ 640×512 | — |
| VT300-Z | 50MP 1″ f/1.95 | 64MP 1/1.7″ f/1.8 | FLIR Boson+ 640×512 | 48MP 190mm f/2.2 (128x zoom) |
| V100-L | 50MP 1″ f/1.95 | 64MP 1/1.7″ f/1.8 | — (LED flashlight) | — |
RF Links
X10 (Commercial)
- WiFi-based control/video link
- 5G/LTE unlimited range via Connect Fusion (optional)
- AES-256 encrypted
X10D (Defense)
- Dedicated defense comms (Doodle Labs Mesh Rider radio options)
- RAS-A v1.2 compliant
- Open MAVLink protocol for third-party GCS
- Multi-band operation
Both variants support Remote Ops for browser-based remote piloting from any location, and DFR Command for drone-as-first-responder workflows.
Firmware & Software
- Firmware: Proprietary Skydio Autonomy software
- X10 Controller: Skydio Flight Deck ONLY — no third-party controller support
- X10D: MAVLink support, QGroundControl compatible, third-party GCS
- SDKs:
- Cloud API — mission planning, fleet management, media sync
- Extend API — workflow integration (evidence management, inspection platforms)
- Mobile SDK — Android apps on controller
- Attachment ICD — custom payload mechanical/electrical specs
Autonomy
This is where Skydio leads the industry:
- GPS-denied navigation via visual-inertial odometry — flies in parking garages, under bridges, inside structures
- NightSense: Zero-light autonomous flight using visible or IR illumination (X10D)
- Subject Tracking (Shadow): Maintains lock on people/vehicles even through brief occlusions
- Scout: Autonomous overwatch mode
- Map Capture: 2D orthomosaic generation
- Onboard 3D Modeling: Low-res 3D preview on-device for field decisions
- Anchor Points: GPS-denied return-to-home via visual reference placement
- Crosshair Coordinates: Identify POI coordinates from air
Attachments
- Parachute — safety fallback for operations over people
- NightSense Visible/IR Light — zero-light autonomous flight
- Spotlight — nighttime visibility
- Speaker — communicate in high-risk situations
- RTK/PPK — precision mapping
- Dropper (planned) — payload release
- Connect Fusion+ (coming) — second cellular connection
Gotchas
-
X10 (commercial) is locked to Skydio software. No MAVLink, no QGC, no Mission Planner. If you need open protocol access, you need the X10D — which costs more and requires government/defense procurement.
-
Attachment bays limited to 340g total. No heavy payloads. This is not a mapping drone with a LiDAR rig.
-
No swappable primary sensor. You pick VT300-L, VT300-Z, or V100-L at purchase. Want a different sensor package? Buy another drone.
-
LTE connectivity requires active cellular plan. Remote Ops is browser-based but needs internet on both ends.
-
Thermal on VT300-L/Z is FLIR Boson+ 640×512 — excellent sensitivity (<30mK) but verify radiometric measurement support on your firmware version.
-
10x more computing power than previous gen means higher power draw — the 40-minute flight time reflects this.
When to Use This Platform
Best autonomous flight in the industry, period. If your mission requires flying in GPS-denied environments, around obstacles, at night, or with minimal pilot training, Skydio X10 is the answer. The X10D is the only Blue UAS platform with this level of autonomy.
Not the right platform for heavy-lift mapping, LiDAR, or custom payload integration. For that, look at Freefly Astro or Inspired Flight IF1200A.
Last updated: March 2026
Teal 2
Category: NDAA-Compliant / Blue UAS NDAA Status: Blue UAS certified (added June 2023) Manufacturer: Teal Drones / Red Cat Holdings (Salt Lake City, UT) — Made in USA
Overview
Compact, rucksack-portable ISR drone optimized for night operations. "Dominate the Night." FLIR Hadron 640R EO/IR payload delivers exceptional thermal imaging in a Group 1 package. Used by DoD, law enforcement, and public safety.
Specs
| Spec | Value |
|---|---|
| Weight | 2.75 lb (1.25 kg) takeoff |
| Max Flight Time | 30+ min |
| Max Speed | 23 mph (10 m/s) cruise |
| Service Ceiling | 10,000 ft MSL |
| Operating Temp | -35°C to 43°C (-32°F to 110°F) |
| Encryption | AES-256 (command, control, video) |
| Design | Modular — field-replaceable payload, propulsion, battery |
Sensors
| Sensor | Spec |
|---|---|
| Thermal | FLIR Hadron 640R: 640×512, radiometric, <30mK sensitivity |
| EO | 16MP visible-light camera |
RF Links
- Standard: 2.4 GHz ISM band, AES-256 encrypted, ~5 km range
- Controller: TAC (Teal Air Controller) — ruggedized GCS with built-in display
- Multiband variant available
- Black Widow (SRR Tranche 2): Doodle Labs Helix Mesh Rider Radio with Sense Technology for anti-jamming and low probability of intercept
Gotchas
- Small payload capacity — this is an ISR scout, not a mapping or inspection platform.
- No swappable primary sensor beyond the Hadron EO/IR.
- Near-silent propulsion is a tactical advantage but limits max speed and wind resistance.
- Multi-vehicle command supported from single TAC.
When to Use This Platform
Night ISR, close-range reconnaissance, public safety overwatch. The Hadron 640R thermal is excellent for its size class. If you need a Blue UAS drone that fits in a rucksack and dominates in low-light conditions, this is the one.
Last updated: March 2026
WingtraOne GEN II / WingtraRAY
Category: NDAA-Compliant / Blue UAS — Fixed-Wing VTOL Mapping NDAA Status: Blue UAS listed, Green UAS certified Manufacturer: Wingtra (Zurich, Switzerland)
Overview
Professional fixed-wing VTOL mapping drone. Vertical takeoff, fixed-wing cruise at 16 m/s for up to 59 minutes. PPK GNSS for cm-level accuracy without ground control points. Swappable sensors (61MP RGB, 42MP full-frame, multispectral, LiDAR). Over 100,000 flights worldwide. The WingtraRAY (2025) successor covers up to 1,300 acres in one hour-long flight.
Specs — WingtraOne GEN II
| Spec | Value |
|---|---|
| Type | Fixed-wing VTOL (tail-sitter) |
| Flight Time | Up to 59 min |
| Cruise Speed | 16 m/s (36 mph) |
| Payload | Up to 800 g |
| Wind Resistance | 12 m/s sustained, 18 m/s gusts |
| GNSS | Multi-band PPK, 1–3 cm absolute accuracy |
| Coverage | Up to 200 hectares (494 acres) per flight @ 120 m AGL |
| NDAA / Blue UAS | Blue UAS listed, Green UAS |
| Cameras | Sony A7R IV (61MP), Sony RX1R II (42MP), MicaSense RedEdge-P |
| Controller | Rugged Samsung Galaxy Tab Active 3 |
| GCS Software | WingtraPilot |
Specs — WingtraRAY (2025+)
| Spec | Value |
|---|---|
| Coverage | Up to 1,300 acres (~550 ha) per 1-hour flight |
| Capture Speed | ~10x faster than multicopters, ~30x faster than terrestrial |
| Accuracy | 1–3 cm absolute without GCPs |
| Payload Bay | Hot-swap, 6 dedicated payloads (RGB, oblique, LiDAR, multispectral) |
| Turnaround | Under 5 min between flights |
| NDAA / Blue UAS | Blue UAS listed |
Integration Notes
- Processing: Compatible with Pix4D, Metashape, Propeller, DroneDeploy, WingtraCLOUD
- Exports: Civil 3D, TBC, ArcGIS
- No MAVLink — proprietary autopilot
- Airline carry-on compliant batteries (~525 g each vs ~4.7 kg for DJI M400 batteries)
Gotchas
- Fixed-wing means no hover capability during mission. Can't stop and inspect a point.
- Requires open launch/landing area — tail-sitter VTOL needs clear space.
- Not for inspection or close-proximity work — this is a mapping/survey platform only.
- Proprietary autopilot — no MAVLink, no QGC, no Mission Planner.
- Wind limits on ground (8 m/s for launch/land) are lower than in-flight limits.
Last updated: March 2026
Custom ArduPilot / PX4 Builds — General Integration Reference
Category: Open-Source / Custom Build Firmware: ArduPilot or PX4 (open source) Protocol: MAVLink v2
Overview
Any drone built on ArduPilot or PX4 firmware running Pixhawk-compatible hardware. This covers hundreds of commercial products (Freefly Astro, Inspired Flight IF1200, Watts Innovations Prism, Harris Aerial H6, CubePilot-based builds) and thousands of custom builds. The open-source ecosystem is the backbone of non-DJI drone integration.
Common Flight Controllers
| Controller | Processor | IMUs | Notes |
|---|---|---|---|
| Pixhawk 6X / 6X Pro (Holybro) | STM32H753 | 3x | Triple redundant, Ethernet, top tier |
| CubePilot Cube Orange+ | STM32H757 | 3x | Vibration-isolated, carrier board ecosystem |
| Matek H743 | STM32H743 | 2x | Compact, affordable, iNav/ArduPilot |
| SpeedyBee F405 | STM32F405 | 1x | Budget ArduPilot FC, smaller builds |
| ARK Electronics FMU | — | — | Blue UAS Framework listed, NDAA compliant |
| Auterion Skynode S | — | 3x | Blue UAS Framework, commercial PX4 |
Key Integration Points
All ArduPilot/PX4 platforms share:
- MAVLink v2 as the telemetry protocol
- UART-based peripheral connections (GPS, telemetry, RC, rangefinder)
- PWM/DShot motor outputs
- I2C/SPI sensor buses
- USB for configuration and companion computer
- SD card for logging and parameter storage
The handbook's chapters on UART layout (Ch 8), MAVLink (Ch 7), MSP (Ch 6), and companion computers (Ch 13) are written specifically for this ecosystem.
Telemetry Radio Options
| Radio | Band | Bandwidth | Range | Notes |
|---|---|---|---|---|
| SiK (3DR-style) | 915/433 MHz | ~64 kbps | 1–2 km | Simple, cheap, point-to-point |
| RFD900x | 900 MHz | Higher | 5–40 km | Configurable, long range |
| Doodle Labs Mesh Rider | Multi-band | High | 5–15 km | Mesh, EW-resistant, Blue UAS |
| Microhard P900 | 900 MHz | High | 10+ km | Robust, industrial |
| Herelink | 2.4 GHz | Integrated | 5–20 km | Video + telemetry + RC, Android GCS |
Ground Control Stations
| GCS | Primary Firmware | Platform | Notes |
|---|---|---|---|
| Mission Planner | ArduPilot | Windows | Full-featured, parameter management |
| QGroundControl | PX4 (+ ArduPilot) | Cross-platform | Clean UI, PX4 default |
| Auterion Mission Control | PX4 (Auterion) | Skynode | Enterprise, fleet management |
| UgCS | Both | Desktop | Professional mission planning, 3D |
| MAVProxy | Both | CLI | Lightweight, scriptable |
Common Commercial Platforms Using ArduPilot/PX4
- Freefly Astro: PX4 (Auterion), Blue UAS, mapping/inspection
- Inspired Flight IF1200/IF800: ArduPilot, Blue UAS, heavy-lift
- Watts Innovations Prism: Multi-payload, industrial
- Harris Aerial H6: Heavy-lift surveying/mapping
- Aurelia Drones: Industrial-grade, high payload
- CubePilot-based custom builds: Anything you can imagine
The ArduPilot vs PX4 Decision
| Factor | ArduPilot | PX4 |
|---|---|---|
| Vehicle Support | Widest (copter, plane, heli, rover, sub, boat) | Broad (copter, plane, VTOL) |
| Community | Larger, more hobbyist/operator focus | Smaller, more developer/research focus |
| Documentation | Extensive, community-driven | Good, structured |
| Commercial Use | Widespread (IF1200, many custom builds) | Freefly Astro, Auterion ecosystem |
| Licensing | GPL v3 (copyleft) | BSD (permissive) |
| Default GCS | Mission Planner | QGroundControl |
| Configuration | More parameters, more flexibility, steeper curve | Modular, cleaner architecture |
Both speak MAVLink. Both run on Pixhawk. Both work. Pick based on your ecosystem and support needs.
Integration Tips for Custom Builds
- Map your UARTs before you build. See Chapter 8. You will run out.
- Separate RC and video bands. 2.4 GHz RC + 5.8 GHz video, or 900 MHz RC + 5.8 GHz video. Never both on 2.4 GHz.
- CRSF protocol at 420000 baud for ELRS/Crossfire RC links. Not 115200.
- MAVLink stream rates matter. Too high floods the telemetry link. Start with SR0_POSITION=2, SR0_EXTRA1=4.
- Test failsafe before you need it. Every firmware handles it differently. Know yours.
- Blackbox logging is your post-flight truth. See Chapter 10.
- PID tune in the field, not in simulation. See Chapter 11.
Last updated: March 2026
Holybro X500 V2 + Pixhawk 6X (PX4 Dev Kit)
Category: Open-Source / Custom Build NDAA Status: NOT compliant (Chinese-sourced components) Manufacturer: Holybro (Shenzhen, China)
Overview
The reference development platform for PX4 and ArduPilot. Carbon fiber frame with no-solder assembly. Ships with Pixhawk 6X (or 6C), M10 GPS, and SiK telemetry radio. Mounts for Raspberry Pi, Jetson Nano, and Intel RealSense depth cameras.
If you want to understand every layer of the drone integration stack, this is where you start. Every UART is documented. Every protocol is open. Every parameter is tunable. The handbook's chapters on UART layout, MAVLink, PID tuning, and companion computers were written with platforms like this in mind.
Specs
| Spec | Value |
|---|---|
| Frame | Carbon fiber twill, 500mm class |
| Flight Controller | Pixhawk 6X (STM32H753 H7, triple IMU, Ethernet) or Pixhawk 6C |
| Firmware | PX4 (ships default) / ArduPilot compatible |
| GPS | Holybro M10 (requires PX4 1.14+ / ArduPilot 4.3+) |
| Telemetry | SiK radio (915 MHz or 433 MHz), plug-and-play |
| Flight Time | ~18 min hover (no payload, 5000mAh 4S) |
| Payload Capacity | ~1.5 kg (at 70% throttle) |
| Companion Mount | RPi 4, Jetson Nano, Intel RealSense |
| Assembly Time | ~30 min, no soldering |
RF Links
Link 1 — RC Control
Add your own. Any standard RC receiver via UART: - ELRS 2.4 GHz or 900 MHz (CRSF protocol, UART, 420000 baud) - TBS Crossfire (CRSF) - FrSky (SBUS) - FlySky (IBUS)
Link 2 — Telemetry
- SiK radio: 915 MHz (Americas) or 433 MHz (EU/Asia), MAVLink, ~64 kbps, point-to-point
- Connects to Mission Planner or QGroundControl on ground station
Link 3 — Video
Add your own: - Analog 5.8 GHz VTX - DJI O3 Air Unit / HDZero (for FPV) - IP camera via companion computer (RPi + camera module) - No integrated video link — build-your-own
Firmware & Software
- PX4 or ArduPilot — both fully open source
- GCS: QGroundControl (PX4 default) or Mission Planner (ArduPilot default)
- Protocol: MAVLink v2 — full parameter access, mission upload, telemetry streaming
- Simulation: PX4 SITL for testing before flight
- Pixhawk 6X Ethernet interface for high-speed companion computer integration
Pixhawk 6X Flight Controller Details
| Feature | Spec |
|---|---|
| Processor | STM32H753 (Arm Cortex-M7 @ 480 MHz) |
| Flash / RAM | 2MB / 1MB |
| IMUs | 3x (triple redundant, isolated sensor domains) |
| Barometers | 2x |
| Interfaces | Multiple UART, I2C, SPI, CAN, ADC, Ethernet |
| Vibration Isolation | Custom-formulated durable material |
| Temperature Control | On-board heating for IMU temp stability |
| Connector Standard | Pixhawk Autopilot Bus (100-pin + 50-pin) |
| Debug | Pixhawk Debug Full (JST SM10B) |
Companion Computer Integration
The X500 V2 has mounting holes and platform board space for:
- Raspberry Pi 4: Standard mount, USB connection to Pixhawk
- NVIDIA Jetson Nano: Direct mount on platform board
- Intel RealSense: Depth camera mount on rail system (D435, T265)
- Pixhawk 6X Ethernet: High-speed connection for data-intensive applications
Communication: MAVLink via serial UART or USB. MAVSDK / DroneKit for programmatic control.
Gotchas
- 18-minute flight time is short. Bigger batteries help but add weight. Budget for multiple batteries.
- No obstacle avoidance out of the box. Add Intel RealSense + PX4 avoidance module if needed.
- No weatherproofing. This is a fair-weather development platform.
- SiK radios are low-bandwidth (~64 kbps). Fine for MAVLink telemetry, not for video.
- Pixhawk 6X PM02D-HV power module requires firmware setting (
SENS_EN_INA228) and ArduPilot 4.4+. - M10 GPS needs PX4 1.14+ or ArduPilot 4.3+. Older firmware won't see it.
- Chinese-sourced components — not NDAA compliant. For federal work, look at ARK Electronics FC + U.S.-sourced components.
Why This Platform Matters
This is the teaching platform. Every concept in the handbook — the five link types, UART allocation, MAVLink telemetry, PID tuning, companion computers, mesh radios — can be implemented, tested, and understood on an X500. It's not the best at anything, but it teaches you everything.
Last updated: March 2026
Anduril Ghost X
Category: Tactical / Defense NDAA Status: Blue UAS listed Manufacturer: Anduril Industries (Costa Mesa, CA) — Made in USA Availability: Military/government procurement only
Overview
Anduril's medium-range reconnaissance drone designed for company-level military operations. Helicopter-type design (main + tail rotor) for superior endurance and payload compared to typical quadcopters. Controlled through Anduril's Lattice AI software. Combat-proven in Ukraine. Deployed at JPMRC Hawaii, Combined Resolve Germany, and Balikatan Philippines.
Specs
| Spec | Value |
|---|---|
| Design | Helicopter-type (main + tail rotor), Group 2 (<55 lb) |
| Endurance | 80–90 min |
| Range | ~15 miles (24 km) |
| Payload Capacity | ~11 kg (24 lb) |
| Deployment | Two-person team, fits in rifle case, minutes to assemble |
| Software | Anduril Lattice AI autonomy platform |
Payload Options
Modular mission kits: - EO/IR sensors (day/night imagery) - Laser designators - Communications relay modules - Other mission-specific payloads
Software — Lattice
Lattice automates mission planning, airspace deconfliction, and flight profiles. Integrates with broader C2 ecosystem for sensor-to-shooter workflows (e.g., HIMARS cueing). Reduces operator workload and training time.
Gotchas
- Military/government procurement only — not available for commercial purchase.
- Lattice is proprietary — no MAVLink, no open protocol access.
- Helicopter design provides endurance but is mechanically more complex than multirotor.
- Requires Anduril training and support pipeline.
- Combat-deployed in Ukraine since 2022 — real-world validation, but also means adversaries have had time to study it.
Last updated: March 2026
Hoverfly LiveSky / Spectre
Category: Tactical / Industrial — Tethered UAS NDAA Status: Blue UAS listed (Spectre), Green UAS listed Manufacturer: Hoverfly Technologies (Orlando, FL) — Made in USA
Overview
Tethered drone systems for persistent surveillance, communications relay, and overwatch. Powered via tether cable — unlimited flight time as long as ground power is available. No battery constraints. Blue UAS and Green UAS certified. Used by military, law enforcement, and critical infrastructure protection.
Key Features
- Unlimited flight time (tethered power)
- Persistent ISR: EO/IR payload for continuous overwatch
- Communications relay: Extend comms range by elevating radio/antenna
- Blue UAS (Spectre): ATO from 2025 Blue UAS Challenge
- Weather resistant
- Rapid deployment
Gotchas
- Tethered = limited mobility. Drone stays within cable radius of ground station.
- Ground station required — not as portable as free-flying drones.
- Cable management is a real operational concern in field conditions.
- Best for persistent overwatch, events security, and fixed-site protection — not for search/recon over large areas.
Last updated: March 2026
ModalAI Seeker / Stinger
Category: Tactical / Defense — Autonomous FPV NDAA Status: Blue UAS Framework (16 components listed — most of any manufacturer) Manufacturer: ModalAI (San Diego, CA, USA — spun out of Qualcomm 2018)
Overview
ModalAI produces the most Blue UAS Framework components of any single manufacturer (16 listings). Their VOXL 2 compute platform is the reference companion computer for PX4-based autonomous drones. The Seeker and Stinger are ModalAI's own FPV/autonomous drone platforms built on this ecosystem.
ModalAI placed in the top 5 of DDG Phase I (~77–80 points).
Platforms
Seeker — Vision-Guided FPV
- GPS-denied capable via VOXL 2 visual-inertial odometry
- Onboard AI for target detection and tracking
- Autonomous terminal guidance option
Stinger — Strike FPV
- Strike-optimized variant
- Low-cost, expendable architecture
- Designed for contested RF environments
VOXL 2 Compute Platform
| Spec | Value |
|---|---|
| Processor | Qualcomm QRB5165 (8-core, 2.84 GHz) |
| AI Performance | 15 TOPS (GPU + DSP) |
| Camera Inputs | 7× MIPI CSI-2 |
| Weight | ~16 g (module only) |
| Software | PX4, ROS 2, VOXL SDK |
| Blue UAS | Framework component |
VOXL 2 runs PX4 natively, making it the most direct integration target for any PX4-based AI Wingman deployment.
Notes
ModalAI is the most interesting integration partner for the AI Wingman PX4 architecture. They run PX4 natively on VOXL 2, which maps directly to the existing PX4 Integration Architecture doc. Their visual-inertial odometry stack is production-ready for GPS-denied operations.
Last updated: March 2026
Neros Archer
Category: Tactical / Defense — FPV NDAA Status: Blue UAS listed (ATO from 2025 Blue UAS Challenge) Manufacturer: Neros Technologies (Los Angeles, CA) — Made in USA
Overview
High-performance, American-made FPV drone. Blue UAS certified. Designed for long-range missions, battlefield-proven, cost-effective for large-scale deployment. Optimized to resist electronic warfare. One of the first FPV platforms to receive Blue UAS listing.
Specs
| Spec | Value |
|---|---|
| Type | FPV (First-Person View) |
| Speed | Up to 160 km/h |
| Blue UAS | Yes — ATO from 2025 29 Palms Challenge |
| NDAA | Compliant |
| EW Resistance | Optimized for contested RF environments |
| Manufacturing | Designed and manufactured in Los Angeles, CA |
Notes
The Blue UAS listing for FPV platforms was a first in the 2025 challenge cycle. The Neros Archer represents the DoD's recognition that FPV capabilities are critical for modern warfare (lessons from Ukraine). Detailed integration specs are restricted.
Last updated: March 2026
Orqa MRM1-5
Category: Tactical / 5-Inch Multi-Role Trainer NDAA Status: NDAA §848 + §889 + Berry Act compliant Manufacturer: Orqa d.o.o. — Osijek, Croatia (EU) Availability: Commercial / defense procurement — orqafpv.com
Overview
The MRM1-5 is Orqa's 5-inch multi-role platform — the training workhorse of the MRM fleet and the cost-effective entry point to the full Orqa tactical ecosystem. Airframe is reinforced with four carbon fiber braces for crash survivability during intensive training cycles.
Available in two radio variants: ISM (Ghost 2.4 GHz) for standard operations, and a licensed-band variant (IRONghost) for more demanding RF environments.
Operators who train on the MRM1-5 with Tac.Ctrl build direct muscle memory that transfers to the MRM2-10 — same controller, same GCS, same MAVLink/ATAK workflow. This cross-platform proficiency is intentional: the MRM1-5 is designed to feed the larger MRM2-10 pipeline, not replace it.
Specs
| Spec | Value |
|---|---|
| Prop Size | 5 inch |
| Motors | 2408, 2200 kV (Orqa-designed) |
| Flight Controller | F405 30×30 (Orqa 3030) |
| ESC | 4-in-1, 60A, AM32 firmware |
| Camera | Orqa Justice Analog (1200 TVL, switchable 4:3/16:9) |
| C2 Link — ISM variant | Ghost 2.4 GHz (ImmersionRC/Orqa, LoRa/FLRC) |
| C2 Link — licensed variant | IRONghost (licensed bands) |
| Video | 5.8 GHz analog |
| GPS | Integrated |
| Payload Capacity | 1.0 kg |
| Range (unloaded) | ~15 km |
| Range (with payload) | ~7 km |
| Max Speed | 130 km/h |
| Speed (with payload) | ~60 km/h |
| Flight Time (unloaded) | ~15 min |
| Flight Time (loaded) | ~10 min |
| Weight — ISM variant | 562 g (without battery) |
| Weight — licensed variant | 590 g (without battery) |
| Battery (included) | P50B 4S1P Li-ion, 321 g |
| Battery (recommended) | P50B 4S2P Li-ion |
| Firmware | Betaflight / ArduPilot / iNav |
Ground System
| Component | ISM Variant | Licensed variant |
|---|---|---|
| Controller | FPV.Ctrl or any 2.4 GHz RC | Tac.Ctrl |
| GCS Software | — | Orqa GCS-1 |
| C2 Protocol | MAVLink | MAVLink |
| ATAK Integration | Yes | Yes |
Roles
| Role | Notes |
|---|---|
| Pilot training | Primary role — crash-survivable 5-inch for high-cycle training |
| MRM2-10 pipeline | Tac.Ctrl + GCS-1 proficiency transfers directly |
| Payload delivery | 1 kg / 7 km |
ISM vs Licensed Variant Selection
Choose ISM when: - Training in standard environments - Budget is a constraint - Operating with mixed RC/FPV infrastructure
Choose licensed-band variant when: - Tac.Ctrl + GCS-1 workflow proficiency is the training objective - RF environment requires licensed-band operation
Gotchas
- Licensed variant requires Tac.Ctrl — the standard FPV.Ctrl does not drive IRONghost. Factor controller cost into per-seat training budget.
- ISM variant uses Ghost 2.4 GHz — GHST protocol (ImmersionRC/Orqa), not ELRS. Confirm receiver compatibility if integrating into non-Orqa ground equipment.
- 4S battery, not 6S — unlike the MRM2-10. Separate battery logistics if running mixed MRM fleet.
- Not Blue UAS listed — NDAA compliant but not on the DoD approved list.
- High attrition expected in training — reinforced carbon braces help but budget for airframe replacement at scale.
Last updated: March 2026 | Source: orqafpv.com, Helicomicro, Flying Eye
Orqa MRM2-10
Category: Tactical / Multi-Role FPV NDAA Status: NDAA §848 + §889 + Berry Act compliant Manufacturer: Orqa d.o.o. — Osijek, Croatia (EU) Availability: Commercial / defense procurement — orqafpv.com
Overview
Orqa's flagship 10-inch tactical FPV platform and their most widely fielded system globally. Often referred to simply as "MRM" or "MRM10" by operators. Built around full vertical integration — every component from the flight controller to the motors to the radio is Orqa-designed and EU-manufactured, with no Chinese parts in the BOM.
Orqa acquired ImmersionRC in 2023, consolidating the Ghost radio ecosystem in-house. The MRM2-10 is the centerpiece of the resulting vertically integrated ecosystem: Orqa frame, Orqa FC, Orqa ESC, Orqa motors, IRONghost radio (Orqa), Justice camera (Orqa), Tac.Ctrl ground controller (Orqa), GCS-1 ground station (Orqa).
Specs
| Spec | Value |
|---|---|
| Prop Size | 10 inch |
| Wheelbase | 465 mm |
| Motors | 2814-class, 880 kV (Orqa-designed) |
| Flight Controller | H7 QuadCore — STM32H743, ICM42688P |
| ESC | 30×30, 70A, AM32 firmware |
| Camera | Orqa Justice Analog (1200 TVL, switchable 4:3/16:9, low-light) |
| C2 Link | IRONghost (licensed bands) |
| Video | 5.8 GHz analog |
| GPS | Integrated (compass + barometric altimeter) |
| Payload Capacity | 2.5 kg standard / 3.5 kg max |
| Range | ~20 km |
| Cruise Speed | ~70 km/h |
| Battery | 6S4P Li-ion (~16,000 mAh), XT90 + 2× XT60 parallel |
| Firmware | Betaflight, ArduPilot, iNav, PX4 |
| Frame Material | Carbon fiber body and arms |
Ground System
| Component | Details |
|---|---|
| Controller | Orqa Tac.Ctrl |
| Ground Station | IRONghost QS (mast-mountable, CAT5 connection) + IRONghost GS video receiver |
| GCS Software | Orqa GCS-1 |
| C2 Protocol | MAVLink |
| ATAK Integration | Yes — via Tac.Ctrl |
| Operator Stand-off | Up to 1 km (IRONghost QS mast configuration) |
Supply Chain & Compliance
Orqa manufactures all core components in-house at their Osijek, Croatia facility: flight controllers, ESCs, motors, PCBs, cameras, and radios. Zero Chinese-sourced parts. Full vertical integration provides supply chain security and eliminates third-party dependency risks.
Note (2025): A DoD procurement halt was reported after a radio module subcomponent was found to be Chinese-sourced. Orqa CEO confirmed manufacturing of that module was moved in-house. NDAA compliance status should be independently verified for current contracts.
Production & Scale
| Metric | Value |
|---|---|
| Annual capacity | 280,000 drones (Osijek facility, as of late 2025) |
| Roadmap | Up to 1M/year via decentralized partner manufacturing |
| Partner network | Licensing agreements with multiple NATO-country partners |
| Croatia army contract | ~€10M order |
| Firestorm partnership | 3D-printable Orqa design under Firestorm Squall brand (Feb 2026) |
Funding & Industry
| Event | Detail |
|---|---|
| $5.8M Series A | Lightspeed Venture Partners, 2024 |
| EU SAFE | ~€100M procurement mechanism |
| Baykar partnership | Integration with Bayraktar TB2 |
| DOK-ING partnership | Manned-unmanned teaming (MUM-T) |
Gotchas
- IRONghost requires licensed spectrum — not ISM. Coordinate with your RF authority before deployment.
- Tac.Ctrl is required for IRONghost — the standard FPV.Ctrl does not drive IRONghost.
- DoD NDAA cloud (2025) — a subcomponent issue caused a procurement pause. Verify current compliance status with Orqa before contracting.
- No DJI ecosystem — fully closed Orqa stack. Ghost/IRONghost receiver protocol (GHST) only.
- Proprietary GCS — Orqa GCS-1 is MAVLink-compatible but the physical ground station hardware is Orqa-only.
- MRM2-10F (foldable) also available — if rapid deployment / backpack carriage matters, evaluate the -F variant.
Last updated: March 2026 | Source: orqafpv.com, WNK Store, Tectonic Defense
Orqa MRM2-10F
Category: Tactical / Multi-Role FPV (Foldable) NDAA Status: NDAA §848 + §889 + Berry Act compliant Manufacturer: Orqa d.o.o. — Osijek, Croatia (EU) Availability: Commercial / defense procurement — orqafpv.com
Overview
The MRM2-10F is the rapid-deployment foldable variant of the MRM2-10. Click-lock folding arms collapse the airframe to backpack size, then snap back to flight-ready in under 10 seconds — no tools, no adjustments. Same IRONghost C2 link, same 2.5 kg payload capacity, same 20 km range as the fixed-frame MRM2-10. The two share the same ground system (Tac.Ctrl + IRONghost QS + GCS-1).
Best suited to dismounted teams where platform carriage, concealment, or rapid redeployment between positions is a requirement.
Specs
| Spec | Value |
|---|---|
| Prop Size | 10 inch |
| Fold Mechanism | Click-lock folding arms |
| Deployment Time | ~10 seconds hand-deployable |
| C2 Link | IRONghost (licensed bands) |
| Video | 5.8 GHz analog |
| GPS | Integrated |
| Payload Capacity | 2.5 kg |
| Range | ~20 km |
| Cruise Speed | ~70 km/h |
| Battery | 6S4P Li-ion (~16,000 mAh) |
| Firmware | Betaflight v4.1 / ArduPilot / iNav |
| Frame Material | Carbon fiber (folding arms) |
| NDAA / 889 / Berry | Compliant |
Full avionics stack identical to MRM2-10 (H7 QuadCore FC, 70A ESC, Justice camera, IRONghost radio).
Ground System
| Component | Details |
|---|---|
| Controller | Orqa Tac.Ctrl |
| Ground Station | IRONghost QS + IRONghost GS |
| GCS Software | Orqa GCS-1 |
| C2 Protocol | MAVLink |
| ATAK Integration | Yes |
MRM2-10 vs MRM2-10F
| Feature | MRM2-10 | MRM2-10F |
|---|---|---|
| Arms | Fixed | Click-lock fold |
| Deploy time | Pre-configured | ~10 sec |
| Pack size | Larger | Backpack-compatible |
| Rigidity | Higher (fixed) | Slightly lower (fold joints) |
| Payload / Range | 2.5 kg / 20 km | 2.5 kg / 20 km |
| Avionics | Identical | Identical |
Gotchas
- Fold joint longevity — click-lock hinges accumulate wear with high training cycles. Inspect and replace per Orqa maintenance schedule.
- Same ground system as MRM2-10 — Tac.Ctrl and GCS-1 hardware is interchangeable between variants.
- IRONghost requires licensed spectrum — same coordination requirement as MRM2-10.
- Not Blue UAS listed — EU-manufactured NDAA-compliant platform. Not on the DoD Blue UAS approved list.
Last updated: March 2026 | Source: orqafpv.com, WNK Store
Red Cat FANG F7
Category: Tactical / Defense — FPV NDAA Status: NDAA compliant Manufacturer: Red Cat Holdings / Teal Drones (Salt Lake City, UT, USA)
Overview
The FANG (Fierce, Agile, Nimble, Guerrilla) F7 is Red Cat's entry into the tactical FPV strike market. Built with NDAA-compliant components including UMAC (Unusual Machines) American-made motors. Red Cat is also the manufacturer of the Teal 2 (ISR) and Teal Black Widow (Army SRR Program of Record).
Specs
| Spec | Value |
|---|---|
| Frame Size | 7" class |
| Flight Controller | BrainFPV RADIX2 (F7 processor, BMI270 IMU) |
| Motors | UMAC 2807 (28×7mm stator, N552SH magnets, 3-8S) |
| Battery | 3-8S LiPo |
| NDAA | Compliant |
| Manufacturing | USA (Orlando, FL — UMAC components) |
Red Cat Portfolio
| Product | Role |
|---|---|
| Teal 2 | Night ISR, FLIR Hadron 640R thermal |
| Black Widow | Army SRR Tranche 2 Program of Record |
| FANG F7 | FPV strike platform |
Notes
Red Cat/Teal did not place in the top 11 of DDG Phase I despite holding the Army SRR Program of Record. The FANG F7 represents their pivot toward the strike/FPV market. UMAC's American-made motor facility (50,000+ motors/month capacity in Orlando, FL) is a key Blue UAS Framework component.
Last updated: March 2026
Shield AI Nova 2
Category: Tactical / Defense — Autonomous Indoor ISR NDAA Status: NDAA compliant Manufacturer: Shield AI (San Diego, CA) — Made in USA Availability: Military / government procurement
Overview
Autonomous indoor ISR drone that flies and maps buildings without GPS, without a pilot, and without comms. Uses Shield AI's Hivemind autonomy software for fully autonomous room-by-room clearing and mapping. Designed for military MOUT (Military Operations in Urban Terrain) and law enforcement tactical entry support. The drone enters a structure autonomously and returns with a 3D map and video.
Key Features
- Fully autonomous indoor flight — no GPS, no pilot, no comms required
- Hivemind AI: Autonomous navigation, mapping, and obstacle avoidance
- Room-by-room clearing: Enters unknown structures and maps them
- 3D mapping output
- Quiet operation
- NDAA compliant, Made in USA
Gotchas
- Military/government procurement only.
- Hivemind is proprietary — no MAVLink, no open protocols.
- Indoor-only use case — not an outdoor platform.
- Limited flight time due to small form factor.
- Shield AI is also developing the V-BAT (fixed-wing VTOL) for outdoor missions — separate platform.
Last updated: March 2026
SiFly Q12
Category: Tactical / Commercial NDAA Status: NDAA compliant Manufacturer: SiFly (USA)
Overview
SiFly entered the market in 2025 with the Q12, a platform that prioritizes endurance and range above everything else. American-made, NDAA-compliant. Positioned for long-duration inspection and surveillance missions where flight time is the primary constraint.
Notes
Relatively new to market — detailed integration specs are still emerging. Worth tracking for operators who need maximum endurance from an NDAA-compliant platform. Community contributions with field data welcome.
Last updated: March 2026
Skycutter Shrike 10 Fiber
Category: Tactical / Defense — FPV Strike NDAA Status: NDAA compliant (via Skycutter UK partnership) Manufacturer: Skycutter (UK) / SkyFall (Ukraine) DDG Phase I: 1st place (99.3 points — highest score in competition)
Overview
The Shrike 10 Fiber won the Drone Dominance Gauntlet Phase I with 99.3 points — the highest score of all 26 competitors. It is a fiber-optic FPV strike drone, meaning the video and control signals travel through a thin fiber-optic cable rather than RF, making it completely immune to electronic warfare jamming.
The platform is a partnership between Skycutter (UK) and SkyFall (Ukraine), combining Ukrainian combat-proven design with a NDAA-compliant Western manufacturing pathway.
Key Features
- Fiber-optic control: Zero RF emissions — immune to jamming, undetectable by RF sensors
- DDG Phase I winner: 99.3/100 — dominated the competition
- Combat-proven lineage: SkyFall's designs are battle-tested in Ukraine
- NDAA compliant (via Skycutter UK manufacturing)
- Low-cost, expendable
SkyFall (Ukraine)
SkyFall also produces the Vampire, a larger FPV platform capable of carrying 15 kg payloads. SkyFall is one of the most experienced combat FPV manufacturers in the world, with designs refined through continuous battlefield feedback.
DDG Phase II Implications
The fiber-optic approach has a fundamental advantage: it cannot be jammed. DDG Phase II introduces full EW opposition, GPS denial, and communications jamming — environments where RF-linked FPV drones degrade significantly. Fiber-optic platforms bypass the entire EW problem at the cost of limited range (determined by spool length) and the requirement to physically trail a fiber behind the drone.
Notes
The Shrike's DDG dominance signals that fiber-optic FPV may define the next generation of tactical strike drones. Kela Technologies (Israel, In-Q-Tel backed) is the key fiber-optic technology provider — they also partner with Neros for the Archer Fiber variant.
Last updated: March 2026
Skyfish Osprey
Category: Tactical / Commercial NDAA Status: NDAA compliant Manufacturer: Skyfish (Missoula, MT) — Made in USA
Overview
American-made drone built for precision mapping, inspections, and ISR missions. Designed around accuracy, repeatability, and secure operations rather than consumer features. Government-focused.
Specs
| Spec | Value |
|---|---|
| Weight | ~3.7 lb (1.7 kg) |
| Flight Time | Up to 45 min |
| Transmission | Up to 10 km |
| Use Cases | Infrastructure inspection, surveying, government |
Notes
Emphasizes stable flight, precise positioning, and professional sensor support. Data quality and compliance prioritized over convenience. Worth profiling in more depth as field experience accumulates.
Last updated: March 2026
Teal Black Widow (SRR Tranche 2)
Category: Tactical / Defense NDAA Status: Blue UAS certified, NDAA compliant Manufacturer: Teal Drones / Red Cat Holdings (Salt Lake City, UT) — Made in USA Availability: Military procurement (U.S. Army SRR program)
Overview
The Black Widow won the U.S. Army's Short Range Reconnaissance (SRR) Tranche 2 contract — beating the Skydio X2D. Thousands of units will be fielded across Brigade Combat Teams over the next five years. Purpose-built for GPS-denied, EW-contested environments. Doodle Labs Helix Mesh Rider Radio with Sense Technology provides the communications backbone.
Key Details
- SRR Tranche 2 winner over Skydio X2D
- Comms: Doodle Labs Helix Mesh Rider Radio
- Anti-jamming via proprietary Sense Technology
- Dual-band operation
- Adaptive modulation
- Low-latency HD video and telemetry BVLOS
- Low probability of intercept/detect
- NDAA compliant, Blue UAS approved
- Validated in EW-contested environments including Ukraine
- Modular architecture for future capability upgrades
Gotchas
- Military procurement pipeline only. Not available for commercial purchase.
- Doodle Labs integration is specific to the SRR variant — not the same radio as the commercial Teal 2.
- Detailed technical specs are largely restricted/FOUO.
Last updated: March 2026
UAS Nexus Platform One
Category: Tactical / MOSA FPV Ecosystem Platform NDAA Status: NDAA §848 compliant — NOT Blue UAS listed (uses Blue UAS-listed components) Manufacturer: UAS Nexus (United States) Availability: Syndicate membership required — syndicate.uasnexus.com
Overview
Platform One is less a fixed product and more an ecosystem — a MOSA-first (Modular Open Systems Architecture) airframe designed to accept whatever Western avionics stack the mission requires. Inspired by Ukraine's decentralized FPV production model: no single golden BOM, no single firmware, no vendor lock-in. The frame is the common denominator; everything else is operator-configured.
Supports 7-inch and 10-inch prop configurations on the same airframe. Solder-free build option available for trainer/non-technical user configuration. Decentralized manufacturing model targets 10,000+ aircraft/month capacity. Full NDAA §848 compliance. The platform is not itself Blue UAS listed, but is designed to accept Blue UAS Framework-listed components (ARK FPV, ModalAI VOXL 2, Auterion Skynode-S, Doodle Labs, etc.).
Access is gated behind UAS Nexus Syndicate membership, which requires request-based approval.
Specs
| Spec | Value |
|---|---|
| Airframe | 17 in wide × 14 in long |
| Prop Support | 7-inch and 10-inch |
| Max Speed | ~80 mph (129 km/h) |
| Endurance | 20+ min at cruise |
| Power | 6S LiPO or LiON, XT60 bulkhead connector |
| Materials | Carbon fiber, flexible FDM print (Shore 95A), stainless hardware |
| Cooling | Active cooling or heatsink (compute-dependent) |
| Production Capacity | 10,000+ aircraft/month (decentralized manufacturing) |
| NDAA | §848 compliant |
| Blue UAS | NOT listed — platform accepts Blue UAS Framework components |
Supported Avionics
Flight Controllers
| Component | Notes |
|---|---|
| TBS Lucid H7 | Primary recommended FC |
| BrainFPV RADIX 2 HD | Digital video + autopilot combo |
| Orqa F405 3030 | NDAA-compliant EU-manufactured option |
Autopilot / Compute
| Component | Notes |
|---|---|
| Raspberry Pi CM5 | General compute |
| ModalAI VOXL 2 | Full autonomy stack, VIO, PX4 |
| ModalAI VOXL 2 Mini | Lighter autonomy option |
| Auterion Skynode-S | Enterprise PX4, LTE, mission management |
| ARK FPV | Open-source, NDAA-compliant PX4 compute |
C2 / Radio Links
| Component | Notes |
|---|---|
| ORQA IRONghost | EW-resilient sub-GHz (licensed) |
| TBS Crossfire / ELRS | ISM 900 MHz long range |
| Doodle Labs NANO/MINI Mesh Rider | Mesh networking, IP datalink |
| BlueSDR | Software-defined radio |
| L3Harris SDR | Defense-grade SDR |
| Silvus StreamCaster | MANET mesh |
Autopilot Software
- Betaflight, INAV, PX4, ArduPilot
Configurations
FPV Trainer / EW
Learn to fly or defeat jammers. Featured: IRONghost or TBS/ELRS radio, TBS Lucid H7 or Orqa F405, NDAA camera, 3–5 kg payload capacity, solder-free option.
Mesh Node
Comms relay for GPS-denied environments. Featured: VOXL 2 Mini, Doodle Labs / BlueSDR / L3Harris / Silvus radio, low-light EO camera.
Autonomy Testing
Perception and navigation research with modular sensors. Featured: VOXL 2 / VOXL 2 Mini, Doodle Nano, low-light EO + perception cameras, downward LiDAR, autonomy software.
Sensors & Cameras
- NDAA-compliant EO camera
- Low-light EO camera
- Perception / stereo camera
- Downward LiDAR
Gotchas
- Syndicate access is gated — membership requires approval. Factor lead time into procurement planning.
- No fixed BOM — Platform One is an ecosystem, not a single SKU. Component selection varies by configuration and availability. You assemble your own stack.
- Decentralized manufacturing — high-volume capacity but supply chain coordination is on the operator/integrator.
- Multi-firmware support — no single "golden path." Operator must select and configure the autopilot stack. VOXL 2 / PX4, ArduPilot, Betaflight, and iNav all have different integration complexities.
- Deeper product catalog behind the membership wall — publicly available specs are limited. Full component catalog accessible only post-approval.
- NOT Blue UAS listed — the platform itself is not on the DoD approved list. It is NDAA §848 compliant and designed to accept Blue UAS Framework-listed components, but those are different designations. Do not represent it as Blue UAS listed in procurement documents.
Last updated: March 2026 | Source: syndicate.uasnexus.com, UAS Nexus Syndicate catalog
Vantage Robotics Vesper / Trace
Category: Tactical / Defense — ISR NDAA Status: NDAA compliant / Blue UAS Manufacturer: Vantage Robotics (USA)
Overview
Vantage Robotics builds compact ISR platforms for defense and public safety. The Vesper and Trace are small, portable reconnaissance drones designed for squad-level deployment with encrypted communications and secure data handling.
Vantage also manufactures the Vision2 ground control station — a 2500-nit display with 15 TOPS AI processing and AES-256 encryption, which is one of a handful of NDAA-compliant GCS options on the market.
Platforms
Vesper
- Small tactical ISR drone
- Blue UAS listed
- Encrypted data link
- Day/night sensor options
Trace
- Ultra-compact reconnaissance platform
- Designed for rapid deployment and covert operations
- Minimal visual and acoustic signature
Vision2 GCS
| Spec | Value |
|---|---|
| Display | 2500 nit (sunlight readable) |
| AI Compute | 15 TOPS |
| Encryption | AES-256 |
| NDAA | Compliant |
Notes
Vantage occupies the small ISR space alongside Teal 2 and Parrot ANAFI USA. Their Vision2 GCS is notable as one of the few NDAA-compliant ground control options with integrated AI processing.
Last updated: March 2026
Part 6 — Component References
Deep dives on flight controllers, ESCs, motors, batteries, companion computers, radios, sensors, and complete ecosystems. Specs that matter, gotchas that don't show up in datasheets.
Batteries & Power Systems — The Weight You Carry
Part 6 — Components Batteries define flight time, payload capacity, and increasingly, procurement eligibility. The NDAA battery ban is coming.
The Approaching Deadline
NDAA FY2026 prohibits DoD purchase of batteries for weapons and support systems from foreign entities of concern (China, Russia) effective January 1, 2028. This creates an 18-month window where the entire defense UAS industry must reshore its battery supply chain.
Most drone batteries today use Chinese cells — even packs assembled in the US typically contain CATL, EVE, or other Chinese cells. The 2028 deadline will force a transition to allied-nation cell manufacturers. Understanding who makes cells vs. who assembles packs is critical.
Cell Manufacturers vs. Pack Assemblers
A "drone battery" is a pack of individual cells wired together with a balance connector and protection circuit. The cells inside determine energy density, discharge rate, and cycle life. The pack integrator adds the BMS, connector, and housing.
Most operators buy packs (Tattu, CNHL, GNB). But the NDAA question is about the cells inside, not the label on the shrink wrap.
Cell Manufacturers — The Supply Chain Layer
Amprius Technologies — The NDAA Battery Leader
| Detail | Value |
|---|---|
| HQ | Fremont, CA, USA |
| NYSE | AMPX |
| NDAA | Compliant (working with DIU on all 11 cell components) |
| Technology | Silicon anode lithium-ion (100% silicon anode — only commercial source) |
| SiMaxx | 520 Wh/kg, 1,300 Wh/L (CES 2026 Best of Innovation — 2× conventional) |
| SiCore | 450 Wh/kg, 1,150 Wh/L, commercially available in volume |
| SA128 Cell | 21700 cylindrical, 6.8 Ah, 320 Wh/kg (Nanotech US production) |
| Fast Charge | 0–80% in under 6 minutes (third-party validated) |
| Revenue | $73M (2025, +202% YoY), guiding $125–135M for 2026 |
| Profitability | First positive adjusted EBITDA Q4 2025 |
| DIU Contracts | $10.5M + $1.5M |
| Production | 2+ GWh capacity: Korea Battery Alliance + Nanotech Energy (first US mfg partner, Feb 2026) |
| Customers | AeroVironment, L3Harris, Teledyne FLIR, BAE Systems, Nokia, ESAero, AALTO/Airbus (67-day stratospheric flight) |
Amprius has near-monopoly positioning on NDAA-compliant high- performance UAS cells through 2028. Their silicon anode technology delivers 2× the energy density of conventional lithium-ion — same flight time at half the battery weight, or double the flight time at the same weight. The Nanotech Energy partnership (Feb 2026) establishes the first US-based production of Amprius cells, critical for NDAA compliance ahead of the Jan 2028 deadline.
American Lithium Energy (ALE) — SafeCore Safety Pioneer
| Detail | Value |
|---|---|
| HQ | Vista, CA, USA |
| NDAA | Compliant — designed and manufactured in USA |
| Technology | Silicon anode lithium-ion with SafeCore+ and ZeroVolt |
| Energy Density | 400 Wh/kg shipping at MW scale |
| Charge Rate | 5C–10C fast charge |
| Operating Temp | -40°C to +70°C |
| Safety | SafeCore+™ prevents thermal runaway via internal electrode delamination |
| ZeroVolt™ | Cells can be shipped and repeatedly discharged to 0V without damage |
| Cycle Life | 15,000+ cycles validated in space applications |
| Applications | Defense (battlefield-tested), aerospace (space-proven), UAV, eVTOL |
| SBIR | Joint work with Pacific Northwest National Laboratory on non-flammable electrolytes |
ALE's key differentiator is safety. SafeCore+ is a patented internal safety layer that self-decomposes under abuse conditions to interrupt current flow — preventing thermal runaway at the electrode level, not just with external protection circuits. This reduces packaging weight (no bulky fireproofing needed) and passes nail penetration and overcharge abuse tests. ZeroVolt technology allows cells to be safely shipped and stored fully discharged — a significant logistics advantage for military supply chains.
At 400 Wh/kg shipping at scale, ALE bridges the gap between conventional Li-ion (~260 Wh/kg) and Amprius SiMaxx (520 Wh/kg), with a stronger safety story than either.
Wake Energy — US Pack Assembly at Scale
| Detail | Value |
|---|---|
| HQ | Los Angeles, CA, USA |
| NDAA | Compliant — assembled in America |
| Compliance | UN38.3 certified |
| Product | THOR 6030 (6S3P, ~324 Wh, 15 Ah, Molicel P50B/P45B cells) |
| Manufacturing | Hundreds of packs per week, CNC micro TIG welding |
| Testing | MIL-STD-810H 516.8 transit drop (5 ft), 65A continuous thermal testing |
| Cells | Molicel P50B / P45B (Taiwanese — non-Chinese) |
| Formats | Custom configurable for FPV, UAS, robotics |
Wake Energy fills a critical gap: US-based pack assembly using non-Chinese cells (Molicel/Taiwan) at production scale. They don't make cells — they engineer and assemble packs with quality processes (CNC welding, pull-tested coupons, individual electrode QA) that hobby-grade pack assemblers don't match. The THOR 6030 is a ready-to-buy 6S pack for tactical FPV and UAS applications.
For operators who need NDAA-compliant battery packs without designing custom solutions, Wake Energy is the most accessible option — production-ready, tested to military standards, and shipping now.
Molicel (Taiwan)
| Detail | Value |
|---|---|
| HQ | Taiwan (subsidiary of Taiwan Cement Corp) |
| Key Cells | P42A (21700, 4200mAh, 45A), P50B (21700, 5000mAh, high-power) |
| NDAA | Likely compliant (Taiwanese, NOT Chinese) — verify per program |
| Partners | KULR Technology for K1A drone battery systems |
| Status | Already referenced in AI Wingman Power Systems Architecture doc |
Molicel P42A and P50B are the reference 21700 cells for high- performance drone applications. Taiwanese manufacturing makes them the most accessible non-Chinese high-discharge cells.
Samsung SDI (South Korea)
| Detail | Value |
|---|---|
| HQ | South Korea |
| Key Cells | 40T (21700, 4000mAh, 35A), 50E (21700, 5000mAh), 50S (21700, 5000mAh, 25A) |
| NDAA | Allied nation — likely compliant |
LG Energy Solution (South Korea)
| Detail | Value |
|---|---|
| HQ | South Korea |
| Key Cells | M50T (21700, 5000mAh), HG2 (18650, 3000mAh, 20A) |
| NDAA | Allied nation — likely compliant |
Chinese Cell Manufacturers (Context — NOT NDAA)
- CATL — World's largest battery manufacturer. NOT NDAA.
- EVE Energy — Major Li-ion cell OEM. NOT NDAA.
- Most hobby LiPo packs (Tattu, CNHL, GNB) use Chinese cells.
Battery System Integrators
KULR Technology
| Detail | Value |
|---|---|
| HQ | Houston, TX, USA |
| Product | KULR ONE Air (K1A) — advanced UAS battery system |
| Cells | Amprius SiCore + Molicel P50B |
| Key Feature | Thermal management expertise, standard + custom OEM configs |
| Partners | Hylio (Texas-manufactured ag drone batteries) |
| Production | Volume production Q4 2025 |
KULR is the bridge between cell manufacturers and drone OEMs. They handle thermal management, BMS design, and pack engineering so that drone companies don't have to become battery companies.
Tattu / Gens Ace (Context — NOT NDAA)
In the parts-db for some products. Dominant hobby LiPo brand. Chinese-manufactured. NOT NDAA compliant. Needs compliance flags added to all existing entries.
LiPo vs. Li-Ion for Drones
| LiPo | Li-Ion (21700) | |
|---|---|---|
| Energy Density | ~150-200 Wh/kg | ~200-260 Wh/kg (450+ with Amprius) |
| Discharge Rate | High (75-100C burst) | Moderate (8-15C typical) |
| Cycle Life | 200-300 cycles | 500-1000+ cycles |
| Weight | Heavier for given energy | Lighter per Wh |
| Best For | FPV racing, aggressive flight | Endurance, commercial ops |
| NDAA Risk | Cells almost always Chinese | Allied options exist (Molicel, Samsung, LG) |
The industry is moving from LiPo to 21700 Li-Ion for everything except extreme-discharge FPV applications. 21700 packs offer better energy density, longer cycle life, and a path to NDAA compliance through Molicel/Samsung/LG cells.
The Price Reality
| Cell Source | $/Wh (approx.) | NDAA Status |
|---|---|---|
| Chinese LiPo (Tattu, CNHL) | $0.10-0.20 | NOT compliant |
| Chinese Li-Ion (EVE, CATL) | $0.08-0.15 | NOT compliant |
| Korean Li-Ion (Samsung, LG) | $0.15-0.25 | Allied — likely compliant |
| Taiwan Li-Ion (Molicel) | $0.15-0.25 | Likely compliant |
| US Silicon Anode (Amprius) | $0.50-1.00+ | Compliant |
The 2028 NDAA battery deadline will create a 3-5× cost increase for defense UAS battery systems unless allied-nation (Korea, Taiwan) cell production scales to meet demand.
Choosing Batteries
-
Match voltage to your ESCs and motors. 4S (14.8V nominal) is standard for 5" FPV. 6S (22.2V) is standard for larger builds. 8S and above for heavy-lift.
-
Capacity determines flight time. More mAh = more flight time but more weight. There's a sweet spot for every airframe.
-
Discharge rate determines power. "C rating" = max safe current draw as a multiple of capacity. A 1500mAh 100C pack can deliver 150A. LiPo C ratings are often inflated by manufacturers.
-
Storage charge matters. LiPo storage voltage is 3.8V/cell. Never store LiPo at full charge or fully depleted. Storage charge the same day you fly.
-
For NDAA builds: Molicel P42A/P50B 21700 packs are the pragmatic choice today. Amprius SiCore is the premium path with 2× energy density. KULR K1A provides engineered pack solutions.
Last updated: March 2026
Battery Deep Dive
The propulsion system matching guide covers battery selection for a given build. This guide goes deeper: what actually happens inside a LiPo as it ages, how to read internal resistance and what it tells you, why the C rating on the label is mostly marketing, and how to make rational decisions about parallel packs and storage.
Chemistry Comparison
LiPo (Lithium Polymer)
The standard for performance UAS. High discharge rate, low weight, available in every cell count and capacity imaginable. The cathode material is typically NMC (Nickel-Manganese-Cobalt) or NCA (Nickel-Cobalt-Aluminum).
- Nominal voltage: 3.7V/cell
- Full charge: 4.20V/cell (standard), 4.35V/cell (LiHV)
- Discharge cutoff: 3.5V/cell (conservative), 3.3V/cell (aggressive)
- Storage voltage: 3.80–3.85V/cell
- Energy density: 150–200 Wh/kg
- Cycle life: 150–400 cycles to 80% capacity
- Peak discharge: 25–150C rated (see C rating section)
Li-Ion (Lithium Ion)
Cylindrical cells (18650, 21700) with higher energy density but lower peak discharge. The right choice for long-endurance platforms that don't need burst power.
- Nominal voltage: 3.6V/cell
- Full charge: 4.20V/cell
- Discharge cutoff: 2.5–3.0V/cell
- Storage voltage: 3.6–3.7V/cell
- Energy density: 200–265 Wh/kg (35–60% more than LiPo)
- Cycle life: 500–1000 cycles
- Peak discharge: 2–10C typical (high-drain cells: 20–30C)
Where Li-Ion wins: Long-range fixed-wing, mapping platforms, delivery drones, anything where flight time matters more than max power. A 21700 Samsung 40T cell pack at 4,000mAh provides ~35% more flight time per gram than a same-weight LiPo — but if you need punch-out power for a 6S freestyle quad, Li-Ion won't keep up with the current demand.
LiHV (High Voltage LiPo)
Same physical construction as LiPo, charged to 4.35V instead of 4.20V. About 5–8% more energy per cell. Requires an LiHV-capable charger and an LiHV-rated ESC/FC (most modern ESCs handle 4.35V fine).
The tradeoff: the cells spend more time at high voltage, which accelerates degradation. Expect 20–30% shorter cycle life compared to the same cell charged to 4.20V. Worth it if you fly frequently and replace batteries regularly; not worth it if batteries sit between sessions.
LiFePO4 (Lithium Iron Phosphate)
Extremely safe, long cycle life, thermally stable. The chemistry of choice for ground vehicles, industrial systems, and high-cycle applications. Not competitive for UAS due to low energy density (90–120 Wh/kg) and low cell voltage (3.2V nominal).
The C Rating: What It Actually Means
The C rating on a LiPo label is a multiplier applied to the capacity:
Max discharge current (A) = C_rating × capacity_Ah
A 4S 1500mAh 100C pack has a rated max discharge of 150A.
The problem: C ratings are self-reported by manufacturers with no standard test methodology. A pack labeled 100C from a budget brand may actually provide 40–60A before voltage sag degrades significantly. A quality pack labeled 45C may outperform a cheap 100C pack at identical current.
What actually matters is internal resistance, not the C rating. Internal resistance is the real physical limit on discharge capability and it's measurable with a charger that has an IR measurement function.
Internal Resistance: The Real Health Metric
Internal resistance (IR) is the resistance inside the battery cell and wiring. When current flows, some voltage is lost across this resistance (V = IR), reducing the voltage available to your motors.
What IR tells you: - Fresh LiPo (good quality): 2–6mΩ per cell - Aged LiPo (80% capacity): 8–15mΩ per cell - Damaged/puffed cell: 20–50mΩ+
How voltage sag works: At 50A draw through a pack with 5mΩ IR per cell (4S = 20mΩ total):
Voltage sag = Current × IR = 50A × 0.020Ω = 1.0V
A 4S pack that reads 15.0V at rest shows 14.0V under 50A load. As the pack ages and IR increases to 40mΩ, sag at 50A becomes 2.0V — now your "15V" pack shows 13V under load, and your ESCs may hit their undervoltage cutoff.
Measuring IR: Use a charger with built-in IR measurement (iCharger, ISDT, Junsi series). Measure at rest, at consistent temperature (IR varies with temperature — cold cells have higher IR). Log IR on each charge cycle; rising IR is an early indicator of aging.
When to retire a pack: IR more than 3× the initial value, or capacity below 80% of rated, or any cell with a cell delta >0.1V after a full charge.
Voltage Sag Under Load
Voltage sag is not a flaw — it's physics. But excessive sag causes real problems:
- FC brownout: If the voltage at the FC input drops below minimum, the FC resets mid-flight.
- ESC undervoltage cutoff: ESCs have minimum operating voltages; crossing them causes motor shutdown.
- Reduced thrust: At lower voltage, motor RPM drops, reducing thrust.
- Inaccurate voltage monitoring: If you rely on resting voltage to estimate state-of-charge, the loaded voltage gives you a pessimistic picture — the battery recovers voltage when current demand drops.
Practical mitigation:
- Set BATT_ARM_VOLT based on loaded voltage, not resting voltage. Test your platform's hover voltage under load and use that as the floor.
- Add a 1000µF capacitor close to the ESC power input. This doesn't fix sag — it filters the fast transients.
- Don't push packs to their rated maximum discharge for sustained periods. Flying at 70% of rated max discharge leaves margin for peaks.
Capacity Fade: How Batteries Age
LiPo capacity degrades with each charge-discharge cycle due to: 1. SEI (Solid Electrolyte Interphase) layer growth: Forms on the anode during charging; irreversible; increases IR over time 2. Lithium plating: At high charge rates or low temperatures, lithium metal deposits on the anode instead of intercalating; causes capacity loss and internal shorts 3. Cathode degradation: Physical and chemical changes at the cathode reduce active material
Accelerating factors: - High charge rate (>1C is fine; >3C degrades faster) - High storage voltage (storing at 4.2V vs 3.85V doubles degradation rate) - High operating temperature (>40°C significantly accelerates aging) - Deep discharge (below 3.3V/cell) - Physical damage (swelling, impact, moisture)
Slowing degradation: - Store at 3.80–3.85V/cell (most chargers have a "storage charge" function) - Charge at 1C or lower when not in a hurry - Avoid flying in temperatures below 5°C without pre-warming - Don't discharge below 3.5V/cell per battery monitor during flight (3.3V absolute minimum) - Don't charge immediately after a hot flight — let cells cool to under 40°C first
Storage Voltage: The Most Important Practice
Flying at full charge is fine. Storing at full charge is not. A LiPo stored at 4.2V/cell for a week loses measurable capacity; stored for a month, it may puff.
The sweet spot is 3.80–3.85V/cell — enough charge to prevent deep-discharge cell damage during storage, low enough to minimize electrolyte oxidation.
Practical workflow: 1. After flying: if you won't fly again within 48 hours, discharge or storage-charge to 3.85V/cell 2. Before flying: charge to 4.2V within 24 hours of use 3. Long-term storage (>1 month): store at 3.7–3.8V/cell, in a fireproof bag, in a cool location
Most quality chargers (iCharger, ISDT Q8, ToolkitRC M8) have a one-button storage charge function.
Parallel Packs
Running two or more batteries in parallel doubles capacity (and weight) without changing voltage.
What goes right: More capacity, lower effective C-rate for the same load, longer flights.
What can go wrong:
Connecting packs at different states of charge: When you connect a full pack (4.2V/cell) to a depleted pack (3.5V/cell), a large current flows between the packs as they equalize. This instantaneous equalization current can trip your ESCs, damage cell chemistry, or in extreme cases cause fires.
Rule: Never parallel-connect packs that differ by more than 0.1V per cell. Use a parallel charging board that lets you charge multiple packs simultaneously to the same voltage, then connect them in parallel.
Cell mismatches between packs: Even two nominally identical packs from the same manufacturer will have slightly different internal resistances. When paralleled, the lower-IR pack will supply more current under load. Over time this can cause one pack to age faster than the other.
Practical parallel approach for BVLOS endurance: 1. Buy a matched pair from the same batch (same production lot, same measured IR) 2. Cycle both packs together from new — don't alternate which pack you use 3. Retire both when either shows signs of aging
BMS for Larger Systems
For Group 2+ platforms and multi-cell configurations above 6S, a dedicated Battery Management System (BMS) is advisable.
A BMS provides: - Cell-level voltage monitoring (catch a single bad cell before it causes a runaway) - Overcurrent protection (hardware cutoff if current exceeds a threshold) - Temperature monitoring (thermistor per cell group) - State-of-charge estimation (Coulomb counting + voltage model) - Cell balancing (active or passive)
For ArduPilot integration, the BMS typically reports via I2C or UART. ArduPilot's BATT_MONITOR supports multiple BMS protocols:
BATT_MONITOR = 16 # SMBus-Maxim (common for 18650 packs)
BATT_MONITOR = 17 # ESCON
BATT_MONITOR = 18 # Bebop 2
BATT_MONITOR = 20 # Maxell (for industrial packs)
For custom or industrial LiPo packs with an integrated BMS UART output, use the BATT_MONITOR = 4 (UART protocol) or write a custom driver.
Fire Safety
LiPo thermal runaway is fast, hot (>800°C), and produces toxic gases. The standard precautions:
- Charge and store in a LiPo-safe bag — ceramic or reinforced bags rated for LiPo fires
- Never leave charging unattended
- Don't charge below 0°C — lithium plating risk
- Don't charge above 45°C ambient
- Inspect every pack before and after flight — any swelling, impact damage, or unusual warmth: ground it
- Discharge a damaged or retired pack completely (to 0V per cell, using a LiPo discharger or a resistive load) before disposal or recycling. A fully discharged LiPo is safe to dispose of in most municipal waste streams; a charged LiPo is not.
If a pack catches fire: Don't use water (water reacts with lithium). Move it outdoors if safe to do so; allow it to burn out. A metal bucket with sand is the standard field containment method.
BVLOS Pathways
Beyond Visual Line of Sight operations entered a new phase in August 2025 when the FAA published its long-awaited Part 108 Notice of Proposed Rulemaking. For the first time, there's a clear statutory framework for routine BVLOS operations — not just individual waivers. This guide covers the current compliance paths and what's changing.
Note: Part 108 is still proposed rulemaking as of early 2026. The FAA is reviewing public comments. What exists today are the Part 107 waiver and COA pathways. Part 108 is described here as the expected near-term framework.
What BVLOS Means and Why It's Hard
Under standard Part 107, you must maintain visual line of sight with your drone at all times — roughly 1,500 feet in optimal conditions. BVLOS operations remove this constraint, enabling long-range missions: infrastructure corridor inspection, precision agriculture at scale, last-mile delivery, and persistent ISR.
The regulatory difficulty is that VLOS is also the primary safety mechanism. Without it, the burden shifts to technology: detect-and-avoid systems that tell the drone (and operator) whether other aircraft are nearby, reliable command-and-control links that can't be severed beyond radio range, and airspace deconfliction systems that prevent two drones from being in the same place at once.
Current Paths (Pre-Part 108)
Path 1: Part 107 BVLOS Waiver
The existing mechanism. You apply to the FAA for a waiver to § 107.31 (visual line of sight requirement), demonstrating that your specific operation can be conducted safely without VLOS.
Reality check: BVLOS waivers increased from ~1,200 in 2020 to ~27,000 by 2023, but the vast majority of approved operations still use visual observers. Of 44,000+ BVLOS flights logged under the FAA's BEYOND program through 2025, fewer than 800 (~2%) were flown without a visual observer. The safety case for VO-less operations remains the hardest part of any waiver application.
What the application requires: - Detailed operational description (location, altitude, corridor, timing) - Aircraft technical description (remote ID compliance, C2 link architecture, DAA capability) - Emergency procedures (lost link, pilot incapacitation, aircraft malfunction) - Risk mitigation narrative addressing ground risk and air risk - Proof of operational safety (flight test data, simulation, comparable operations)
Timeline: 90 days minimum. In practice 6–18 months. Applies only to the specific described operation — a new location or aircraft requires a new application.
Path 2: Certificate of Authorization (COA)
COAs are issued to public agencies (law enforcement, fire, government entities) under 14 CFR § 91.203. They allow more flexible operations than Part 107, including BVLOS, at the cost of ongoing reporting and oversight requirements.
Public safety agencies often find COA amendments faster to process than commercial waivers because there's an established relationship with the FAA and a clear public benefit case.
Path 3: Part 135 Air Carrier Certificate
Amazon Prime Air, UPS Flight Forward, and Wing operate under Part 135 certificates. This gives them authority for routine BVLOS operations at scale but requires FAA oversight comparable to a small airline: operations specifications, airworthiness data, crew training programs.
Not a realistic path for most operators — it's the endpoint for mature commercial delivery networks, not a starting point for an inspection company.
Part 108: The Proposed BVLOS Framework (August 2025 NPRM)
Part 108 proposes to replace the waiver-by-waiver approach with a risk-tiered authorization framework. The core structure:
Two Authorization Types
Permit (lower-risk): - Faster issuance (targeted at days, not months) - Restricted to specific operation types: corridor surveys, infrastructure inspection, precision agriculture - Operations over sparse population in uncontrolled airspace - Remote ID required - DAA via ADS-B In required or equivalent - Flight below 400ft AGL in shielded areas
Certificate (higher-risk): - Full operations specification review — comparable to Part 135 light - Allows operations over people, in controlled airspace, and at higher operational complexity - Requires a designated Operations Supervisor and Flight Coordinator - Safety Management System (SMS) required - The path for package delivery, urban ISR, and complex corridor operations
Airworthiness
Under Part 108, aircraft up to 1,320 lbs including payload do not need traditional FAA type certification. Instead, manufacturers self-certify compliance with consensus standards (ASTM F3003, F2909, etc.) — the same approach used for Light Sport Aircraft. This is a significant reduction in friction for UAS manufacturers.
Detect-and-Avoid Requirements
Part 108 requires UAS to detect and yield right-of-way to any aircraft broadcasting ADS-B Out or other electronic conspicuity technology. The practical implication:
- Your aircraft needs ADS-B In (receiver) to detect manned traffic
- You need a DAA algorithm that can command avoidance maneuvers or alert the operator
- ADS-B Out is not required for UAS under 1,320 lbs but is strongly encouraged (and may be required in controlled airspace)
For DIY BVLOS platforms: uAvionix Ping (ADS-B transceiver, ~$800), Sagetech MXS, and mRo ACSP7 are the common hardware options. ArduPilot 4.4+ has native ADS-B In support with avoidance action.
UTM and ADSP Integration
For Permit-level operations, Part 108 requires coordination with an FAA-approved Automated Data Service Provider (ADSP) for airspace deconfliction. ADSPs are the commercial entities (currently in development / early certification) that will handle:
- Pre-flight airspace reservation
- Real-time conflict detection with other BVLOS operators
- ATC integration in controlled airspace
In practice, this means most BVLOS Permit operators will need to subscribe to a UTM service. ANRA Technologies, Airbus UTM, and Wing are among the early ADSP candidates. Pricing and availability are not yet established.
Practical BVLOS Stack for a Custom Platform
Assuming a DIY ArduPilot fixed-wing or VTOL targeting Part 108 Permit operations:
Command & Control Link
The C2 link must be reliable beyond visual range. Options ranked by practicality:
| Link Type | Range | Latency | Cost | Notes |
|---|---|---|---|---|
| Cellular (LTE/5G) | Nationwide where coverage exists | 50–200ms | $30–80/mo | DroneEngage, SIYI, Herelink cellular |
| Satellite (Iridium) | Global | 270–400ms | $150–500/mo | Too high latency for active control; OK for telemetry + failsafe |
| Satellite (Starlink) | Near-global | 20–40ms | $120–200/mo + terminal | Promising but terminal weight is significant |
| 900MHz LoRa (MANET) | 10–30km LOS | 100–300ms | Low | Mesh relay extends range; Meshtastic for backup C2 |
| 1.4GHz licensed | 100+ km | <50ms | High (license) | Best for long-range fixed-wing ISR |
The most practical setup for low-cost BVLOS: primary C2 via LTE (DroneEngage), backup telemetry via LoRa mesh (Meshtastic), with a 900MHz or 1.4GHz direct link for short-range departure and approach phases.
ADS-B In
Required under Part 108. ArduPilot configuration:
ADSB_ENABLE = 1
ADSB_TYPE = 1 (MAVLink) or 2 (uAvionix Ping)
AVD_ENABLE = 1 (Airborne Vehicle Detection — ArduPilot avoidance)
AVD_F_ACTION = 2 (Climb on threat detection)
Remote ID
Required at all times. See the Remote ID for Custom Builds guide for wiring and configuration details.
GCS Software
QGroundControl and Mission Planner both support BVLOS workflows: corridor planning, altitude limits, geofence setup, and multi-link C2. Mission Planner has better ArduPilot integration; QGC has better cross-platform support and MAVLink 2 telemetry handling.
For cellular BVLOS via DroneEngage: the DroneEngage companion computer (Raspberry Pi) connects to your FC via USB serial and handles MAVLink forwarding over the cellular link transparently. You fly with QGC or Mission Planner on any internet-connected device.
Operational Requirements Under Part 108 Permit
The operational requirements for a Permit are manageable for a serious operator:
- Pre-flight NOTAM: File a UAS-specific NOTAM via DroneZone for the planned operating area. Required before each BVLOS operation.
- Remote ID active: Broadcast module powered and transmitting from the moment of departure.
- ADSP coordination: File flight intent with an approved ADSP (once the infrastructure is in place; currently in development).
- C2 link monitoring: Maintain and log C2 link quality throughout the flight. Lost link action (defined in operations manual) must execute automatically.
- ADS-B monitoring: Active ADS-B In monitoring with DAA capability operative.
- Post-flight reporting: Log flight data including any conflicts detected, C2 link outages, or operational deviations.
The reporting and logging requirements directly motivate Tooth's audit trail design — a complete Tooth record satisfies most of the Part 108 recordkeeping burden automatically.
What Changes Everything: Detect-and-Avoid
The fundamental barrier to scalable BVLOS has always been that operators can't visually scan for conflicting traffic. The regulatory structure compensates for this with technology requirements, but those requirements add cost, weight, and complexity.
The realistic near-term DAA stack for a Group 1 UAS (under 25kg):
- ADS-B In (~50–200g, ~$300–800): detects all manned aircraft broadcasting ADS-B Out. Covers most commercial and general aviation traffic.
- Traffic Advisory System integration: ArduPilot's native avoidance will command a climb maneuver when an ADS-B target approaches within a configurable range.
- Gap: Low-altitude, non-ADS-B aircraft (gliders, ultralights, non-equipped helicopters, other drones). No affordable solution yet. The FAA acknowledges this gap and Part 108 does not require detection of non-equipped aircraft — the risk mitigation is procedural (fly at appropriate times and locations).
This gap is the core reason VO-less BVLOS at scale remains difficult. The ADS-B → avoidance system handles the manned aviation threat; the unequipped aircraft threat is still mostly managed by procedural deconfliction (fly at night, fly in low-activity airspace, coordinate with ATC).
EW-Resilient Communications — Keeping the Link Alive
Part 6 — Components The radio link between operator and drone is the single point of failure that electronic warfare exploits. This chapter covers who builds the links that survive jamming.
The EW Reality
GPS-denied, spectrum-contested environments are the new baseline. Ukraine proved this at scale — Russian EW systems routinely jam GPS, spoof navigation, and disrupt C2 links. The average lifespan of a commercial drone on the Ukrainian front is days, not months, largely because consumer-grade links fail under EW pressure.
Any drone system intended for contested environments needs communications that degrade gracefully rather than failing catastrophically. This means frequency hopping, spread spectrum, mesh networking, and ultimately — for complete EW immunity — fiber-optic links.
The Handbook's RF Fundamentals (Part 1) covers the physics. This chapter covers the products and manufacturers.
Sine Engineering — Combat-Proven from Day One
The most important communications company most people have never heard of. Founded in Lviv, Ukraine in 2022 as a counter-UAS team. After realizing that resilient connectivity is both the most critical enabler and the most vulnerable aspect of UAS operations, they pivoted to building their own solutions.
| Detail | Value |
|---|---|
| HQ | Lviv, Ukraine (European office planned) |
| Founded | 2022 |
| Employees | 150 |
| Customers | 150+ UAV development teams, 70+ drone manufacturers worldwide |
| Notable Client | Vyriy Drone (100% Ukrainian-sourced FPV) |
| NATO | Innovation Range winner (Dec 2025, communications category) |
| Production | Scaling 5× in 2026 |
| Funding | Bootstrapped through 2025, first investment round in progress |
Pasika Platform
Pasika ("Apiary") is Sine Engineering's integrated platform for multi-drone operations in contested environments. Four core pillars:
- Resilient C2 Datalinks — Secure command and control with Smart FHSS (frequency hopping spread spectrum), jamming detect and avoid. Hardware-agnostic.
- Digital Video Datalinks — HD video transmission optimized for EW-contested environments.
- GPS-Independent Navigation — Satellite-free positioning using time-of-flight signals from nearby Sine.Links (inspired by legacy aviation navigation). Not centimeter-accurate, but maintains operational continuity when GPS is denied.
- Swarm Capability — One operator controls multiple drones via single interface. Assign mission zones, launch sequentially, switch between drone feeds, deconflict paths automatically.
Combat record: Missions exceeding 200+ km in active EW conditions. Deployed across multiple Ukrainian drone types including strike FPVs, fiber-optic drones, and interceptors (Wild Hornets' Sting).
Why Sine Engineering Matters
Pasika allows $300–500 FPV drones to complete missions that would typically require more expensive platforms — because they maintain comms longer, avoid jamming more often, and deliver telemetry for continuous improvement. The system evolves weekly from direct battlefield feedback. As Sine puts it: "We don't bet on stability. We design for instability."
Their approach — "operator-scaled deployment" that extends human capability rather than replacing it — maps directly to the AI Wingman "Jarvis not Ultron" philosophy.
FPGA-based modules are in development for next-generation hardware. European branch opening for NATO-aligned manufacturing partnerships, including targeting US defense manufacturers supplying the Pentagon.
Western Mesh Radio Manufacturers
Doodle Labs
| Detail | Value |
|---|---|
| HQ | USA / Singapore |
| Blue UAS | Framework component (Mesh Rider Radios) |
| Technology | OpenWRT + batman-adv mesh networking |
| Products | Mesh Rider series in Helix configuration |
| Key Feature | Wi-Fi-based mesh with ruggedized form factor |
| NDAA | Compliant (Blue UAS Framework listed) |
Doodle Labs Mesh Rider radios are the most commonly integrated mesh networking solution in commercial and defense small UAS. Under the hood, they run OpenWRT Linux with batman-adv mesh protocol — which means they're configurable Linux devices, not black boxes. This is both a strength (flexible, hackable) and a vulnerability (software complexity increases attack surface).
See the Handbook's mesh radios chapter (Chapter 14) for configuration details and real-world range expectations.
Silvus Technologies
| Detail | Value |
|---|---|
| HQ | Los Angeles, CA, USA |
| Technology | StreamCaster MIMO radios |
| Key Feature | MN-MIMO (Mobile Networked MIMO) — highest throughput mesh |
| Products | SC-4200, SC-4400 series |
| Weight | 100–300g depending on model |
| Power | 5–15W |
| NDAA | US manufacturer — compliant |
Silvus provides the highest-throughput mesh radios in the market. Their MN-MIMO technology uses multiple-input multiple-output antenna configurations with mesh networking for combined throughput and resilience. Premium pricing — positioned for high-value platforms where bandwidth justifies the SWaP cost.
Persistent Systems
| Detail | Value |
|---|---|
| HQ | New York, NY, USA |
| Technology | MPU5 MANET radio |
| Key Feature | Android-based radio with integrated compute |
| Products | MPU5 series |
| NDAA | US manufacturer — compliant |
Persistent Systems MPU5 is unique in running Android OS natively on the radio, enabling onboard application hosting. Wave Relay MANET protocol. Used extensively by US SOF and DoD.
TrellisWare Technologies
| Detail | Value |
|---|---|
| HQ | San Diego, CA, USA |
| Technology | TSM (TrellisWare Scalable MANET) waveform |
| Key Feature | Barrage Relay — patented non-routing mesh, 800+ nodes tested |
| Waveforms | TSM (wideband MANET), Katana (anti-jam ECCM), NB LOS |
| Encryption | AES-256 built-in |
| Bands | UHF + L-band + S-band (225–2600 MHz) in single radio |
| NDAA | US manufacturer — compliant |
| New (2025) | Anti-jam C2 waveform for uncrewed systems, Barrage Beamforming |
Product Line:
| Radio | Form Factor | Key Feature |
|---|---|---|
| TW Shadow 950 | Handheld SDR | Flagship. Multi-band, HD video multicast, 32 talk-groups |
| TW Shadow 750 | Compact handheld | Mission-critical voice/data/PLI, simplified operation |
| TW Shadow 135 HPR | High Power (20W) | Vehicular/airborne/relay. Extended range |
| TW Ghost 875 | Small relay | Built-in battery, deploy as network node |
| TW Ghost 870 | OEM module | Embeddable into drones, robotics, platforms |
| TW Spirit 860 | Next-gen soldier | Public safety, first responder compatible |
TrellisWare's Barrage Relay technology eliminates traditional routing — all nodes collaboratively relay all traffic using cooperative combining. This means the network self-heals instantly when nodes join, leave, or are destroyed. Tested with 800+ nodes. Network formation in under 5 seconds.
Anti-jam C2 for UAS (2025): New waveform specifically for drone command and control with anti-jam uplink alongside high- throughput video/sensor downlink. Lowest latency in the industry. This directly addresses the DDG Phase II EW requirement.
Mobilicom
| Detail | Value |
|---|---|
| HQ | Israel / USA |
| Blue UAS | Framework component (SkyHopper) |
| Products | SkyHopper PRO, PRO Lite, PRO Micro |
| Key Feature | Encrypted, cybersecure drone datalinks |
| Partnership | ARK Electronics — affordable AI drone solutions |
| NDAA | Blue UAS Framework listed |
Turkish Manufacturers
Aselsan
Turkey's largest defense electronics company. Produces military- grade communications, EW systems, and radar. Supplies datalinks for Baykar TB2/TB3 and TAI ANKA platforms. Export-controlled.
TUALCOM
Stackable data acquisition and telemetry suites for UAS. Integrated with Turkish military platforms.
Meteksan
AKSON C-Band datalink (announced Nov 2025). Turkish defense communications.
Fiber-Optic — The EW-Immune Option
Fiber-optic FPV eliminates RF entirely. Video and control signals travel through a thin optical fiber trailed behind the drone. Zero RF emissions means zero detectability and complete immunity to electronic warfare jamming.
Key players: - Kela Technologies (Israel, In-Q-Tel backed) — fiber-optic technology partner for Neros Archer Fiber. World's first NDAA-compliant fiber-optic FPV. - SkyFall (Ukraine) — Fiber-optic FPV drones. Partnered with Skycutter for DDG Phase I (Shrike 10 Fiber won with 99.3 points). - 3DTech (Ukraine) — 3D-prints their own fiber spool casings. - Hasta (Ukraine) — Optically-guided FPV, 20–50 km range.
Tradeoff: Range is limited by spool length (physical fiber must trail behind the drone). The fiber can snag on obstacles. But for missions where EW immunity is paramount and range is known, fiber-optic is unbeatable.
DDG Phase I validated this: the fiber-optic Shrike dominated the competition. DDG Phase II's full EW environment will likely further advantage fiber-optic platforms.
NDAA RC & C2 Links
Most consumer RC links (ELRS, CRSF, FrSky) are Chinese-manufactured. For NDAA-compliant builds, the options narrow significantly.
Orqa Ghost — 2.4 GHz RC Link
EU-manufactured, NDAA-compliant 2.4 GHz RC link using LoRa-based chirp spread spectrum with adaptive FHSS. One of very few non-Chinese RC link options with both race and long-range performance.
| Parameter | Value |
|---|---|
| Frequency | 2.4 GHz ISM band |
| Modulation | Chirp Spread Spectrum + Adaptive FHSS (LoRa/FLRC) |
| Protocol | GHST (native), SBus, SRXL-2, PWM |
| Modes | Pure Race (222–250 Hz, <4 ms), Normal (~50 Hz), Long Range (~15 Hz) |
| Receivers | Átto (~0.6 g), Átto Duo (true diversity), Hybrid DUO/UNO V2 (combined VTx + Rx) |
| Tx Modules | JR bay, Lite bay, UberLite — all 350 mW |
Works with PX4 (RC_INPUT = GHST), QGroundControl,
Betaflight 4.3+, iNav, and ArduPilot. OpenTX 2.3.13+ recommended.
Orqa IRONghost — Licensed-Band C2
Defense-grade C2 link operating on licensed bands. Dual-radio architecture. Manufactured in EU, NDAA compliant.
| Parameter | Value |
|---|---|
| Spectrum | Licensed bands (contact Orqa for spectrum details) |
| Max Tx Power | 3W |
| Modulation | Proprietary, firmware-upgradeable |
| Video | Combined C2 Rx + 5.8 GHz analog VTx in single module |
| OTA Updates | Firmware during binding (<60 seconds) |
Paired with Orqa Tac.Ctrl (MAVLink, ATAK-compatible) and GCS-1 ground station for extended range and NLOS operations via aerial repeater. Requires licensed spectrum — coordinate with your RF authority before deployment.
Critical: Never power on without all antennas attached — 3W reflected back into amplifiers causes permanent damage.
Choosing Communications
-
Consumer FPV links (ELRS, CRSF, DJI) are NOT EW-resilient. They work in benign environments. They fail under deliberate jamming. Don't pretend otherwise.
-
Mesh radios add resilience but add SWaP. A Doodle Labs or Silvus radio is 100–300g and 5–15W. That's your biggest payload hit after the camera. Budget it.
-
Frequency diversity matters. A single-band radio can be jammed with a single jammer. Multi-band radios (TrellisWare UHF+L+S in one device) are harder to deny.
-
Non-routing mesh > traditional routing. TrellisWare's Barrage Relay and batman-adv (Doodle Labs) both eliminate single-point-of-failure routing tables. The network heals when nodes die.
-
For DDG Phase II / contested environments: TrellisWare anti-jam C2 or Sine Engineering Pasika are the purpose-built solutions. Fiber-optic for maximum EW immunity at the cost of range flexibility.
-
Combat-proven > spec sheet. Sine Engineering's Pasika has been tested against Russian EW daily for years. That validation data doesn't appear on any data sheet.
Meshtastic — LoRa Mesh as a Telemetry Backbone
Meshtastic is an open-source project that turns cheap LoRa radios (typically ESP32-based, sub-$30) into a self-healing encrypted mesh network. It was designed for off-grid human communication, but the architecture maps directly onto drone telemetry requirements for GPS-denied or RF-contested operations.
Why It Matters for Drones
Commercial drone links (GHST, ELRS, Crossfire) are point-to-point. When the GCS moves out of line-of-sight or the primary link is jammed, you lose everything. Meshtastic offers a different failure mode: packets route through whatever mesh nodes are still alive. A swarm of drones, each carrying a Meshtastic node, effectively forms its own relay network — each aircraft extending range for every other aircraft and the GCS.
Bandwidth is the constraint. Meshtastic at LoRa long-range settings moves roughly 1–5 kbps. That's enough for MAVLink heartbeat, GPS position, battery voltage, and flight mode — the minimum viable telemetry set — but not enough for video, high-rate sensor data, or fast command loops. Think of it as the backup nervous system, not the primary one.
AkitaEngineering Pattern (DroneBridge32 + Meshtastic)
The AkitaEngineering Meshtastic-Integration-for-DroneBridge32-Swarm project (GitHub, GPL-3.0) demonstrates the integration architecture: Arduino C++ on DroneBridge32 parses MAVLink from the FC, encrypts the telemetry payload with AES, and transmits over Meshtastic. Python ground station plugins receive, decrypt, display, and send control commands back. The project also implements geofencing at the mesh layer (drone enforces a fence independent of FC), dynamic channel switching based on link quality, and emergency landing commands that propagate through the mesh even under degraded conditions.
The code is a reference implementation, not production firmware — no versioned releases, minimal testing. But the architectural patterns are sound and directly applicable:
- MAVLink-over-Meshtastic bridge: parse MAVLink on the embedded side, serialize the essential fields, transmit over LoRa, reassemble on the GCS side and re-inject into Mission Planner or QGroundControl via UDP.
- Mesh-layer geofencing: the drone enforces its fence using its own GPS + the received boundary definition, independent of FC-level fence. This survives link degradation.
- Swarm broadcast commands: Meshtastic's broadcast addressing lets a single GCS message reach all nodes in the mesh simultaneously — useful for emergency stop, RTL, or mode change across a swarm.
- Dynamic channel switching: if interference is detected on the primary channel, both sides coordinate a channel hop through a pre-agreed fallback sequence.
Hardware
Any Meshtastic-compatible LoRa hardware works. The most drone-relevant options:
| Device | Weight | Form factor | Notes |
|---|---|---|---|
| LilyGo T-Beam | ~35g | Dev board | GPS onboard — useful for mesh relay nodes |
| Heltec LoRa 32 | ~8g | Compact | No GPS, pure mesh relay |
| RAK WisBlock | ~5–15g | Modular | Cleanest integration option for embedded builds |
| TTGO LoRa32 | ~10g | Compact | Common, well-supported |
All run at 915 MHz (US) or 868 MHz (EU). LoRa is ISM band — no license required, but power limits apply. At maximum legal EIRP, reliable range in open terrain is 5–15 km depending on antenna and terrain.
Integration Pattern for Wingman/Command
For a Wingman swarm deployment, the recommended architecture is a dual-link stack: GHST (or ELRS) as the primary high-bandwidth link for normal operations, Meshtastic as the secondary low-bandwidth link for telemetry heartbeat and emergency commands. The Meshtastic node on each drone runs independently of the primary link — it has its own power rail, its own CPU, and its own antenna. A primary link failure leaves the mesh intact.
The MAVLink-over-Meshtastic bridge runs as a process on the companion computer (APB or VOXL 2), feeding MAVLink telemetry from the FC to the Meshtastic serial interface, and forwarding received commands from the mesh back to the FC.
DroneEngage — Cellular Telemetry at Scale
DroneEngage is the ArduPilot project's cloud companion software, running on Raspberry Pi and providing unlimited-range telemetry, video streaming, and fleet management over 4G/LTE/5G. It is the Linux successor to Andruav (the Android companion app) and is actively developed under the ArduPilot umbrella.
What It Does
A Raspberry Pi connected to an ArduPilot or PX4 flight controller via UART/USB becomes a DroneEngage unit. The Pi connects to the internet via a USB LTE modem or HAT, and from that point the drone is reachable from anywhere with a browser. The web client provides a full ground control station: MAVLink telemetry, gamepad control, video streaming, geofencing, and swarm management.
Key capabilities:
- Unlimited telemetry range — the link goes through the internet, so range is only limited by cellular coverage. Relevant for BVLOS operations.
- MAVLink forwarding — DroneEngage forwards MAVLink transparently to Mission Planner, QGroundControl, or any UDP endpoint. No change to existing GCS workflows.
- Video streaming — supports Raspberry Pi cameras and USB cameras. Stream from one or multiple cameras simultaneously.
- Swarm operations — control multiple drones from a single interface with synchronized missions and hierarchical formation management.
- RC Blocking / TX Freeze — a local field pilot can override remote control; TX Freeze holds throttle position for safe long-range cruise without active stick input.
- Independent geofencing — enforced at the companion computer level, independent of the FC's fence logic. Survives FC configuration changes.
- Air-gap server — self-hostable backend for operations where cloud dependency is unacceptable (contested environments, classified sites, comms-restricted areas).
Hardware
DroneEngage runs on Raspberry Pi Zero W, Zero 2 W, Pi 3, 4, or 5. Weight matters:
| Platform | Weight (with LTE modem) | Use case |
|---|---|---|
| RPI Zero W | ~42g complete | Telemetry-only, minimal payload budget |
| RPI Zero 2 W + camera | ~52g | Telemetry + single camera stream |
| RPI 3/4 | ~85–95g | Multi-camera, heavier compute tasks |
The 42g complete-system figure for the Zero W is notable — it's competitive with dedicated telemetry radios when you factor in that you're also getting cloud connectivity, geofencing, and swarm management in the same package.
Andruav (Legacy Android Path)
Andruav is the predecessor: an Android phone running as a companion computer, connected to the FC over USB serial. The phone provides GPS, camera (FPV), cellular telemetry, and SMS-based control as a fallback. It's simpler to deploy for rapid prototyping — tape a phone to the airframe, connect USB, install the app — but less capable than DroneEngage for serious operations. Active development has shifted to DroneEngage; Andruav is maintained for existing deployments.
Air-Gap Deployment
For operations where cloud routing is off the table, DroneEngage supports a self-hosted server that can run on a Raspberry Pi 4 at the GCS site. All drone-to-GCS traffic routes through this local server rather than ArduPilot's cloud infrastructure. The protocol and security model are identical — the only change is the server endpoint. This makes DroneEngage viable for classified programs, contested environments, and locations with unreliable internet.
Integration with Command
DroneEngage's swarm logic and its air-gap server are directly relevant to Command's architecture. The hierarchical swarm formation model (lead drone + subordinates, commands propagate through the tree) maps to CBBA task allocation with a broadcast command layer on top. The air-gap server pattern is exactly what Command needs for field-deployable C&C without cloud dependency. The DroneEngage communication protocol is documented (see ArduPilot cloud docs) and could serve as a reference or direct integration point for Command's GCS-to-swarm link.
Last updated: March 2026
OpenHD — Open-Source Digital Video Link
OpenHD is the open-source answer to DJI O3, Walksnail Avatar, and HDZero. Instead of proprietary hardware running a proprietary protocol, it puts commodity RTL8812AU WiFi adapters into a one-way broadcast mode (wifibroadcast) that behaves like an analog video transmitter — no association handshake, no ACK, just raw packets into the air. The result is a long-range digital HD video link built from hardware you can source on AliExpress for under $50 total.
The suite transmits HD video, two-way UAV telemetry, two-way OpenHD telemetry (settings, range adjustments, channel changes, wifi modulation), and RC control signals — all multiplexed over a single RF channel, using MAVLink for the telemetry layer. The world record stands at 55km on a fixed-wing platform.
Why It Matters
Commercial HD video links (DJI O3, HDZero, Walksnail) cost $150–400 for the air unit alone, lock you into specific cameras, and ship from China. OpenHD costs $15–30 for the air unit, works with any CSI camera your SBC supports, and is open source down to the driver level. For teams that need HD video over ranges where commercial links won't reach, or who can't use Chinese-manufactured hardware, OpenHD is the practical path.
It's also the only digital FPV link where you can inspect and modify every layer of the stack — from the WiFi driver to the video codec to the OSD renderer.
How Wifibroadcast Works
Standard WiFi requires both ends to associate before exchanging data. That association process adds latency and creates a hard cliff at range — when signal degrades below the association threshold, the link drops entirely. Wifibroadcast bypasses association entirely. The air unit injects raw 802.11 frames directly into the driver; the ground unit captures all frames promiscuously regardless of source. This is the same transmission model as analog video: signal degrades gracefully with distance rather than falling off a cliff. FEC (forward error correction) across multiple packets replaces the ACK mechanism, so isolated packet loss doesn't corrupt the stream.
Hardware Stack
Air unit (minimum): Raspberry Pi Zero 2 (not the original Zero 1 — not supported), a dedicated BEC for the WiFi adapter, and a supported camera with the 22-pin type B CSI cable. The WiFi adapter must be soldered to the SBC's USB pads — vibration will disconnect any plug-in connection.
Air unit (better): Raspberry Pi CM4 with Ochin CM4 carrier board, plus a supported WiFi card. The CM4 enables dual camera, better thermal performance, and lower latency.
Ground station: A laptop with SecureBoot disabled, plus a supported WiFi adapter. X86 performance matters — faster hardware means lower decode latency. For lowest latency ground decode, a Radxa Rock 5 is the current recommendation — it hardware-encodes H.265 in real time.
WiFi adapters:
Supported chipsets: RTL8812AU, RTL8814AU, RTL8811AU, RTL8812BU, RTL8812EU. Top picks: ALFA AWUS036ACH (500mW, 8812AU, 2× RP-SMA), ASUS USB-AC56 (500mW, 8812AU, widely available), "Taobao card" (generic 8812AU, 500mW, 2× u.fl). Most users prefer 5.8GHz — cleaner spectrum than 2.4GHz and no interference with 2.4GHz RC transmitters. 5.8GHz does not offer better penetration but has cleaner channels in most operating environments.
The BLM8812EU is the newest and most capable chipset — higher sensitivity and better power output — but has no FCC/CE certification so import and use are at the operator's discretion.
Latency
Lowest latency requires OpenHD custom hardware (purpose-built SBC + camera combination), which can cut latency roughly in half compared to standard configurations. Second-lowest is achievable with the Radxa Rock5 on both air and ground. RPi Zero 2 builds have higher latency — usable for FPV but not competitive with commercial HD systems on this metric.
Practical glass-to-glass latency numbers for RPi-based builds: 100–150ms depending on resolution, codec, and SBC (OpenHD states "100ms glass-to-glass, most setups in the 125ms range"). Custom hardware targets sub-40ms. Rock5 sits between the two — hardware H.265 encode gives meaningfully lower latency than RPi.
Security
OpenHD provides link encryption with verification, ensuring the link cannot be overtaken by external signals. This is configurable through QOpenHD settings.
Dual Camera + Picture-in-Picture
OpenHD supports two CSI cameras simultaneously — typically forward view + downward/thermal. The ground station displays both via an adjustable picture-in-picture overlay in QOpenHD. Supported camera types include libcamera, veye, raspivid, USB, thermal, and unmanaged cameras.
MAVLink Integration
OpenHD passes MAVLink telemetry transparently over the wifibroadcast link. The air unit connects to the FC via UART (same as any telemetry radio — standard MAVLink port configuration). On the ground, QOpenHD receives and displays the telemetry, and also forwards the MAVLink stream over UDP so Mission Planner or QGroundControl can connect simultaneously. This makes OpenHD a functional telemetry radio replacement, not just a video link.
Integration with Wingman / Buddy
QOpenHD's Android app receives the ground station video and telemetry stream over WiFi or USB. For Wingman deployments, this means:
- Buddy can consume the MAVLink UDP stream from the OpenHD ground station without any modification to the existing telemetry pipeline — it connects as a second MAVLink client on the same forwarded stream.
- The video stream can be pulled via RTSP or UDP from the ground station and displayed in Buddy's live view alongside the GCS data.
- OpenHD's RC passthrough can operate alongside dedicated GHST/ELRS links — video and telemetry over OpenHD, high-rate control commands over the primary link.
Range Realities
55km is the record under ideal conditions — fixed-wing platform, high-gain directional antennas with tracker, line of sight, quiet spectrum.
Stock antennas (dipoles that come with the adapter): 1–3km. This is what OpenHD's own FAQ states. Do not expect more without upgrading antennas.
With upgraded ground antenna (14dBi panel + tracker): 8–15km. OpenHD's Friis calculation: 14dBi panel / 5dBi omni at 5.2GHz 200mW = 8.2km theoretical.
With high-gain ground antenna (17–23dBi + tracker): 15–20km+. Their calculation: 17dBi planar / 5dBi omni at 5.8GHz 500mW = 16.4km theoretical.
The range comes from the antenna, not the radio. See the Antennas chapter (Ch. 3) for the full breakdown of what antennas the OpenHD community uses and how antenna trackers work.
WiFi Adapter Diversity
OpenHD supports RX diversity — two WiFi adapters on the ground, one omni + one directional, with per-packet best-signal selection. However, do not mix chipsets or vendors for diversity (e.g. don't combine RTL8812AU with RTL8812BU). Use the same chipset on both ground adapters. New users should start with a single adapter and add diversity later.
See also: OpenHD Implementation Guide — step-by-step from hardware to first flight
OpenIPC — IP Camera Firmware for FPV
OpenIPC is the other major open-source digital FPV system, taking a fundamentally different approach from OpenHD. Instead of using a Raspberry Pi as the air unit, OpenIPC reflashes cheap IP camera boards ($15–30) and turns them into FPV video transmitters directly. The IP camera's SoC has a dedicated hardware video encoder, so you get lower latency (80ms at 1080p60) and dramatically lower power consumption (1.7W vs RPi's 5–10W) without a separate encoding step.
How It Differs from OpenHD
| OpenIPC | OpenHD | |
|---|---|---|
| Air unit | IP camera board ($15–30) | RPi Zero 2 / CM4 ($30–80) |
| Video encoder | SoC hardware H.265 | RPi GPU / software |
| Latency (1080p60) | ~80ms | 100–150ms |
| Power draw | 1.7W | 5–10W |
| Setup difficulty | Harder (SPI flash, UART, SoC-specific) | Easier (SD card) |
| Camera | IP camera sensors (IMX307, IMX335) | CSI cameras (Arducam, RPi HQ) |
| Transport | WFB-NG (wifibroadcast next gen) | wifibroadcast (original) |
Supported Hardware
The firmware runs on SoCs from HiSilicon, Goke (GK7205V200 — most common for FPV), SigmaStar (SSC338Q — recommended for new builds), Ingenic (T31), and several others. WiFi adapters: RTL8812AU and RTL8812EU (same as OpenHD). The community recommends buying adapters from the same batch in pairs.
For ground stations, OpenIPC supports SBC-based receivers (RunCam WiFiLink-RX, Emax Wyvern Link, Radxa Zero3) and PixelPilot — an Android app for Snapdragon devices that also works on Meta Quest VR headsets.
Key Software
- Majestic — the primary video streamer (replaces GStreamer on the IP camera SoC)
- WFB-NG — wifibroadcast next generation, the RF transport layer
- divinus — open-source multi-platform streamer alternative (MIT, 62★)
- smolrtsp — lightweight RTSP server library (MIT, 427★) — useful for any embedded video streaming
- ipctool — identifies unknown IP camera hardware (SoC, sensor, flash chip)
When to Choose OpenIPC over OpenHD
Choose OpenIPC when weight and power are critical (sub-250g builds, long-endurance fixed wings), when you want the lowest possible latency for FPV racing/freestyle, or when you need night vision on a budget (IMX307 sensor with F0.95 lens). Choose OpenHD when you want easier setup, broader ecosystem support, or need features like dual camera PiP and RC control over the same link.
Important: Military Use Prohibited
OpenIPC's license (MIT) includes an explicit restriction: "The use of the OpenIPC project and its components for military purposes is not permitted." This is not a standard MIT clause — it's a project-specific addition. If your use case involves military or defense applications, OpenHD (GPL-3.0, no military restriction) or a commercial solution is the appropriate path.
Repository: github.com/OpenIPC (1.9K★, 120 repos, MIT)
Companion Computers — When the FC Isn't Enough
Part 6 — Components When you need AI, computer vision, SLAM, or ROS on a drone, you add a companion computer. This is the compute layer between the flight controller and intelligence.
When You Need One
A flight controller runs the stabilization loop — PID control, motor mixing, sensor fusion for attitude. It doesn't run neural networks, process camera feeds, execute ROS nodes, or make autonomous decisions beyond basic waypoint navigation.
When your mission requires object detection, visual-inertial odometry, SLAM, AI-driven analysis, swarm coordination, or onboard data processing, you need a companion computer.
The companion computer talks to the FC over MAVLink (UART or Ethernet) and handles everything the FC can't.
ModalAI — The Blue UAS Standard
ModalAI holds 16 Blue UAS Framework listings — more than any other single manufacturer. Their VOXL 2 platform is the reference companion computer for PX4-based autonomous drones.
VOXL 2
| Detail | Value |
|---|---|
| HQ | San Diego, CA, USA |
| Blue UAS | 16 Framework components |
| NDAA | FY20 §848 compliant, assembled in USA |
| Processor | Qualcomm QRB5165 (8-core, 2.84 GHz) |
| AI | 15+ TOPS (GPU + DSP combined) |
| Camera Inputs | 7× MIPI CSI-2 (supports FLIR Lepton/Boson) |
| Weight | 16g (module only) |
| Software | PX4 (native), VOXL SDK, ROS, OpenCV, TensorFlow Lite |
| GPS-Denied | VIO, VOA, SLAM built-in |
| Connectivity | 5G option |
| Price | ~$1,199 |
VOXL 2 runs PX4 natively — it IS the flight controller AND the companion computer in one module. This eliminates the FC-to- companion serial bottleneck entirely.
VOXL 2 Mini
Same QRB5165 processor in a smaller form factor: 11g, 42mm×42mm (30.5mm standard mounting holes). 4× MIPI camera inputs. Designed for sub-250g drone builds.
Starling 2 / Starling 2 Max
Pre-integrated VOXL 2 development drones: - Starling 2: 280g, 40 min indoor SLAM flight - Starling 2 Max: 500g, 55 min outdoor, 500g payload capacity
ModalAI Sentinel
Defense-oriented configuration with enhanced security features.
NVIDIA Jetson Ecosystem
NVIDIA Jetson is the dominant GPU compute platform for onboard AI. The Jetson module provides the raw compute; a carrier board provides the I/O, power regulation, and physical interface to the drone.
Jetson Modules
| Module | AI Performance | Power | Memory | Price | Status |
|---|---|---|---|---|---|
| Orin Nano 8GB | 67 TOPS | 7–25W | 8 GB | ~$249 (dev kit) | Entry-level UAS AI |
| Orin NX 16GB | 157 TOPS (JetPack 6.2 Super MAXN) | 10–40W | 16 GB | ~$699 | Primary UAS companion compute |
| AGX Thor | 2,070 FP4 TFLOPS | Higher | 128 GB | Defense tier | Heavy UAS / ground station |
The Orin NX 16GB at 157 TOPS is the sweet spot for most drone AI applications — enough to run real-time object detection, tracking, and VIO simultaneously.
NDAA-Compliant Jetson Carriers (Critical Layer)
The Jetson module is NVIDIA-manufactured (Taiwan/USA). The carrier board determines NDAA compliance. Chinese-made carriers are NOT compliant.
ARK Electronics Carriers
| Product | Key Feature |
|---|---|
| ARK Just a Jetson | NDAA, made in USA. 75V direct battery input (!), built-in IMU, open-source. WiFi 6E/BT 5.3 M.2 option with Remote ID. NDAA bundles with USA-made Jetson + Swissbit SSD. |
| ARK Jetson PAB Carrier | Orin NX/Nano + any PAB flight controller (inc. ARKV6X). 90W redundant power across 3 inputs. JetPack 6.2 w/ Super MAXN = 157 TOPS. Can run LLMs on-device. |
| ARK VOXL2 RTK PAB Carrier | ModalAI VOXL2 + built-in RTK GNSS. Best of both worlds. Blue UAS Framework listed. |
ARK's 75V direct battery input on the Just a Jetson is a significant design choice — it means you can power the companion computer directly from a 6S–18S flight battery without a separate BEC or voltage regulator. One less failure point.
Other Carriers
| Product | HQ | Key Feature |
|---|---|---|
| Neousys FLYC-300 | Taiwan | Orin NX, 100 TOPS, 2× GigE, CAN, 4S-14S via XT30, -25°C to 70°C |
| Forecr DSBOARD-ORNXS | Turkey | Compact Orin NX/Nano, 2× GigE, CAN, 9-28V, -25°C to 85°C |
Auterion Skynode
Skynode deserves mention here as a converged FC + companion computer running AuterionOS (Linux). See the Flight Controllers chapter for full specs. 50,000+ deployed. Runs PX4 with containerized applications, ROS 2, and Auterion SDK.
CubePilot Herelink
Not a traditional companion computer but an integrated GCS + video + control system. The Herelink ground unit + air unit provides HD video streaming, RC control, and a touchscreen interface in one package. Widely used in ArduPilot commercial builds. Australian-made (verify specific component origins).
Raspberry Pi (Context)
Raspberry Pi 5 and CM4 are widely used as companion computers in open-source UAS builds. Low cost (~$80), large community, extensive software support. NOT NDAA compliant (UK design, various manufacturing origins). The ARK Pi6X integrates a CM4 with an ARKV6X flight controller on a single NDAA-compliant board — the cleanest path to using Pi compute in a compliant build.
Orqa DTK APB
The DTK APB takes the converged approach to an extreme: an STM32H743 flight controller and an NXP i.MX8M Plus Linux SBC on a single 65×40 mm board at 50 grams. The FC side runs PX4, ArduPilot, iNav, or Betaflight. The SOC side runs Orqa's Yocto Linux with a 2.25 TOPS NPU, dual 4-lane MIPI-CSI camera inputs (one supporting analog CVBS via ADV7282), an H.265 hardware encoder at 1080p60, hardware OSD (MAX7456 emulation), CAN bus, and a PCIe expansion slot. FC-to-SOC communication runs over internal UART and CAN — no external wiring.
| Detail | Value |
|---|---|
| HQ | Osijek, Croatia |
| SOC | NXP i.MX8M Plus (4x Cortex-A53, Cortex-M7) |
| FC MCU | STM32H743 |
| NPU | 2.25 TOPS |
| RAM / Storage | 4 GB LPDDR4 / 4 GB eMMC + micro-SD |
| Camera Inputs | 2x 4-lane MIPI-CSI 2 |
| Video Encoder | H.265 / H.264, 1080p @ 60fps |
| Sensors | ICM42605 IMU, DPS310 barometer |
| Power | 2S–8S battery or USB-C PD (60 W max) |
| Weight | 50 g |
| NDAA | Compliant — EU manufactured |
The APB's sweet spot is FPV builds that need onboard AI, computer vision, or video processing without the wiring overhead of a separate companion board. The 2.25 TOPS NPU handles lightweight inference (object classification, pixel tracking) while the hardware encoder can stream processed video back through the analog OSD path to existing FPV goggles. Where VOXL 2 targets the autonomous PX4 market and Jetson targets heavy ML workloads, the APB targets the FPV-first operator who needs compute without leaving the analog video ecosystem.
The Architecture Decision
| Approach | Example | Pros | Cons |
|---|---|---|---|
| Separate FC + companion | ARKV6X + Jetson Orin NX | Maximum flexibility, hot-swap compute | Wiring complexity, serial bottleneck |
| Converged FC + compute | ModalAI VOXL 2, Auterion Skynode, Orqa DTK APB | Single board, no bottleneck, lighter | Less flexible, vendor lock-in |
| FC + carrier board | ARKV6X + ARK Jetson PAB Carrier | Best of both — PAB standard allows swapping either | Most complex physically |
For the AI Wingman architecture, VOXL 2 is the primary PX4 integration target (converged approach). The Orqa DTK APB (STM32H7 FC + i.MX8M Plus companion) is the converged development hardware — same single-board philosophy as VOXL 2 but with FPV-native features (analog video I/O, hardware OSD, multi-firmware FC support).
Choosing a Companion Computer
-
Start with your AI workload. Object detection at 30fps needs ~10+ TOPS. VIO + detection + tracking simultaneously needs 40+. LLM inference on-device needs 100+.
-
Power budget matters more than specs. A Jetson Orin NX at 25W on a 5" FPV quad is a 15-20% hit to flight time. Plan accordingly.
-
NDAA compliance is in the carrier, not the module. The Jetson module itself is fine. The carrier board you mount it on determines compliance. Use ARK carriers for NDAA builds.
-
Camera interface determines capability. MIPI CSI-2 is the standard. Count how many camera inputs you need (stereo VIO = 2, plus thermal = 3, plus downward flow = 4) and match to the platform's MIPI port count.
-
For NDAA builds: ModalAI VOXL 2 (Blue UAS, converged) or ARK Just a Jetson / Jetson PAB Carrier (NDAA, modular).
-
For FPV builds that need compute: Orqa DTK APB. It's the only converged FC + companion that keeps you in the analog video ecosystem — hardware OSD, CVBS camera input, and an encoder that can process video on-board without replacing your existing FPV stack. 2.25 TOPS NPU won't run heavy detection models, but it handles classification, tracking, and sensor fusion at the edge.
-
For long-range telemetry and fleet management without onboard AI: DroneEngage on RPI Zero W. 42g complete, cellular, swarm-capable, air-gap deployable. If the requirement is BVLOS telemetry and multi-drone coordination rather than onboard inference, this is the right answer.
DroneEngage — Cellular Companion Software
DroneEngage is not a hardware platform — it's companion computer software that turns a Raspberry Pi into a cloud-connected ground link. Developed under the ArduPilot umbrella, it runs alongside any ArduPilot or PX4 flight controller and provides cellular telemetry, video streaming, and swarm management over 4G/LTE/5G.
It answers the question of what software to run on a generic Raspberry Pi when the primary requirement is long-range telemetry and fleet management rather than onboard AI.
Architecture
A Raspberry Pi connects to the FC over UART or USB, connects to the internet via a USB LTE modem, and runs the DroneEngage agent. From that point the drone is reachable from any browser. The web client handles MAVLink telemetry, gamepad RC, video feeds, geofencing, and swarm coordination. DroneEngage also forwards MAVLink transparently over UDP to Mission Planner or QGroundControl — no change to existing GCS workflows.
Weight
| Config | Total weight | Capability |
|---|---|---|
| RPI Zero W + LTE modem | 42g | Full telemetry, cloud GCS, geofencing, swarm |
| RPI Zero 2 W + modem + camera | 52g | Above + live video stream |
| RPI 4 + modem | ~90g | Multi-camera, heavier compute |
42 grams for unlimited-range telemetry, independent geofencing, RC blocking, and swarm coordination is competitive with dedicated telemetry radios — and those don't include cloud GCS or swarm management.
Key Features
Air-gap server: fully self-hosted backend. All drone↔GCS traffic routes through a local Raspberry Pi 4 at the GCS site rather than ArduPilot's cloud. Identical protocol and security model. Viable for contested environments, classified programs, and field sites without reliable internet.
RC Blocking / TX Freeze: local field pilot hardware override; TX Freeze holds current throttle for long-range cruise without active stick input.
Swarm operations: hierarchical formation management, synchronized missions, single-interface multi-drone control. Developer guide documents the swarm logic — maps directly to CBBA task allocation with a broadcast command layer on top.
GPS injection: companion can inject GNSS corrections into the FC — relevant for Hangar's preflight RTK workflow.
Andruav (Android Predecessor)
Andruav is the original version: an Android phone as companion computer, connected to the FC over USB serial. Phone provides GPS, FPV camera, 4G telemetry, and SMS fallback control. Still maintained; new development is on DroneEngage. Useful for rapid prototyping where Pi + LTE modem overhead isn't justified.
Last updated: March 2026
Counter-UAS — The Other Side of the Problem
Part 6 — Components If you build drones, you need to understand what defeats them. Counter-UAS technology defines the threat environment your systems must survive in.
Why Drone Operators Need to Understand C-UAS
Every drone operator exists in an environment where someone may be trying to stop them. Military operators face dedicated EW and C-UAS systems. Commercial operators face regulations, geofencing, and increasingly — active detection systems around airports, prisons, stadiums, and critical infrastructure.
Understanding C-UAS isn't about building countermeasures. It's about understanding the threat your drone faces and designing systems that survive it. The Handbook's unsolved-problems chapter covers the theoretical challenges. This chapter covers the products.
Detection Methods
C-UAS systems detect drones through four primary methods, often combined in a single system:
| Method | How It Works | Strengths | Weaknesses |
|---|---|---|---|
| RF Detection | Scans for known drone control/video frequencies | Passive (no emissions), identifies protocol/manufacturer | Fails against fiber-optic or autonomous drones |
| Radar | Active electromagnetic pulses detect flying objects | Works in all weather, long range, 3D tracking | False positives (birds), expensive, active emission |
| Optical/Thermal | Cameras with AI identify drone silhouettes | Visual confirmation, works against RF-silent drones | Weather-dependent, range-limited, compute-intensive |
| Acoustic | Microphone arrays detect propeller noise | Passive, works in RF-denied environments | Short range, high false positive in noisy environments |
Modern C-UAS systems fuse multiple detection methods to reduce false positives. DroneShield's SensorFusionAI and D-Fend's EnforceAir both use multi-sensor fusion as their core approach.
Defeat Methods
| Method | How It Works | Legal Status |
|---|---|---|
| RF Jamming | Overwhelms drone control/video frequencies | Military/LE only (illegal for civilians in most jurisdictions) |
| GPS Spoofing | Sends false GPS signals to confuse navigation | Military only — highly regulated |
| Protocol Manipulation | Exploits drone communication protocols to take control | Military/LE only — cyber-attack classification |
| Kinetic Interceptor | Physical interception (net guns, interceptor drones, directed energy) | Varies — some commercial options legal |
| High-Power Microwave | Directed energy to fry drone electronics | Military only |
Legal reality: In most countries, only military and authorized law enforcement can actively defeat drones. Civilians can detect and report, but cannot jam, spoof, or intercept. Know your jurisdiction.
Major C-UAS Manufacturers
DroneShield (Australia/USA)
The most widely deployed commercial C-UAS company. ASX-listed (DRO).
| Detail | Value |
|---|---|
| HQ | Sydney, Australia / Virginia, USA |
| Stock | ASX: DRO |
| Approach | RF detection + AI + optional jamming |
| AI Engine | SensorFusionAI — fuses RF, radar, optical, ADS-B data |
| Contracts | $48M+ cumulative with single Asia-Pacific reseller; NATO eastern flank C2E deployment |
Product Line:
| Product | Type | Description |
|---|---|---|
| DroneSentry | Fixed site | Autonomous C-UAS: radar + RF + cameras + optional DroneCannon jamming. Anti-swarming capable. |
| DroneSentry-X Mk2 | Mobile/expeditionary | Vehicle-mounted or pop-up. RFAI detection + RFAI-ATK defeat. First C-UAS with integrated RF attack. |
| DroneSentry-C2 | Software platform | Command and control. SensorFusionAI. Integrates third-party sensors via RESTful API. |
| DroneSentry-C2 Enterprise | Network C2 | Multi-site unified monitoring. Critical infrastructure networks. |
| DroneGun Mk4 | Handheld jammer | Point-and-shoot RF disruption. Military/LE only. |
| DroneGun Tactical | Compact jammer | Smaller form factor handheld. |
| RfPatrol Mk2 | Body-worn detector | Passive RF detection, real-time alerts. Wearable. |
| DroneOptID | AI software | Camera-agnostic computer vision for drone detection/tracking. |
DroneShield integrates partners including RADA (AESA radar), FLIR (thermal cameras), Echodyne (metamaterial radar), Bosch, and Sentrycs (protocol-level cyber takeover).
Dedrone (Axon)
Acquired by Axon (TASER parent company). RF + radar + acoustic + optical sensor fusion. Strong in law enforcement and critical infrastructure protection. US/German operations.
D-Fend Solutions (Israel)
| Detail | Value |
|---|---|
| HQ | Israel |
| Product | EnforceAir |
| Approach | Cyber C-UAS — protocol manipulation for controlled takeover |
| Key Feature | Takes control of hostile drone, forces controlled landing |
| Advantage | Non-kinetic, non-jamming — doesn't disrupt friendly RF |
EnforceAir is unique in the C-UAS space because it doesn't jam. It exploits drone communication protocols to take control of the drone and land it safely. This avoids the collateral damage of broadband jamming (which disrupts all RF in the area, including friendly communications).
Department 13 (USA/Australia)
| Detail | Value |
|---|---|
| Product | MESMER |
| Approach | Protocol manipulation — similar to D-Fend |
| Key Feature | Takes over drone control without jamming |
Citadel Defense (USA)
| Detail | Value |
|---|---|
| Product | Titan |
| Approach | AI-powered C-UAS |
| Key Feature | Autonomous threat assessment and response |
Sentrycs (Israel)
Protocol-level cyber takeover. Integrated into DroneShield's DroneSentry platform. Controlled landing and forensic capabilities.
Robotican (Israel)
| Detail | Value |
|---|---|
| Product | Goshawk |
| Type | Kinetic interceptor drone |
| Approach | Autonomous aerial intercept — drone catches drone |
| Comms | Uses Elsight Halo for C2 |
Goshawk represents the kinetic interceptor approach — an autonomous drone designed to physically intercept hostile drones. This bypasses EW countermeasures entirely since the interceptor is autonomous.
The Ukrainian C-UAS Laboratory
Ukraine operates the most intense C-UAS environment on earth. Both sides deploy extensive EW and C-UAS capabilities, creating a continuous adaptation cycle:
- Russian EW systems jam GPS, spoof navigation, disrupt C2 links
- Ukrainian drones adapt (fiber-optic, FHSS, autonomous terminal guidance)
- Russia adds rear-facing cameras and altitude-change sensors to Shaheds
- Ukrainian interceptor drones (Wild Hornets Sting, Motor-G Vandal-powered) evolve to counter evasive maneuvers
This cycle produces more C-UAS innovation per month than any formal defense program produces per year. The lessons flow directly into Western C-UAS and counter-counter-UAS development.
Implications for Drone Operators
-
Consumer RF links are trivially defeated. DJI, ELRS, CRSF — all operate on known frequencies with known protocols. Any competent C-UAS system will detect and can disrupt them.
-
Autonomy is the counter to C-UAS. A drone that can complete its mission without a continuous RF link (autonomous navigation, onboard processing) is inherently harder to defeat than one that requires constant pilot control.
-
Fiber-optic is the ultimate C-UAS counter. No RF to detect, jam, or spoof. The C-UAS response to fiber-optic drones must be kinetic (interceptor drones, nets, directed energy) or optical (visual detection + tracking).
-
Know the threat environment before you fly. If you're operating near military installations, prisons, airports, or large events, assume C-UAS systems are present.
-
C-UAS drives drone design. The reason tactical drones need EW-resilient comms, GPS-denied navigation, and onboard autonomy is specifically because C-UAS systems exist and are improving rapidly. Design for the threat, not for the spec sheet.
Last updated: March 2026
Detect-and-Avoid (DAA) Integration
Detect-and-Avoid is a prerequisite for FAA Part 108 BVLOS Permit operations and a practical necessity for any flight in shared airspace. This guide covers the hardware options, wiring, and firmware configuration for DIY DAA implementation on ArduPilot and PX4 platforms.
What DAA Needs to Detect
Not all aircraft broadcast their position. The DAA problem has two different difficulty levels:
Equipped aircraft (ADS-B Out): Commercial airliners, most turboprops, most general aviation aircraft, and many helicopters broadcast ADS-B Out — GPS position, altitude, heading, speed, and tail number on 1090MHz. This is detectable at ranges of 20–150km depending on altitude and antenna. ADS-B In receivers solve this problem inexpensively.
Unequipped aircraft: Gliders, ultralights, older GA aircraft, other drones, low-flying helicopters, agricultural aircraft. No broadcast, no detection without active sensing (radar, optical, acoustic). This is the hard problem. Part 108 does not require detection of unequipped aircraft — the regulatory approach is procedural deconfliction (fly at appropriate times and places) rather than technology.
A realistic DAA system for a Group 1 UAS addresses equipped aircraft. For unequipped aircraft, awareness and operational procedures are the current state of the art.
ADS-B In: Detecting Equipped Aircraft
Hardware Options
| Receiver | Weight | Power | Interface | Price | Notes |
|---|---|---|---|---|---|
| uAvionix Ping2020i | 16g | 1.5W | UART (MAVLink) | ~$600 | Industry standard; ArduPilot native; dual band (978/1090MHz) |
| uAvionix Ping1090i | 12g | 0.8W | UART (MAVLink) | ~$400 | 1090MHz only; no UAT (978MHz) |
| mRo ACSP7 | 8g | 0.4W | UART | ~$200 | Compact; ArduPilot compatible |
| Sagetech MXS | 55g | 4W | UART/RS-232 | ~$1,500 | Full transceiver (In + Out); DO-160 qualified |
| Radionics RX-978 | 22g | 1.2W | UART | ~$300 | UAT (978MHz) only; US domestic focus |
For most DIY BVLOS platforms, the uAvionix Ping2020i is the standard choice — dual-band, ArduPilot native, and a well-established track record in FAA BEYOND program operations.
ADS-B Bands
- 1090MHz (Mode S/ES): International standard. Required for aircraft >12,500 lbs and above FL180. Nearly all commercial aviation. Global use.
- 978MHz (UAT): US domestic only, below FL180. General aviation and hobbyists. Only detectable in the continental US.
For US domestic BVLOS: use a dual-band receiver to catch both. For international operations: 1090MHz only.
Wiring
Connect to any free FC UART. The Ping2020i uses a standard UART interface:
FC UART TX → Ping RX
FC UART RX → Ping TX
FC GND → Ping GND
5V → Ping power (from dedicated BEC, not FC 5V pin — draws up to 300mA)
The receiver antenna should be mounted with clear sky view — away from carbon fiber (RF-opaque), away from power leads, and with the antenna plane horizontal for omnidirectional coverage. A 1/4-wave whip or blade antenna works; a patch or helical antenna provides better gain in one direction.
ArduPilot Configuration
# Enable ADS-B
ADSB_ENABLE = 1
ADSB_TYPE = 1 # uAvionix Ping or compatible MAVLink
SERIAL3_PROTOCOL = 1 # (or whichever UART you wired to)
SERIAL3_BAUD = 57600
# Avoidance behavior
AVOID_ENABLE = 3 # Enable avoidance for proximity and fence
AVD_ENABLE = 1 # ADS-B avoidance enabled
AVD_F_ACTION = 2 # 0=None, 1=Report only, 2=Climb, 3=Move horizontally, 4=Move perpendicularly
AVD_F_WARN_TIME = 30 # Warn N seconds before threat
AVD_F_DIST_XY = 200 # Horizontal distance threshold (meters)
AVD_F_DIST_Z = 30 # Vertical distance threshold (meters)
AVD_W_ACTION = 1 # Warning-level action (report only)
What happens on a threat detection:
1. A target with projected intercept appears in the ADS-B feed
2. ArduPilot reports the threat to GCS (visible in Mission Planner's Status tab as ADSB_VEHICLE)
3. If AVD_F_ACTION = 2 (climb), ArduPilot automatically commands a climb at a rate determined by the threat severity
4. The operator is notified via GCS HUD
Tuning the thresholds: The defaults are conservative — 200m horizontal and 30m vertical. In high-traffic airspace, these will generate many nuisance alerts. For low-traffic rural BVLOS, tighten to 100m/20m to reduce false positives while maintaining a meaningful safety margin.
PX4 Configuration
PX4 uses the px4-adsb driver and uORB messaging:
adsb start
param set ADSB_ICAO_ID 1234567 # Your aircraft ICAO ID
param set ADSB_SQUAWK 1200 # VFR squawk code
param set ADSB_EMERGC 0 # No emergency
PX4's avoidance integration requires the companion computer running a collision avoidance algorithm (via MAVROS or PX4 external avoidance) — PX4 does not handle avoidance autonomously the way ArduPilot does. For DIY DAA without a companion computer, ArduPilot is simpler.
Radar-Based Obstacle Avoidance
Radar detects non-ADS-B objects: terrain, power lines, buildings, birds, other drones. The detection range and accuracy depend heavily on the sensor's beam pattern and the target's radar cross-section.
Hardware Options
| Sensor | Range | Update Rate | Mass | Power | Interface | Notes |
|---|---|---|---|---|---|---|
| Ainstein US-D1 | 0.5–50m | 100Hz | 65g | 1W | UART/CAN | Altitude radar; widely used in ArduPilot for terrain following |
| Ainstein US-1 | 0.5–50m | 100Hz | 65g | 1W | UART | Short-range, good below canopy |
| LeddarOne | 0.05–40m | 100Hz | 35g | 1.5W | UART | Narrow beam, good for landing |
| Lightware LW20/C | 0.01–100m | 388Hz | 30g | 0.5W | UART/I2C | Long-range LiDAR rangefinder |
| Benewake TFMini-S | 0.1–12m | 100Hz | 5g | 0.15W | UART/I2C | Ultra-compact, limited range |
| SF11/C (LiDAR) | 0.01–120m | 200Hz | 27g | 0.5W | UART | Robust, wide deployment |
Radar and LiDAR rangefinders measure distance in one direction (the beam direction). They're most useful for: - Terrain following / altitude hold: Downward-facing rangefinder gives AGL altitude independent of barometric pressure. Critical over water, canopy, and variable terrain. - Landing zone detection: Downward rangefinder prevents hard landings on sloped or uneven terrain. - Proximity sensing in one axis: Forward-facing rangefinder for wall-following or corridor navigation.
For full 360° obstacle avoidance, you need a scanning sensor (LiDAR) or an array of rangefinders. Scanning LiDARs add significant weight and cost — the Benewake CE30 or RPLIDAR S2 are lower-cost options, while the Ouster or Velodyne sensors are mapping-grade.
ArduPilot Rangefinder Configuration
RNGFND1_TYPE = 17 # Lightware serial, or see full list in AP docs
RNGFND1_ORIENT = 25 # 25 = Downward
RNGFND1_MIN_CM = 20
RNGFND1_MAX_CM = 10000 # 100m
SERIAL4_PROTOCOL = 9 # Rangefinder
SERIAL4_BAUD = 115200
# Enable terrain following
TERRAIN_ENABLE = 1
TERRAIN_FOLLOW = 1 # Follow terrain in AUTO mode
For obstacle avoidance (proximity sensing):
PRX1_TYPE = 4 # RPLidar
PRX1_ORIENT = 0 # Forward-facing
AVOID_ENABLE = 3
AVOID_DIST_MAX = 5 # Start avoiding when object within 5m
Radar Altimeter Integration
A dedicated radar altimeter is different from a rangefinder — it uses a wider beam pattern optimized for measuring height above ground (AGL), not object detection. The Ainstein US-D1 is the most widely used in ArduPilot BVLOS operations.
The advantage: over water, wetlands, canopy, and low-reflectance surfaces where barometric altimeters are unreliable and ultrasonic rangefinders struggle, a 24GHz FMCW radar altimeter gives consistent AGL altitude down to centimeter accuracy.
Typical BVLOS use: hover at a precise 20m AGL over varying terrain (riverbank survey, coastal mapping, pipeline inspection over varied ground cover) using the radar altimeter as the primary altitude reference in ALT_HOLD and AUTO modes.
Integration with the Full BVLOS Stack
In a BVLOS Part 108 operation, DAA is one component of a layered safety architecture:
Airspace awareness (LAANC, NOTAMs) ─── Preflight
ADS-B In ─────────────────────────────── In-flight (equipped traffic)
Procedural deconfliction ──────────────── In-flight (unequipped)
Radar altimeter ───────────────────────── In-flight (terrain)
Proximity LiDAR ───────────────────────── In-flight (objects)
Remote ID broadcast ───────────────────── All phases
C2 link monitoring ────────────────────── All phases
Lost link action ──────────────────────── Failsafe
No single sensor solves all of DAA. The practical minimum for a Part 108 Permit application is ADS-B In with active avoidance enabled, plus documented operational procedures for unequipped aircraft scenarios.
Logging and Reporting
ArduPilot logs all ADS-B events in the dataflash log. In Mission Planner: Ctrl+F → Logs → ADSB messages. This log is your evidence of DAA activity for any Part 108 reporting requirement.
Key fields logged per ADS-B contact: - ICAO address and callsign - Position at time of contact - Relative position and altitude - Threat classification (warning vs emergency) - Any avoidance action taken
Preserve flight logs for 90 days minimum for any BVLOS operation — this is consistent with Part 108's expected recordkeeping requirements and best practice for incident investigation.
Electronic Speed Controllers — The Firmware Matters
Part 6 — Components ESCs translate flight controller commands into motor speed. The firmware running on them determines capability, and the hardware origin determines compliance.
The Landscape
The ESC market split in two when BLHeli_32 was discontinued in June 2024 (closed-source, can no longer be updated). The hobby market migrated to AM32 (open-source, GPL) for 32-bit ESCs and Bluejay/BLHeli_S for 8-bit legacy hardware.
For NDAA compliance, the picture is simpler: almost every hobby ESC on the market is Chinese-manufactured. The parts-db has 148 ESCs — all from the GetFPV consumer catalog, all Chinese hardware. Three manufacturers are building NDAA-compliant alternatives.
NDAA-Compliant ESCs
ARK Electronics — ARK 4IN1 ESC CONS
| Detail | Value |
|---|---|
| HQ | USA |
| Blue UAS | Framework component |
| NDAA | Compliant, made in USA |
| Type | 4-in-1 ESC |
| Firmware | AM32 (open-source) |
| Voltage | 3-8S |
| Current | 50A continuous |
| Protocol | DroneCAN |
| Key Feature | Connectorized (no-solder) — designed for mass production |
| Manufacturing | USA |
ARK's connectorized design is significant — it eliminates soldering from the assembly process, enabling production-line manufacturing at scale. This directly supports the DDG goal of producing hundreds of thousands of drones.
Hargrave Technologies
| Detail | Value |
|---|---|
| HQ | Australia |
| NDAA | Compliant — Western-sourced components |
| Deployed | 10,000+ aircraft in 50+ countries |
| Recognition | Sovereign Capability Defence Grant recipient |
Product Line:
| Product | Key Feature |
|---|---|
| nanoDRIVE 4LPi | 4-in-1, DroneCAN/ARINC825/DShot/PWM, 60+ configurable params, dual-input priority, machine-mountable |
| microDRIVE LP | IP67 rated, FOCAL algorithm, 72-hour circular data logging |
| microFLUX 4LP/2MP | Smart power supply (power avionics, not ESC per se) |
Hargrave is the most mature NDAA-compliant ESC manufacturer by deployment count. Their DroneCAN support and industrial protocols (ARINC825) position them for defense and commercial platforms, not hobby builds.
Unusual Machines / Rotor Riot — Brave 55A ESC
| Detail | Value |
|---|---|
| HQ | USA (Orlando, FL) |
| Blue UAS | Framework component |
| NDAA | Compliant |
| Type | 4-in-1 ESC |
| Voltage | 3-8S |
| Current | 55A |
| Firmware | 32-bit |
| Manufacturing | USA |
| Customers | Performance Drone Works ($3.75M order), PBAS Tranche 1.1 selectees |
The Brave 55A pairs with the Brave F7 flight controller (F722/BMI270/BMP390) — a full NDAA-compliant flight stack from a single manufacturer.
Orqa 3030 4-in-1 ESC
| Detail | Value |
|---|---|
| HQ | Osijek, Croatia |
| NDAA | Compliant — EU manufactured |
| Current | 70A continuous, 80A burst (10s) |
| Voltage | 3S–6S |
| Firmware | AM32 (bi-directional DShot) |
| Protocols | DShot 300/600/1200 |
| Mounting | 30.5 × 30.5 mm |
| Weight | ~28 g |
Purpose-built to stack with the Orqa F405 3030 FC. Hard-mount the ESC, soft-mount the FC on top with included silicone gummies. JST-GH cable eliminates custom wiring between boards. AM32 supports RPM filtering in Betaflight via bi-directional DShot.
ESC Firmware Landscape
| Firmware | License | Status | Notes |
|---|---|---|---|
| BLHeli_S | Closed | Legacy | 8-bit, widely deployed, not updatable |
| Bluejay | GPL | Active | Open-source BLHeli_S alternative, active development |
| BLHeli_32 | Closed | Discontinued (June 2024) | Cannot be updated. Thousands of ESCs in field now unsupported |
| AM32 | GPL | Active | De facto 32-bit open-source standard. Used by ARK Electronics |
AM32 is the future for NDAA builds. Open-source firmware on NDAA-compliant hardware (ARK) gives full supply chain transparency with no proprietary firmware dependencies.
ESC-Configurator (esc-configurator.com) is the modern web-based tool for flashing BLHeli_S, Bluejay, and AM32 via WebSerial API. No app install needed.
The Compliance Gap
| Manufacturer | Origin | NDAA | Blue UAS | Price (4-in-1) |
|---|---|---|---|---|
| Chinese (T-Motor, Hobbywing, etc.) | China | NOT compliant | No | $30–80 |
| ARK Electronics | USA | Compliant | Framework | ~$200+ |
| Hargrave Technologies | Australia | Compliant | No (defense validated) | $300+ |
| Unusual Machines Brave | USA | Compliant | Framework | ~$150+ |
The price gap is 3–5× for NDAA-compliant ESCs. As with motors, any DDG Phase II competitor using Chinese ESCs will need to absorb this cost increase.
Choosing ESCs
-
Match current rating to your motors. ESC continuous amperage must exceed motor draw under load. Headroom matters — a 50A ESC running at 48A will thermal-throttle or fail.
-
Protocol matters. DShot is standard for Betaflight/iNav. DroneCAN is standard for PX4/ArduPilot. PWM is legacy.
-
4-in-1 vs. individual. 4-in-1 ESCs reduce wiring but create a single point of failure. Individual ESCs are heavier but individually replaceable. Defense platforms often prefer individual for field repairability.
-
Firmware is the capability. AM32 gives you RPM filtering, bidirectional DShot, and active development. BLHeli_32 is frozen. BLHeli_S works but is 8-bit limited.
-
For NDAA builds: ARK 4IN1 ESC CONS + AM32 is the cleanest path — open-source firmware on Blue UAS hardware.
Last updated: March 2026
Flight Controller Selection Framework
The Forge database has 300+ flight controllers. This guide isn't a spec comparison — it's the decision framework for narrowing that list to the three you should actually evaluate for your application.
Start with Firmware, Not Hardware
The single most important question is: which firmware do you need?
Your FC choice is constrained by firmware first and hardware second. A great H7 processor running the wrong firmware for your use case is worse than a modest F4 running the right one.
| Firmware | Best For | Avoid When |
|---|---|---|
| Betaflight | FPV freestyle, racing, manual-flight-first platforms | You need autonomous navigation, mission planning, or BVLOS |
| ArduPilot (ArduCopter, ArduPlane, ArduRover) | Autonomous missions, survey, BVLOS, complex integrations | You just want to fly FPV and don't need the complexity |
| iNav | Fixed-wing with GPS, long-range with return-to-home, middle ground | High-performance freestyle, defense/military applications |
| PX4 | Research, ROS2 integration, enterprise development | Most commercial operators — ArduPilot has better community support |
| Cleanflight | Legacy only; superseded by Betaflight | All new builds |
| KISS | Proprietary racing ecosystem | Any build requiring open-source flexibility |
Once you've picked firmware, the universe of compatible FCs narrows significantly. Most H7-based boards target Betaflight or ArduPilot; some support both.
MCU: F4 vs F7 vs H7
F4 (STM32F4xx)
Clock speed: 168MHz
RAM: 192KB
Best for: Most Betaflight builds, simple ArduPilot builds without heavy logging
F4 was the standard for 5 years. Still works perfectly for Betaflight freestyle and racing. The constraint: 8KB of SRAM for the logger means compressed logs that can miss fast events, and the 8kHz gyro loop is pushing the limit on an F4 — you'll see CPU usage warnings in Betaflight at 8kHz on most F4 boards.
Betaflight 4.4+ deprecated F4 support for some features (RPM filtering with 8 motors, 8kHz gyro loop stability). If you're building new, there's no good reason to choose F4 over H7 unless cost is the absolute constraint.
F7 (STM32F7xx)
Clock speed: 216MHz
RAM: 512KB
Best for: High-performance Betaflight builds; some ArduPilot builds
F7 hit the sweet spot for a couple of years. Faster than F4, more RAM, no longer the default choice now that H7 prices have dropped. Still a solid choice if you find a good F7 board at a good price.
H7 (STM32H7xx)
Clock speed: 480MHz
RAM: 1MB+
Best for: Everything that benefits from processing power — 8kHz+ gyro loops, heavy logging, ArduPilot with all features enabled, onboard AI inference
H7 is the current standard for mid-to-high-end builds. The extra headroom means: - 8kHz gyro loop with stable CPU usage in Betaflight - Full logging without compression - Room for additional processing (RPM telemetry, MAVLink, camera protocol) - ArduPilot AHRS computation at higher rates
Price premium over F4: $15–30 on a typical stack. Usually worth it.
IMU: Single vs Dual
Dual IMU means two separate inertial measurement units on the FC board. Benefits:
- Redundancy: If one IMU fails mid-flight, the FC continues operating on the second. Critical for BVLOS and commercial operations.
- Cross-checking: The FC can compare both IMUs and alert if they diverge — early warning of sensor degradation.
- Vibration isolation: Two IMUs can use different physical mounting — one soft-mounted for clean attitude estimate, one hard-mounted for fast transient detection.
ArduPilot uses dual IMU natively via INS_USE and INS_USE2 parameters. Betaflight acknowledges the second IMU but uses only one at a time.
When dual IMU matters: - Any BVLOS operation (single IMU failure = loss of aircraft) - Precision survey (IMU health affects data quality) - Commercial cargo (liability exposure for hardware failure) - >$2,000 platform value
When it doesn't matter: - FPV freestyle (crashes happen regardless; redundancy doesn't change the risk profile) - Racing (weight > redundancy) - Low-risk recreational builds
NDAA Compliance: What It Actually Means in Procurement
The National Defense Authorization Act restrictions on Chinese-manufactured technology affect drone procurement primarily for government, defense, and critical infrastructure customers.
What the restriction covers: - NDAA Section 848/899 prohibits DoD procurement of UAS manufactured in China, or using components from listed Chinese manufacturers (DJI, Dahua, Hikvision, Huawei, Hytera, and several others depending on the year's NDAA) - FAA Reauthorization Act extends similar restrictions to FAA and DHS use - Blue UAS Framework (DIU) identifies NDAA-compliant alternatives
What it means for FC selection: An FC is "NDAA compliant" if: - It's manufactured outside China (US, EU, Canada, Israel, Taiwan commonly) - Its MCU is not from a listed Chinese supplier (STMicroelectronics is French/Italian — compliant; some Chinese SoCs are not) - Its supporting components (IMU, barometer, compass) don't originate from listed entities
Most flight controllers from US-based companies (Pixhawk/Holybro when made in Taiwan/EU, Cube Pilot in Australia, mRo in the US, Emlid in Russia/Latvia — check current status) are NDAA compliant.
Practical check: Look at the Forge database entry for ndaa_compliant: true. For defense procurement, verify against the current Blue UAS Framework list maintained by the Defense Innovation Unit — the list updates annually and some previously-compliant manufacturers have been added or removed.
For commercial operations without government clients: NDAA compliance is a marketing differentiator, not a legal requirement. For government or defense contracts: it's a go/no-go criterion.
Peripheral Compatibility Matrix
The FC must physically support every peripheral you plan to use. Before finalizing a FC choice:
| Peripheral | Required FC Feature | Check |
|---|---|---|
| GPS (standard) | 1 UART | Almost universal |
| GPS (RTK) | 1 UART at 230400 baud + injection support | Verify baud rate support |
| Second GPS | 2nd UART | Many boards support; verify |
| Telemetry (MAVLink) | 1 UART | Almost universal |
| RC receiver (SBUS/ELRS) | SBUS/UART input | Standard |
| RC receiver (CRSF/ELRS) | UART (full-duplex) | Most modern boards |
| ESC (DShot + bidirectional) | Timer outputs on motor pins | Standard on F7/H7; verify on F4 |
| Optical flow sensor | I2C or UART | Verify pin availability |
| Rangefinder (UART) | 1 UART | Check total UART count |
| Companion computer | 1 high-speed UART (921600) | Check if baud rate is supported |
| ADS-B receiver | 1 UART | Check total UART count |
| Remote ID module | 1 UART | Check total UART count |
| CAN bus (DroneCAN) | CAN1 (and CAN2 for redundancy) | Check board spec |
| Current sensor | ADC input | Most boards, verify |
Count your UARTs. A fully-loaded survey platform (GPS + RTK corrections + MAVLink telemetry + companion computer + ADS-B + Remote ID) needs 5–6 UARTs. Many boards have 6–8; some have only 4. Running out of UARTs forces you into UART multiplexers or sacrificing a peripheral.
Evaluation Checklist
Use this checklist when evaluating a specific FC for a specific application:
Firmware support - [ ] Target firmware confirmed supported (check manufacturer firmware page, not just "compatible") - [ ] Firmware version matches minimum required version for your features
Processing - [ ] MCU generation (F4/F7/H7) sufficient for planned loop rates and features - [ ] RAM adequate for logging configuration
IMU - [ ] Single or dual IMU per risk profile requirement - [ ] IMU type known (ICM-42688P, ICM-42605, MPU-6000, BMI270 — affects filtering requirements)
Connectivity - [ ] UART count ≥ peripheral count - [ ] CAN bus (if needed) - [ ] I2C pins available - [ ] SPI available for fast peripherals
Power - [ ] Input voltage range covers your battery (4S = 16.8V, 6S = 25.2V) - [ ] Onboard BEC rated for your peripherals - [ ] Current sensor integrated or available
Physical - [ ] Mounting pattern matches frame (30.5×30.5, 20×20, 25.5×25.5 are common) - [ ] Stack height fits frame - [ ] Weight acceptable
Compliance (if required) - [ ] NDAA compliance verified against current Blue UAS list - [ ] Country of manufacture documented
Common Mistakes
Choosing the FC before choosing the firmware. Then discovering the FC has limited firmware support for your required features (e.g., no DroneCAN support, limited UART count for ArduPilot peripherals).
Buying an all-in-one stack for a complex build. AIO stacks (FC+ESC on one board) are great for 2"–5" FPV builds. For a survey platform with GPS, ADS-B, companion computer, and gimbal: use separate FC and ESC — it's much easier to troubleshoot when the units are separate.
Ignoring the BEC spec. An FC with a 1A BEC powering a Raspberry Pi Zero (350mA) + GPS (150mA) + receiver (200mA) = 700mA — close to the limit before adding a camera. The BEC gets warm, thermal throttles, and causes intermittent brownouts that look like software bugs.
Assuming dual IMU = better attitude estimation. Two identical IMUs at the same location produce two noisy measurements from the same vibration environment. The improvement comes from the redundancy and potential for cross-checking, not from statistical averaging of noise. For better attitude estimation, the answer is better vibration isolation and RPM filtering, not more IMUs.
Flight Controllers — The Brain of the Drone
Part 6 — Components The flight controller runs the stabilization loop, executes autonomous behaviors, and interfaces with every other system. Where it's manufactured determines compliance.
The Ecosystem
Flight controllers split into two firmware families: MSP-based (Betaflight, iNav) and MAVLink-based (ArduPilot, PX4). The Handbook's firmware chapters cover protocol details. This chapter covers the hardware — who makes it and what's NDAA compliant.
The parts-db has 420 FCs — good hobby coverage but weak on commercial and defense options. Most hobby FCs are Chinese- manufactured (MATEKF405, SpeedyBee F7, etc.) regardless of brand. The NDAA-compliant FC market is small but growing rapidly.
ARK Electronics — The NDAA Standard
ARK builds the most comprehensive NDAA-compliant drone electronics stack in the market. 7 products on the Blue UAS Framework. All made in USA. Open-source hardware and firmware (PX4, ArduPilot).
ARKV6X Flight Controller
| Detail | Value |
|---|---|
| Blue UAS | Framework listed |
| NDAA | Compliant, made in USA |
| MCU | STM32H743IIK6 |
| IMUs | Triple-synced: 2× ICM-42688-P + 1× IIM-42652 (industrial) |
| Barometer | BMP390 |
| Magnetometer | BMM150 |
| Form Factor | Pixhawk Autopilot Bus (PAB) |
| Firmware | PX4 (default), ArduPilot (supported) |
| Power | 5V, 500mA total (300mA main + 200mA heater) |
| Price | ~$320–$770 (depending on variant/bundle) |
ARKV6X Extended Range
Same platform with triple IIM-42653 industrial IMUs — 4000 dps gyro range, 32g accelerometer. Designed for high-vibration and high-G maneuvers (FPV, interceptors, aggressive flight profiles).
ARK FPV Flight Controller
NDAA-compliant FC with regulated 12V output for VTX and payloads. Betaflight support. Designed for the tactical FPV market.
ARK Pi6X / Pi6X Flow
Integrates ARKV6X with Raspberry Pi CM4 carrier, PAB power module, and 4-in-1 ESC on a single board. The Flow variant adds integrated optical flow sensors. Blue UAS Framework listed.
Full ARK Electronics Stack
| Product | Category | Blue UAS |
|---|---|---|
| ARKV6X | Flight Controller | Yes |
| ARKV6X Extended Range | Flight Controller (high-G) | Yes |
| ARK FPV FC | Flight Controller (Betaflight) | Yes |
| ARK Pi6X | FC + CM4 Carrier + ESC | Yes |
| ARK 4IN1 ESC CONS | ESC | Yes |
| ARK TESEO GPS | GPS Module | Yes |
| ARK Flow MR | Optical Flow Sensor | Yes |
| ARK M.2 LTE Module | Connectivity | Yes |
| ARK Just a Jetson | Jetson Carrier Board | NDAA |
| ARK Jetson PAB Carrier | Jetson + FC Carrier | NDAA |
| ARK VOXL2 RTK PAB Carrier | ModalAI VOXL2 Carrier | Blue UAS |
ARK + Mobilicom partnership for cybersecure AI drone solutions.
Auterion — Skynode / AuterionOS
| Detail | Value |
|---|---|
| HQ | USA / Switzerland |
| Blue UAS | Framework component (Skynode S) |
| Product | Skynode S (FC + mission computer) |
| Processor | ARM Cortex-A53 Quad @ 1.8 GHz |
| NPU | 2.3 TOPS |
| Software | AuterionOS (Linux), PX4, Auterion SDK, ROS 2, MAVLink |
| Deployed | 50,000+ Skynodes |
| Interfaces | USB-C, 2× MIPI-CSI, CAN, UART, SPI |
| Input Voltage | 12-36V |
| Weight | 38g |
| Mounting | 30.5mm × 30.5mm M3 |
Skynode is a converged FC + companion computer. AuterionOS runs PX4 natively with containerized applications. ROS 2 and TAK integration. DDG Phase I: Auterion placed top 5 (~77-80 points).
ModalAI — VOXL 2
VOXL 2 is technically a companion computer but runs PX4 natively, making it a converged FC + compute platform. See the companion computers section for full specs. 16 Blue UAS Framework components.
Other NDAA-Compliant FC Sources
mRo (mRobotics)
US-manufactured Pixhawk-compatible FCs. PixRacer Pro series. NDAA compliant. Smaller operation than ARK but established in the PX4 community.
CubePilot / Hex
| Detail | Value |
|---|---|
| HQ | Australia |
| Products | CubeOrange+, CubeOrange, Herelink GCS |
| Firmware | ArduPilot (primary), PX4 |
| NDAA | Australian manufacturing — likely compliant, verify |
CubePilot is the most widely used ArduPilot FC in commercial builds. The Herelink system (RC + video + GCS) is a popular integrated solution. Non-Chinese manufacturing (Australia/Taiwan — verify specific components).
Veronte / Embention
| Detail | Value |
|---|---|
| HQ | Spain |
| Product | Veronte Autopilot 1x |
| Key Feature | EASA certifiable, redundant architecture |
| Market | Industrial, defense, certified operations |
Spanish manufacturer targeting the certified/regulated drone market. Veronte is one of few FCs with a path to EASA type certification.
Orqa
| Detail | Value |
|---|---|
| HQ | Osijek, Croatia |
| NDAA | Compliant — EU manufactured |
F405 3030 — STM32F405, 30.5mm, 2S–6S, all JST-GH lockable
connectors (no soldering), MAX7456 + DisplayPort HD OSD, 8 PWM
outputs. Stacks directly onto Orqa 3030 ESC. ArduPilot board
target: OrcaF405Pro. DFU flash with with_bl.hex.
QuadCore H7 — STM32H743, ICM-42688-P, 30.5mm, 3S–6S. More flash, more UARTs, faster processing than F405. Same IMU as ARK FCs. Recommended for new NDAA builds needing headroom.
H7 WingCore — Purpose-built for fixed-wing/VTOL. Twin orthogonal ICM-42688, DPS310 baro, 160A current sensor, 10 servo outputs, 4 motor outputs with telemetry, up to 12S (50V). iNav preinstalled, ArduPilot available. Direct JST-GH connection to Orqa Hybrid VTx/C2 modules. 36.6 g.
Chinese FCs (Context — NOT NDAA)
The vast majority of hobby FCs are Chinese-manufactured: Matek, SpeedyBee, BetaFPV, Foxeer, etc. T-Motor also makes FCs. All entries in parts-db from the GetFPV catalog are Chinese hardware.
For operators without compliance requirements, these remain the most capable and cost-effective options. SpeedyBee's mobile app integration is the closest commercial competitor to Wingman Buddy's feature set.
All Chinese FC entries in the parts-db need compliance flags added: NOT NDAA COMPLIANT.
Choosing a Flight Controller
-
Firmware first. Decide between Betaflight/iNav (MSP, FPV/racing) and ArduPilot/PX4 (MAVLink, autonomous operations). The FC must support your firmware choice.
-
MCU determines capability. F4 (STM32F405) is legacy. F7 is current standard. H7 (STM32H743) is top-tier (more flash, faster processing, more UARTs).
-
IMU quality matters. BMI270 is the hobby standard. ICM-42688-P is better. IIM-42652/42653 is industrial-grade. Triple-redundant IMUs (ARK) enable voting and fault detection.
-
For NDAA builds: ARK ARKV6X + PX4 is the cleanest path. For Betaflight FPV: ARK FPV FC or Orqa QuadCore H7 / F405 3030 (EU-manufactured, JST-GH no-solder connectors). For converged compute: Auterion Skynode S or ModalAI VOXL 2. For fixed-wing: Orqa H7 WingCore (10 servo outputs, 12S, NDAA).
Last updated: March 2026
GNSS Receiver Quality and the Ecosystem Question
There is a version of this conversation that goes: "I bought an Emlid RS2 for $1,900. My Trimble dealer quoted me $27,000 for the R12i. Same centimeters, right?"
In clear sky, on a short baseline, with a single base station and a calm ionosphere, the answer is mostly yes. The gap widens significantly the moment any of those conditions change.
This isn't about brand loyalty or marketing. It's about understanding what the extra money actually buys, where the differences manifest, and why a drone operator specifically faces a different calculus than a land surveyor.
What's Actually Inside the Hardware
Antenna
The antenna is the first point of contact with the signal and one of the biggest differentiators between price tiers.
Consumer/prosumer antennas (Emlid RS2/RS3, ArduSimple, u-blox ZED-F9P breakouts): Patch antennas or small helical designs. Moderate phase center variation (PCV) — the electrical phase center of the antenna is not exactly at the mechanical center and varies by elevation angle and frequency. Cheap antennas have phase center variations of 5–15mm; high-quality geodetic antennas are calibrated to <1mm. Larger multipath rejection ratios on paper but tested in ideal bench conditions.
Geodetic antennas (Trimble Zephyr, Leica AS10, NovAtel VEXXIS): Choke-ring or pinwheel designs specifically engineered to reject multipath (signals reflecting off the ground and nearby surfaces). Precisely calibrated phase centers per frequency and elevation angle — corrections can be applied in processing. Calibration data is published in national databases (NGS for the US). When centimeter absolute accuracy matters, the antenna is often the binding constraint.
For drone applications specifically, the onboard antenna is a compromise regardless of manufacturer — it's small, surrounded by carbon fiber and electronics, and attached to a moving platform. The base station antenna is where geodetic quality matters.
Signal Tracking: L1/L2 vs All-Constellation All-Frequency
Emlid RS2/RS2+/M2: Tracks GPS L1/L2, GLONASS L1/L2, BeiDou B1I/B2I, Galileo E1/E5b. Often described as "multi-band." What it cannot track: GPS L5, GLONASS L3, BeiDou B2a/B3, Galileo E5a/E6.
Note on the "L5" label: Emlid receivers including the RS2 and RS3 have "L5" printed on the hardware. This caused significant controversy in the surveying community. What the RS2/RS3 actually tracks as its "L5" is Galileo E5b — not GPS L5 (1176.45 MHz). The receivers do not receive true GPS L5 RTK corrections. The RS4/RS4 Pro (released 2024) corrects this with genuine all-band tracking.
Trimble R12i: Tracks GPS L1/L2/L5, GLONASS L1/L2, BeiDou B1/B2/B3, Galileo E1/E5a/E5b/E6, NavIC L5, QZSS — the full set. This matters because: - L5 signals are newer, broadcast at higher power, and provide better noise performance than L1/L2 - More signals on more frequencies = more redundancy when any individual signal is blocked or degraded - L5 dramatically improves performance under canopy and in urban canyons
Processing Engine
The receiver's firmware processes raw observations into a position solution. This is proprietary and not well documented externally, but the difference shows in practice.
Trimble ProPoint (R12i): Trimble's flagship processing engine. Uses all available signals simultaneously including L5. Implements advanced multipath mitigation algorithms. Rebuilds the fix faster after signal blockage. Under full canopy, ProPoint continues to maintain fix in conditions where other receivers drop to float. Independent testers have reported the R12i maintaining fix under "full obstruction" conditions where every other receiver tested failed.
Standard u-blox processing (Emlid RS2/M2): The underlying chip is an u-blox ZED-F9P. Good — genuinely impressive for the price — but not in the same class as Trimble's proprietary processing for challenging environments. In open sky conditions on short baselines, the difference is minimal. Under partial canopy, near buildings, or at longer baselines, the gap opens.
The real-world benchmark result from the BBS study in Australia: in open and suburban conditions, the Emlid RS2 and Trimble R10 agreed to well under 1cm. The R10 maintained fix to 7.5km radio range; the RS2 to 6.5km. In dense vegetation, the R10 "won" but the RS2 wasn't far behind. This was before the R12i's ProPoint engine — the gap at the high end is wider with the current generation.
The Network: What Trimble Has That No Single Receiver Provides
This is the biggest practical difference for operators who want to work without deploying their own base station.
VRS (Virtual Reference Station) Networks
A VRS network is not simply a collection of NTRIP base stations. It is a managed network of permanent reference receivers with software that continuously models the spatial variation of atmospheric errors across the network coverage area.
When you connect to a VRS as a rover: 1. You send your approximate position to the network server 2. The server synthesizes a "virtual" base station at a location near you, using data from the surrounding real reference stations and its atmospheric model 3. You receive corrections as if there were a real base station right next to your site
This matters because: - Baseline stays short. Real NTRIP services mean your effective baseline is always the distance to the synthesized VRS — typically 5–10km regardless of where in the network you are. Without VRS, you're correcting from the nearest real station, which might be 30–60km away in rural areas. - Atmospheric modeling. The network software continuously models tropospheric and ionospheric delays across the coverage area. Corrections from a VRS are better compensated for distance-dependent atmospheric error than raw corrections from a distant single base. - Better vertical accuracy. Vertical accuracy is more sensitive to atmospheric error than horizontal. VRS corrections maintain vertical performance across the network in a way that single-base corrections cannot.
Trimble's VRS Now Coverage
Trimble VRS Now covers over one million square miles in North America alone, plus extensive coverage in Europe, Australia, and New Zealand. Coverage includes most of the continental US, all major Canadian provinces, and dense coverage across Europe.
The subscription cost is real: the Survey Regional VRS Now RTK subscription runs ~$1,650/year in the US. This is not a hidden fee — it's priced as a professional service, not a hobbyist tool. In that context it's a fraction of the daily labor cost it saves.
What Free NTRIP Services Are
Many operators use RTK2go, state DOT CORS networks, and similar free services as their NTRIP source. These are legitimate and work well in appropriate conditions. What they are not:
- RTK2go is a community NTRIP caster — anyone can set up a base station and publish it. The stations vary in quality, uptime, calibration, and metadata. Some stations are excellent; some are abandoned hardware running on an old Raspberry Pi with no monitoring.
- State DOT CORS networks are typically well-maintained but variable in density. Rural coverage can mean baselines of 40–80km between stations.
- NGS CORS provides raw data but not a VRS network — you get corrections from the actual station, not a synthesized one near you.
None of these provide the managed, monitored, synthesized VRS correction that Trimble VRS Now provides. They're not bad — they're just different products.
Other Managed Network Options
- Leica SmartNet: Comparable to Trimble VRS Now, European origin, extensive US and European coverage. Similar pricing.
- Hexagon/Leica HxGN SmartNet: The same network rebranded post-acquisition.
- Topcon MAGNET Correctlink: Trimble competitor, similar model.
- Point One Navigation Atlas: US coverage, $100-200/month, modern API-friendly approach, growing network.
- Swift Navigation Skylark: Growing commercial network, particularly strong for autonomous vehicle applications.
For Drone Operators Specifically
Here's where the calculus is genuinely different from land survey.
The drone's onboard receiver is the rover — and it's already limited. The drone's miniaturized antenna, surrounded by carbon fiber and electronics, has inherent multipath issues and phase center uncertainty regardless of whether it's connected to Emlid corrections or Trimble VRS. The base station and correction network quality is the variable you control.
PPK is less affected by network tier than RTK. In a PPK workflow, you're using post-processed precise ephemerides and forward-backward processing. A CORS station 30km away works adequately for PPK in a way that it doesn't for real-time RTK. For PPK drone mapping specifically, a free CORS-based workflow with an Emlid base logging at the site is genuinely competitive.
RTK drone mapping without a local base is where quality diverges. If you're flying RTK and relying on NTRIP corrections from a distant station: - A state DOT CORS station 40km away gives degraded vertical accuracy regardless of receiver quality - Trimble VRS Now's synthesized near station gives the same accuracy anywhere in the coverage area
The practical implication: for drone RTK with NTRIP corrections, the network matters more than the rover receiver quality. Paying for Trimble VRS Now while using an Emlid onboard receiver is a reasonable choice. Using a free NTRIP service in good sky conditions is also fine for many applications.
The Honest Price-Performance Map
| Tier | Example Equipment | Open-Sky Accuracy | Under Canopy | VRS Network | Use Case |
|---|---|---|---|---|---|
| Hobbyist | ArduSimple F9P + patch antenna | 1–3cm horizontal | Often FLOAT | Free NTRIP only | Drone mapping in open terrain |
| Prosumer | Emlid RS2+/RS3 | 1–2cm horizontal | Float at moderate canopy | Free NTRIP; pay for VRS separately | Most drone mapping, lightweight land survey |
| Mid-range commercial | Trimble R2, Leica GS18 I | 1cm horizontal | Better than prosumer | VRS subscription included or separate | Production land survey, GCP deployment |
| Professional | Trimble R10, Leica GS18 | 8mm + 0.5ppm | Good | Full VRS access | Licensed survey, infrastructure |
| Premium | Trimble R12i, Leica GS18 T Pro | 8mm + 0.5ppm | Outstanding (ProPoint) | Full VRS + satellite corrections | Survey in challenging environments |
For drone mapping specifically: Emlid hardware on a managed VRS network is a practical sweet spot. The onboard drone antenna limits accuracy more than the ground hardware, PPK processing handles most RTK link reliability problems, and the cost difference between Emlid ($1,900) and Trimble R12i ($27,000+) buys a lot of missions and processing time.
For ground survey control (GCPs, checkpoints, benchmarks): the investment in better ground hardware pays more direct dividends because you're working in the environment where canopy performance, tilt compensation, and absolute accuracy of the base actually change your results.
The Service and Workflow Ecosystem
This is real and frequently underestimated.
Trimble Access (the field software for Trimble receivers) has 25 years of survey workflow refinement. Code stakeout, surface stakeout, road design stakeout, traverse adjustment, COGO — it's the industry standard for a reason. The workflow from field to Trimble Business Center to deliverable is tested across hundreds of thousands of projects.
Emlid Flow is genuinely good and improving rapidly. But it's a different paradigm — more modern, more open, designed for drone operators and GIS users as much as surveyors. Surveyors coming from Trimble Access report a learning curve.
Support and certification: In most jurisdictions, official land surveys require licensed surveyors using certified equipment. Trimble, Leica, and Topcon equipment appears on certified equipment lists in most US states and internationally. Emlid equipment is generally not on these lists for legally-recorded surveys. For drone mapping deliverables (where the operator is not stamping a plat), this typically doesn't matter. For work that feeds into legal land records, it does.
Calibration and maintenance: Professional survey equipment comes with traceable factory calibrations, recommended calibration intervals, and factory service. Emlid receivers are designed for operator-level maintenance. For high-stakes work where calibration uncertainty enters the accuracy budget, this distinction matters.
The Summary
Emlid is genuinely excellent for what it is: an accessible, capable, open receiver ecosystem that outperforms its price point by a wide margin in good conditions. In open sky on short baselines, it matches professional equipment in practice. For drone mapping workflows using PPK, it's the right tool for most operators at most price points.
Trimble (and Leica, Topcon, NovAtel) is a different product for a different professional tier. The network infrastructure, proprietary signal processing, all-band tracking, and professional workflow ecosystem are real advantages that manifest in challenging conditions, long baselines, canopy environments, and legally-accountable survey work.
Confusing them — deploying Emlid hardware and expecting Trimble VRS performance, or dismissing Trimble as overpriced when the use case genuinely benefits from its capabilities — costs accuracy, time, and sometimes careers.
The right question is not "which is better?" but "what does my specific use case need, where will I deploy it, and what is the cost of being wrong?"
Trimble RTX: The Third Paradigm
Everything discussed so far — RTK, PPK, VRS networks, base stations — operates on the same fundamental principle: you need two receivers measuring the same satellites at the same time, and you use the difference to cancel errors. This is differential GNSS in all its forms.
Trimble RTX is something different. It's Precise Point Positioning (PPP) delivered as a real-time commercial service. Understanding what makes it a different category — not just a premium version of RTK — is the last piece of the ecosystem picture.
What PPP Actually Is
Standard differential GNSS (RTK, PPK) eliminates atmospheric and satellite errors by comparing two nearby receivers. The errors largely cancel because both receivers see the same atmosphere and the same satellite clock errors at the same time.
PPP takes a different approach: instead of cancelling the errors by differencing, it models and corrects every error source directly. To do this, it uses:
- Precise satellite orbits — computed from a global network of reference stations tracking every satellite continuously. Accurate to 2–3cm vs the broadcast ephemeris's 1–2m.
- Precise satellite clock corrections — the clock in each satellite drifts; PPP models it to sub-nanosecond accuracy
- Global ionospheric model — the density of charged particles in the ionosphere varies by location, time of day, and solar activity. PPP models it globally and applies per-receiver corrections
- Tropospheric model — water vapor in the lower atmosphere delays signals in a way that varies with altitude, temperature, and humidity
- Phase bias corrections — carrier phase measurements have systematic biases from receiver and satellite hardware that must be modelled to resolve integer ambiguities
Trimble RTX computes all of these corrections continuously using its global network of approximately 120 reference stations and delivers them to your receiver via L-band geostationary satellite (no internet required) or internet/cellular.
The Fundamental Difference: No Base Station, No VRS, No Local Infrastructure
This is what RTX unlocks that nothing else does.
In any RTK or PPK workflow, you are constrained by: - The location of the nearest base station or CORS station - The quality of the cellular or radio link delivering corrections - The baseline length (which drives atmospheric modelling error)
With Trimble RTX, you need only one receiver and a subscription. There is no base. There is no cellular dependency (satellite delivery). There is no baseline — the corrections are absolute, not relative to a local reference.
Practical implications: - A pipeline survey crossing 200km of remote terrain: RTX works the entire corridor without moving a base station - An offshore vessel: RTX satellite delivery works at sea with no terrestrial infrastructure whatsoever - A BVLOS drone corridor survey where no base can be deployed: RTX is the correction source - International projects: RTX provides consistent absolute positioning in ITRF 2020 regardless of local datum infrastructure
The RTX Service Tiers
Trimble RTX is not a single product — it's a family:
| Service | Delivery | Accuracy | Convergence | Best For |
|---|---|---|---|---|
| CenterPoint RTX Fast | Satellite + Internet | 2cm horizontal, 4cm vertical | <1 minute (ProPoint) | US + W. Europe production survey |
| CenterPoint RTX Standard | Satellite + Internet | 2cm horizontal, 4cm vertical | 15–30 min global | Global remote survey |
| ViewPoint RTX | Satellite + Internet | 10cm | Minutes | GIS, asset inventory |
| RangePoint RTX | Satellite + Internet | 40–50cm | Minutes | Agriculture, GIS |
| Trimble xFill / xFillx | Satellite (backup) | 2cm (offset to local) | Near-instant (bridging) | RTK/VRS backup |
CenterPoint RTX Fast covers the continental US and Western Europe with regional atmospheric models that dramatically reduce convergence time. In RTX Fast areas with a ProPoint receiver: converged and ready to survey in under one minute from cold start. That is comparable to RTK initialization time — without a base station.
CenterPoint RTX Standard works globally, but without regional atmospheric models. Convergence takes 15–30 minutes. For a surveyor arriving at a new site in Central Africa or Central Asia, this is still a revolutionary capability — RTK simply cannot work there without local infrastructure.
Convergence: The Critical Limitation
Unlike RTK, which snaps to fix status when integer ambiguities are resolved (discrete event), PPP convergence is a gradual process. Accuracy improves continuously as the receiver accumulates observations and the correction model refines.
Convergence sequence for CenterPoint RTX Standard (non-ProPoint receiver):
- 0–5 minutes: ~30cm accuracy
- 5–10 minutes: ~15cm accuracy
- 10–15 minutes: ~8cm accuracy
- 15–30 minutes: ~2–4cm accuracy (full specification)
For CenterPoint RTX Fast with ProPoint (US/W. Europe): - 0–60 seconds: converged to 2cm specification - This is genuinely competitive with RTK initialization
The important constraint: if you lose corrections for an extended period (signal blockage, power cycle, receiver reset), you must reconverge. Unlike RTK which can re-fix in seconds after a brief dropout, RTX reconvergence starts over. For this reason, Trimble integrates RTX with RTK workflows via xFill rather than positioning them as replacements.
xFill and xFillx: RTX as Insurance
This is how most professionals actually encounter RTX in daily use — not as their primary correction source, but as the backup that keeps them working when RTK fails.
xFill (free, 5 minutes): Built into Trimble Access. When the RTK radio or NTRIP cellular connection drops, xFill automatically engages Trimble RTX satellite corrections as a bridging solution. Accuracy is maintained at RTK-level (±2cm) for up to 5 minutes, offset to the local coordinate system of the RTK job. You keep working through the dead zone.
xFillx (with CenterPoint RTX subscription, unlimited): Same as xFill but without the 5-minute limit. For surveying in areas with intermittent cellular coverage or radio range issues, xFillx turns what would be interruptions into seamless continues. The satellite signal is always there.
This is the context behind the survey professional's quote: "Don't mess around with RTK, go straight to CenterPoint RTX and be done with it." For a specific class of remote, large-area work, they're right — the logistics of base station setup, radio range management, and cellular coverage simply aren't worth it when RTX can deliver 2cm accuracy globally with less setup overhead.
RTX vs RTK: The Honest Accuracy Comparison
Peer-reviewed comparisons (including a 2025 study from the Italian Institute for Geophysics and Volcanology, which ran RTX and RTK simultaneously on the same antenna) show that:
- After full convergence: RTX horizontal accuracy of 1.5–2cm and vertical of 2.5–4cm is consistently demonstrated. This matches RTK specification.
- Before full convergence: RTX degrades gracefully (still useful at 5–10 minutes); RTK drops sharply from FIX to unreliable FLOAT.
- Under canopy / near buildings: Both degrade. RTX degrades due to signal blockage affecting the global ionospheric model update; RTK degrades due to multipath corrupting carrier phase tracking. Neither has a clear advantage here — ProPoint helps both RTX and RTK on capable receivers.
- At long range: RTX is better. A 100km baseline RTK is not viable; RTX works anywhere.
- On kinematic platforms (drones, vehicles): Both work. RTX initialization on a moving platform takes longer than stationary; RTK can fix while moving if corrections are available.
What RTX Cannot Do
RTX is not a replacement for RTK in all scenarios:
Relative accuracy missions: If you need two points to agree with each other to sub-centimeter precision, RTK (where both points are measured relative to the same base) is more internally consistent than RTX (where both points are absolute but carry their own independent 1.5–2cm uncertainty).
Machine control: Construction machine control applications require fast RTK lock, continuous operation, and integration with machine manufacturer systems. RTX convergence latency and the requirement for compatible Trimble receivers makes it impractical for most machine control.
Canopy environments: Neither RTX nor RTK is reliable under heavy canopy. If canopy performance is the critical requirement, Trimble ProPoint hardware (R12i) with either correction source is the answer, not the correction source itself.
Non-Trimble receivers: RTX is Trimble-proprietary. The satellite-delivered RTX corrections are encrypted for Trimble hardware. Internet-delivered RTX is available via NTRIP to third-party receivers at lower accuracy tiers, but the full CenterPoint RTX Fast service requires Trimble hardware. This is not a hidden fee — it's the business model.
The Competitive Landscape
Trimble RTX pioneered commercial PPP-as-a-service but is no longer alone:
| Service | Provider | Delivery | Accuracy | Coverage |
|---|---|---|---|---|
| CenterPoint RTX | Trimble | L-band + internet | 2cm + fast convergence | Global |
| TerraStar-C PRO | Hexagon/NovAtel | L-band + internet | 2cm | Global |
| TerraStar-X | Hexagon/NovAtel | L-band + internet | 2cm + fast convergence | Global |
| Skylark | Swift Navigation | Internet | 2–5cm | Growing |
| Atlas | Hemisphere | L-band | 2–4cm | Global |
| CSRS-PPP | Natural Resources Canada | Internet (post-process only) | 1cm (post) | Global (free) |
| SSR corrections (IGS-RTS) | IGS | Internet | 5–10cm | Global (free) |
The free IGS real-time streams are worth knowing: accessible via NTRIP, global coverage, multi-constellation. Accuracy is 5–10cm after convergence — fine for GIS and positioning, not survey-grade. For commercial survey work, CenterPoint RTX or TerraStar-C PRO are the established options.
Where This Leaves the Drone Operator
For drone base station GPS in remote locations where CORS coverage is inadequate for PPK — RTX satellite delivery to a Trimble receiver used as a base station gives you a precisely-positioned base anywhere on Earth. Set up the Trimble base, let it converge for 30 minutes (or 1 minute in RTX Fast regions), use it as your RTK base for the drone mission. You've effectively brought a known survey point to any remote location with no pre-existing infrastructure.
This is one of the practical workflows that separates serious remote survey capability from what a budget GNSS setup can achieve — and it requires the full Trimble ecosystem (receiver + RTX subscription + Trimble Access) to work as described.
Industry Intelligence
Curated links to trusted sources across the commercial UAS ecosystem, defense programs, and financial activity. Updated regularly from the Forge data pipeline.
Live dashboard with filtering: forgeprole.netlify.app/intel/
Commercial Sources
Primary retailers and manufacturers that supply the FPV, enterprise, and defense drone ecosystem. These are the shops and OEMs we pull pricing, availability, and spec data from.
Retailers
| Source | URL | Coverage |
|---|---|---|
| GetFPV | getfpv.com | Largest FPV parts retailer. 2,700+ product links in Forge. NDAA section. |
| RaceDayQuads | racedayquads.com | FPV specialist. Fast shipping. Good stock on motors and frames. |
| Drone Syndicate Store | syndicate.uasnexus.com | UAS Nexus curated marketplace. NDAA/Blue UAS components focus. |
| SpeedyBee FPV | speedybee.com | SpeedyBee ecosystem + accessories. Bluetooth configurator. |
| vtx.in.ua | vtx.in.ua | Ukrainian FPV shop. Combat-tested components. UAH + USD pricing. |
Key Manufacturers (NDAA Compliant)
| Manufacturer | URL | Products | Notes |
|---|---|---|---|
| ModalAI | modalai.com | VOXL2 companion computer, Seeker/Stinger drones | 16 Blue UAS listings. Qualcomm SoC. |
| ARK Electronics | arkelectron.com | Pixhawk FMUv6X flight controllers | Blue UAS Framework. US-made. |
| Lumenier | lumenier.com | Motors, FCs, batteries, frames | NDAA compliant. GetFPV house brand. |
| Orqa | orqafpv.com | QuadCore H7 FC, FPV goggles | Croatian. NDAA compliant. |
| Persistent Systems | persistentsystems.com | MPU5 MANET mesh radios | Military-grade. Wave Relay. |
| Silvus Technologies | silvustechnologies.com | StreamCaster mesh radios | MIL-STD. Defense standard. |
| Doodle Labs | doodlelabs.com | Helix mesh radios | Compact. Blue UAS Framework. |
| Inertial Labs | inertiallabs.com | INS, AHRS, GNSS receivers | US-made. Survey/mapping grade. |
| Ouster | ouster.com | Digital LiDAR sensors | NDAA compliant. OS series. |
| Obsidian Sensors | obsidiansensors.com | Miramar MVF thermal cameras | Qualcomm spin-out. LAMP on glass. |
Key Manufacturers (International)
| Manufacturer | URL | Country | Products |
|---|---|---|---|
| T-Motor | store.tmotor.com | China | Premium motors, ESCs, props |
| EMAX | emaxmodel.com | China | ECO/Eco II motors |
| Foxeer | foxeer.com | China | FPV cameras, VTX |
| Caddx | caddxfpv.com | China | Walksnail Avatar, analog cameras |
| HDZero | hdzero.com | China | Digital FPV system |
| BetaFPV | betafpv.com | China | Micro/whoop drones + parts |
Defense Programs & Compliance
Tracking DoD procurement, Blue UAS approvals, and regulatory changes affecting drone operations.
Blue UAS Cleared List (Selected)
The Defense Innovation Unit (DIU) maintains the Blue UAS Cleared List of platforms approved for DoD purchase without exception-to-policy requests.
| Platform | Manufacturer | Type |
|---|---|---|
| Skydio X2/X10 | Skydio | sUAS |
| Teal Golden Eagle / Black Widow | Red Cat Holdings | sUAS/FPV |
| Freefly Astro | Freefly / Auterion | sUAS |
| Inspired Flight IF800/IF1200 | Inspired Flight | Heavy-lift sUAS |
| Parrot ANAFI USA | Parrot | sUAS |
| Shield AI Nova 2 | Shield AI | Autonomous sUAS |
| ModalAI Seeker/Stinger | ModalAI | FPV/sUAS |
| Ascent Aerosystems Spirit | Ascent Aerosystems | Coaxial |
| BRINC Lemur | BRINC | Indoor tactical |
| AeroVironment Switchblade | AeroVironment | Loitering munition |
| Titan Dynamics Raptor | Titan Dynamics | sUAS |
| Hoverfly LiveSky | Hoverfly Technologies | Tethered |
Full list: diu.mil/blue-uas
Recent Contracts (2025-2026)
| Program | Awardee | Value | Notes |
|---|---|---|---|
| USAF C-UAS IDIQ | Trust Automation | $490M | Through 2030. R&D + production. |
| FEMA World Cup C-UAS | Multiple | $250M | 11 states for 2026 FIFA World Cup. |
| Poland C-UAS | Kongsberg Gruppen | $1.7B | 18 batteries + Polish industry investment. |
| Replicator 2 (first award) | Fortem Technology | Undisclosed | DroneHunter F700 AI interceptor. |
| European Defence Force | Parrot (ANAFI UKR) | Multi-year | Tactical recon. Competitive 3-year procurement. |
| US Army BOA | Heven AeroTech | Framework | Z1 hydrogen-powered UAS. |
| US Army SBIR | Obsidian Sensors | $15M+ | SXGA thermal sensor + Palomar 2 ROIC. |
| eBee TAC | EagleNXT | Undisclosed | Fixed-wing mapping to US Army. |
| Asia-Pacific military | DroneShield | $6.2M | C-UAS deployment. |
| French Army SDT | Safran Patroller | €500M+ | Tactical drone system. |
Key Regulations
| Regulation | Status | Impact |
|---|---|---|
| SAFER SKIES Act (FY2026 NDAA) | Enacted | Expands domestic C-UAS authority. Federal detection/mitigation standards. |
| FCC Covered List | Active | Foreign-made UAS on restricted equipment list. No new FCC authorizations. First conditional approvals 2026. |
| ASDA (American Security Drone Act) | Active (Dec 2025) | Bars federal operation of covered foreign UAS. Extends to contractors/grantees. |
| NHTSA PAEB Mandate | 2029 deadline | Pedestrian AEB required on all new cars. Drives thermal sensor demand. |
| Ohio Statewide DFR | 2026 pilot | 9 agencies. Nation's only statewide Drone First Responder pilot. |
Financial Activity
Tracking funding rounds, IPOs, and valuations across the drone industry.
Major Funding Rounds (2024-2026)
| Company | Amount | Type | Valuation | Sector |
|---|---|---|---|---|
| Zipline | $600M+ | Series F+ | $7.6B | Autonomous delivery |
| Skydio | $740M+ total | Series E | ~$2.2B | Enterprise/defense ISR |
| Shield AI | $500M+ total | Series F | ~$2.8B | Autonomous combat |
| XTEND | $200M total | Multiple | $500M+ | Indoor tactical |
| Tekever | €100M+ | Multiple | N/A | Maritime ISR |
| Gather AI | $40M | Series B | N/A | Warehouse inspection |
| Obsidian Sensors | $39M+ | Series A + SBIR | N/A | Thermal sensors |
| Dominion Dynamics | CAD 21M | Series A | N/A | Arctic autonomous |
| Rift | €4.6M | Seed | N/A | Aerial intelligence |
| Everdrone | SEK 36M | Growth | N/A | Medical delivery |
IPOs & Exchange Listings
| Company | Exchange | Date | Notes |
|---|---|---|---|
| ideaForge | BSE/NSE (India) | 2023 | India's largest military drone maker |
| Volatus Aerospace | TSX (Canada) | Mar 2026 | Graduated from TSXV. Trading as FLT. |
| Baykar | Private | — | ~$2B+ annual revenue (estimated). No IPO plans announced. |
Key Investors in UAS
Qualcomm Ventures, Andreessen Horowitz, Lux Capital, Lockheed Martin Ventures, Boeing HorizonX, Hyundai Mobis, Himax Technologies, SK Walden, Innolux, Eclipse Ventures, Lupa Systems, AlleyCorp, Sciety.
Last updated: March 2026 Source: Forge data pipeline + DRONELIFE, sUAS News, SBIR.gov, PitchBook, Crunchbase Live dashboard: forgeprole.netlify.app/intel/
LiDAR & Mapping Payloads
LiDAR (Light Detection and Ranging) payloads for UAS fall into two distinct categories: single-sensor rangefinders/scanners used for altitude hold, obstacle avoidance, and SLAM; and integrated mapping payloads that combine a multi-beam scanner with a high-grade INS, camera, and onboard compute into a single deployable unit. This page covers the mapping payload tier. For rangefinders (LightWare, Benewake, TFMini), see the Forge sensor database.
What Makes a Mapping Payload Different
A rangefinder measures distance to a surface. A mapping payload generates a georeferenced 3D point cloud of everything the aircraft flies over. The difference in system complexity is substantial:
- Multi-beam rotating scanner (32–128 channels, 360° FOV) vs. a single-beam sensor
- Tactical or navigation-grade INS with dual-antenna GNSS for precise position and attitude at every pulse
- RGB camera for colorizing the point cloud with real photographic texture
- Onboard datalogger and compute handling time-synchronization across all sensors
- Post-processing (PPK/RTK) workflow to refine GNSS accuracy from ~1m to 2–5cm
The result is deliverables: georeferenced point clouds, digital surface models, orthomosaics, and volumetric calculations — outputs that justify the payload weight and cost.
The RESEPI Platform (Inertial Labs)
The most relevant mapping payload family for UAS integrators is Inertial Labs' RESEPI™ (Remote Sensing Payload Instrument). It is also one of the most commonly white-labeled platforms in the industry — if you see a third-party branded drone LiDAR payload with a Hesai, Ouster, or Teledyne Geospatial scanner and a NovAtel GNSS receiver inside, there is a reasonable chance the core architecture is RESEPI.
Inertial Labs explicitly built RESEPI for white-labeling: all software (calibration tools, boresighting, point cloud viewer, web interface) accepts partner branding, and the hardware enclosure is designed for custom labeling. This is worth knowing when evaluating "branded" payloads from resellers.
All current RESEPI variants are NDAA compliant.
Variant Comparison
| Model | Scanner | Channels | Accuracy | AGL | Weight | Key differentiator |
|---|---|---|---|---|---|---|
| GEN-II OS1-ILX | Ouster OS1-64 | 64 | 3–5 cm | 75 m | 1.7 kg | 64-channel density, 45° vertical FOV |
| GEN-II M2X-ILX | Hesai XT-32M2X | 32 | 2–3 cm | 150 m | 1.7 kg | Best accuracy + highest AGL in GEN-II line |
| LITE XT-32 | Hesai XT-32 | 32 | 2–3 cm | 100 m | 0.9–4.3 kg | Most widely deployed globally; fully modular |
| Ultra LITE | Hesai XT-32 | 32 | 2–3 cm | 100 m | 1.2 kg | Lowest SWaP; SnapFit mount; single-antenna INS |
| Teledyne EchoONE | Teledyne Geospatial | — | 0.5 cm | 205 m | 1.65 kg | Sub-centimeter precision; highest AGL ceiling |
GEN-II Platform (OS1-ILX and M2X-ILX)
The GEN-II represents a full platform rebuild over the original RESEPI LITE. Key upgrades:
- 175% more compute, 700% more memory vs LITE — enables real-time point cloud visualization in the field
- Tactical-grade IMU: Kernel-210 (Inertial Labs' own) running their Extended Kalman Filter
- Sensor expansion ports: accepts external IMU, wheel encoders, air data computers as additional navigation aiding sources
- MAVLink and DJI PSDK integration — plug-and-play with DJI M300/M350, Freefly Astro, Sony Airpeak S1, WISPR Ranger Pro 1100
- 61 MP Sony ILX-LR1 global shutter camera on both variants
- 512 GB onboard SSD; 9–50V input; 25–29W draw
- Supports Aerial, Mobile, and Handheld/Backpack operating modes
The two GEN-II variants differ primarily in scanner: the OS1-ILX uses Ouster's 64-channel sensor (higher point density, 45° vertical FOV, 75m AGL ceiling) while the M2X-ILX uses the Hesai XT-32M2X (32 channels, better linear accuracy at 2–3cm, 150m AGL ceiling). Pick OS1-ILX for dense urban/forestry canopy work; M2X-ILX for corridor surveys and open terrain at higher altitude.
RESEPI LITE XT-32
The workhorse. More RESEPI LITE units are deployed globally than any other variant. Built on a navigation-grade INS (not tactical) but delivers the same 2–3 cm system accuracy for typical survey missions.
Fully modular by design: the integrator can supply their own GNSS receiver, their own LiDAR scanner, or both — Inertial Labs provides the INS/compute/datalogger core and the calibration/boresighting/PPK software stack. Single-button operation or web UI. Backpack/handheld kit available for ground survey.
Weight range (0.9–4.3 kg) reflects different scanner and mount configurations.
RESEPI Ultra LITE
Built on the LITE architecture but trimmed for small UAS where 1.7 kg is too heavy. Single-antenna INS (vs dual on LITE and GEN-II) is the main tradeoff. SnapFit mount for rapid platform swaps. At 1.2 kg it fits platforms like the DJI M30 that can't carry a full LITE rig. Suitable for survey missions where slightly degraded heading accuracy (single vs dual antenna) is acceptable.
Teledyne EchoONE
The premium tier. Powered by the GEN-II core but paired with a Teledyne Geospatial scanner, delivering 0.5 cm data precision — the tightest in the RESEPI family by a factor of 4–6×. At 205 m AGL ceiling it also has the highest operational altitude. Trade-offs: 75 W power draw (vs 25–29 W for GEN-II), aerial-only operating mode (no backpack/MMS), no SLAM. The right choice for infrastructure inspection and high-precision corridor mapping where ground truth accuracy matters more than versatility.
Integration Notes
Power: GEN-II and LITE units run 9–50V, making them compatible with both 6S (25.2V) and 12S (50.4V) UAS power rails. The EchoONE's 75W draw at 12V is ~6.3A — factor this into your power budget carefully.
Flight time: Inertial Labs rates maximum flight time at 33 minutes on a DJI M300, consistent with typical 6S/12S survey drone endurance carrying a ~1.7 kg payload.
GNSS corrections: All variants support RTCM corrections via embedded cellular modem or WiFi. For PPK workflows without cellular coverage, raw GNSS data is logged for post-processing against a base station.
Drone compatibility: GEN-II explicitly supports DJI M300/M350 (DJI PSDK), Freefly Astro, Sony Airpeak S1, and WISPR Ranger Pro 1100 via SnapFit or direct mount. LITE variants are more generic — standard vibration-isolated mount, user-supplied brackets.
Software stack: All RESEPI variants ship with LiDAR calibration software, automated boresighting, and PPK post-processing powered by NovAtel's Waypoint Inertial Explorer (Hexagon). GEN-II and EchoONE add real-time point cloud visualization.
White-Label Note
If you are evaluating a third-party branded drone LiDAR payload that lists a Hesai, Ouster, or Teledyne Geospatial scanner paired with a NovAtel dual-antenna GNSS and an Inertial Labs INS, you are almost certainly looking at a RESEPI variant. Ask the vendor directly. This is not a criticism — the white-label model lets integrators focus on applications and customer relationships rather than developing payload hardware — but it is worth knowing for supply chain and support reasons. Source specs and firmware updates will ultimately trace back to Inertial Labs regardless of the label.
See also: Forge LiDAR database — all RESEPI variants with full spec tables
MafiaLRS â Combat-Adapted ELRS Fork
MafiaLRS is a Ukrainian fork of ExpressLRS adapted for contested RF environments. It operates outside standard ELRS frequency bands to evade electronic warfare coverage. Actively maintained and battle-tested in Ukraine.
What MafiaLRS Is
MafiaLRS is a fork of ELRS maintained by the Ukrainian developer community (BUSHA/targets@mafia-targets).
Status: Actively maintained as of March 2026 Targets: 376 RX targets, 122 TX targets
Key Differences from Stock ELRS
| Parameter | Stock ELRS | MafiaLRS |
|---|---|---|
| 900MHz band | 868/915MHz | 433-735MHz modified |
| 490-560MHz | Not supported | Supported |
| Frequency hopping | Standard ELRS pattern | Modified for EW evasion |
| Compatibility | Standard ELRS | Requires MafiaLRS on both ends |
The core modification is frequency hopping outside the bands that standard EW jamming systems cover.
Operational Context
Developed in response to active RF jamming of standard drone control frequencies in Ukraine. Standard ELRS, Crossfire, and DJI links are vulnerable to broadband jamming. MafiaLRS operates in the gaps.
Accessing MafiaLRS
Firmware generated via: Forge -> RF Tools -> MafiaLRS Generator
- 376 RX targets selectable
- 122 TX targets
- Manufacturer filtering
Legal Notes
MafiaLRS operates on frequencies not licensed for unlicensed use in many jurisdictions. For US operators: not appropriate for routine commercial or recreational use. Defense and public safety contexts only.
Related
Motors — Who Actually Makes Them
Part 6 — Components The parts that go into the drone, where they come from, and what the compliance landscape actually looks like.
The Supply Chain Reality
The global drone motor market has a simple structure: China makes most of them. Estimates vary, but roughly 73% of the world's FPV drone motors are Chinese-manufactured. This includes many brands that market themselves as American, European, or otherwise — the motors are designed elsewhere but manufactured in China.
This matters because NDAA Section 889 and the American Security Drone Act (ASDA, effective December 2025) prohibit federal agencies from purchasing drone components from "covered foreign entities." Starting with DDG Phase II and NDAA FY2026 battery provisions, the restrictions are tightening further — motors and batteries from covered countries will be explicitly prohibited in DoD programs.
For operators who don't face procurement restrictions, Chinese motors remain the most cost-effective option at roughly $70–100/unit for quality FPV motors. The price gap matters: comparable NDAA-compliant motors run $150–500+ depending on class.
This chapter covers the real global motor landscape — who makes what, where, and what the compliance picture actually looks like.
Ukraine — The Combat-Proven Ecosystem
Ukraine consumed roughly 9.6 million drone motors in 2025. The country operates the most combat-proven UAS ecosystem on earth, and its motor manufacturers have been refined by continuous battlefield feedback at a pace no test range can replicate.
Motor-G
Ukraine's largest drone motor manufacturer. Founded after the full-scale Russian invasion by Oleksii Grebin and three co-founders (two from drone production, two from industrial HVAC). Self-funded with millions of dollars, no external investment.
| Detail | Value |
|---|---|
| HQ | Ukraine (location undisclosed for security) |
| Production | 200,000 motors/month (as of March 2026) |
| Market Share | ~17% of Ukraine's motor market |
| Customers | 100+ drone manufacturers including Vyriy, General Cherry |
| QA | 6-stage inspection, 2/1000 defect rate |
| Localization | 85% Ukrainian-sourced, targeting 90%+ (stators 100% localized from May 2026) |
| CEO | Oleksii Grebin |
| Growth | 181 units (Dec 2024) → 200,000/month (12 months) |
| R&D | In-house — custom motors to spec available |
Product Line: - 9 standard FPV motor models covering 5"–15" frame sizes - Vandal — interceptor motor for 3–5 kg drones, designed for speeds exceeding 350 km/h. Priced above Chinese equivalents. Minister of Defence Fedorov reported Motor-G equipment enabling an anti-aircraft drone to reach 400 km/h. - Expanding into UGV and heavy bomber motors - Persian Gulf interest in interceptor drone applications
Remaining imports: Small magnets, bearings, some voltage testing equipment. The company notes that EU motor production is effectively nonexistent — European brands are typically Chinese-manufactured.
Lean manufacturing model: Motor-G ships in small batches matched to customer production rates, avoiding the Chinese model of paying for and waiting on tens of thousands of units at once.
Aeromotors
Ukraine's second-largest motor manufacturer. ~10,000 motors/month. All components manufactured in-house. €467K ($550K) investment from Swedish Front Ventures (end 2025). Custom motors to spec. Motor-G's primary domestic competitor.
Other Ukrainian Motor Manufacturers
- Bullet — Claims 450 km/h interceptor motors
- Realgold — Previously used by Vyriy before Motor-G partnership
- ~8 total competitors in the Ukrainian market (per Motor-G CEO)
The Ukrainian Advantage
Ukrainian motors cost roughly $150/unit — twice the Chinese price but half the US price. The real advantage isn't cost, it's iteration speed. Troops test motors in combat daily and feed results back immediately. A Ukrainian motor with 200,000+ combat sorties of validation data is more credible than a US motor with zero field hours, regardless of what the spec sheet says.
United States — NDAA-Compliant Motors
UMAC / Unusual Machines / EU Motors USA
Blue UAS Framework listed. Scaling local manufacturing in Orlando, FL. 50,000+ motors/month capacity.
| Detail | Value |
|---|---|
| HQ | Orlando, FL, USA |
| Blue UAS | Framework component |
| NDAA | Compliant |
| Facility | 17,000 sq ft manufacturing |
| Key Products | UMAC 2207 (5"), UMAC 2807 (7" — used in Red Cat FANG F7), UMAC 3220 (larger format) |
| UMAC 2807 Specs | 28×7mm stator, N552SH magnets, 12mm bearings, 3-8S |
| Customers | Red Cat ($800K initial FANG components order), PBAS selectees |
| Acquisition | Rotor Lab (Australia) acquired Sep 2025 for $7M |
KDE Direct
US-designed heavy-lift and industrial motors. 10+ years in market.
| Detail | Value |
|---|---|
| HQ | Bend, OR, USA |
| Designed | USA |
| Manufacturing | USA + abroad (verify specific models) |
| IP Rating | IP56 / IP66 (model dependent) |
| Certifications | ISO 9001, CE, WEEE |
| Range | 1806 mini through 13218XF heavy-lift |
| Applications | Hollywood aerial cinema, LiDAR, SAR, military, agriculture |
| NDAA | Designed in USA — verify manufacturing origin per model |
KDE also manufactures ESCs tuned and optimized for their motor line. Their "Build Your System" tool helps match motors to airframes and payloads.
Vertiq
Integrated motor+ESC modules with embedded position sensor. Blue UAS Framework listed. NDAA compliant.
| Detail | Value |
|---|---|
| HQ | USA |
| Blue UAS | Framework component (81-08 G2 module) |
| NDAA | Compliant |
| Key Feature | Integrated motor + ESC + position sensor in one module |
| Compatibility | ArduPilot, PX4 native support |
| Product Line | 23-06, 23-14, 40-06, 40-14, 60-08, 81-08, 81-17 modules |
| Applications | Commercial, defense, high-value aerial vehicles |
Vertiq's position sensor enables precise propeller positioning in-flight and on landing — relevant for applications requiring consistent blade orientation (folding props, coaxial).
Dronesmith USA
Purpose-built for government/defense. NDAA §889 compliant with verified US supply chain. Prohibited vendors excluded. Traceable components with vendor attestations. Pre-production designs covering mid-lift, 5–7" tactical FPV/ISR, and heavy-lift classes.
Lumenier
Premium FPV/cinema brand based in Sarasota, FL. ZIP series motors. In parts-db for some products. Verify manufacturing origin per model — some Lumenier products are manufactured in China despite US brand identity.
Other US Motor Manufacturers
- NeuMotors — High-end, extreme efficiency, aerospace research
- LaunchPoint EPS — Dual-Halbach axial flux motors, hybrid-electric propulsion, eVTOL
- Allied Motion / Allient — Precision brushless for defense, aviation, medical. Gimbal + propulsion
- USA Drone Motors — Built-to-print or standard specs, NDAA BLDC
- Moog — Aerospace/defense-grade actuation and propulsion
European Union
Scorpion Power Systems
| Detail | Value |
|---|---|
| HQ | Prague, Czech Republic |
| Manufacturing | EU |
| Range | Competition and commercial UAS motors |
| NDAA | Non-Chinese manufacturing — likely compliant but verify |
Plettenberg Motoren
German manufacturer. High-end industrial and defense brushless motors. Premium pricing.
Hacker Motor
German manufacturer. Competition and industrial brushless motors. Well-established in the European RC/UAS market.
The EU Gap
As Motor-G's CEO noted: European motor "brands" exist, but actual EU manufacturing is rare. Most European-branded motors are Chinese-manufactured. This is a significant supply chain vulnerability for European defense programs, and several EU nations are in early discussions about localizing motor production.
Australia
Hargrave Technologies
Not a motor manufacturer but critical to mention here — Hargrave makes NDAA-compliant ESCs (the other half of the propulsion system).
| Detail | Value |
|---|---|
| HQ | Australia |
| NDAA | Compliant — Western-sourced components |
| Key Products | nanoDRIVE 4LPi (4-in-1 ESC), microDRIVE LP (IP67) |
| Protocols | DroneCAN, ARINC825, DShot, PWM |
| Deployed | 10,000+ aircraft in 50+ countries |
| Recognition | Sovereign Capability Defence Grant recipient |
China (Context)
Chinese motors dominate the global market (~73% of Ukraine's market alone). Key manufacturers include T-Motor, MAD Components, and dozens of smaller OEMs. Pricing runs $70–100/unit for quality FPV motors — roughly half the Ukrainian price and a third of the US price.
T-Motor is the most recognized Chinese motor brand in professional/commercial UAS. Already in the parts-db but needs compliance flags added to all entries: NOT NDAA compliant.
Chinese motors are NOT recommended for any NDAA, Blue UAS, or government-adjacent builds. However, they remain the reality for most commercial operators worldwide and the Handbook should document them accurately — operators need to know what exists, not just what procurement officers can buy.
The Price Reality
| Origin | Typical FPV Motor Cost | NDAA Status |
|---|---|---|
| China | $70–100 | NOT compliant |
| Ukraine | ~$150 | Not applicable (non-NDAA nation, but non-Chinese) |
| EU (actual mfg) | $150–300 | Likely compliant (verify per product) |
| USA | $200–500+ | Compliant (verify per product) |
| USA (integrated module, e.g. Vertiq) | $300–800 | Blue UAS Framework |
Any NDAA/supply chain discussion must acknowledge this price gap. The DDG Phase II Chinese components ban will force Phase I winners currently using Chinese motors to absorb a 2–5x cost increase on propulsion alone.
Choosing Motors: What Matters
-
Match the motor to the prop and voltage. Every motor has an optimal prop size and cell count. Running outside that range wastes energy or risks burnout.
-
Stator volume determines power. Width × height (e.g., 2807 = 28mm wide, 7mm tall). Larger stator = more torque = heavier props and payloads.
-
KV determines RPM per volt. Higher KV = higher RPM = smaller props. Lower KV = more torque = larger props. Match to your application.
-
Compliance is a procurement constraint, not a quality indicator. A Chinese T-Motor may outperform an NDAA motor on a spec sheet. The NDAA motor exists because procurement rules require it.
-
Combat-proven > spec sheet. If a motor has been validated across thousands of real-world sorties (Motor-G, Neros), that data is worth more than any test bench report.
Last updated: March 2026
NDAA Compliance â Drones in US Government Work
If you're doing government work with drones, NDAA compliance is not optional. It's not a checkbox. It affects which hardware you can buy, which vendors you can use, and which components you can integrate.
The Regulatory Framework
NDAA §848 â The Core Prohibition
Section 848 of the FY2020 National Defense Authorization Act prohibits Department of Defense procurement of covered foreign-manufactured unmanned aircraft systems and related components.
Covered entities (as of March 2026): - DJI (Da-Jiang Innovations) - Autel Robotics - Dahua Technology - Hikvision - Huawei - ZTE - Hytera Communications
NDAA §817 â Component-Level Requirements
11 critical component categories: 1. Flight controllers 2. Ground control systems 3. Radio communication systems 4. Cameras 5. Gimbals 6. Data transmission/storage systems 7. Operating software 8. Obstacle avoidance systems 9. Sensors 10. Batteries 11. Propulsion systems
American Security Drone Act (ASDA)
Extends §848 to all federal agencies, not just DOD procurement.
Executive Order 14307
Addresses national security risks from connected vehicle technology.
Blue UAS Program
25+ platforms cleared as of March 2026.
| Platform | Origin | Specialty |
|---|---|---|
| Skydio X10 | USA | AI autonomous |
| Parrot ANAFI USA | France | Encrypted data |
| Censys Technologies | USA | Fixed-wing BVLOS |
| Impossible Aerospace US-1 | USA | Long endurance |
| Teal Golden Eagle | USA | Defense-focused |
Blue UAS cleared does not mean automatically NDAA compliant. Component-level compliance (§817) still applies to modifications.
Country of Origin
The test is not where it was assembled but whether the entity is Chinese-owned, Chinese-controlled, or subject to Chinese government influence.
Non-covered origins: Croatia, France, Israel, UK, Germany, most EU, Canada, Australia.
Orqa - Croatian Pathway: Not a covered entity. Needs Blue UAS evaluation or program-specific approval for DOD use. FOCI test may apply.
Practical Checklist
⡠Platform not from covered entity (§848)
⡠All 11 components from non-covered entities (§817)
â¡ FCC Covered List check for comms hardware
â¡ ASDA applicability (federal agency involved?)
â¡ Blue UAS clearance or program-specific approval
â¡ SAM.gov registration
â DD Form 2345 for ITAR-controlled data
â Document country of origin for all components
Common Mistakes
"It's not a DJI drone, just a DJI camera" - Wrong. §817 covers components regardless of platform.
"We bought it from a US distributor" - Irelevant. Origin is the manufacturer.
"NDAA only applies to DOD" - ASDA extended it to all federal agencies.
Related
OpenHD Implementation Guide
OpenHD is an open-source digital HD video link built on wifibroadcast — commodity WiFi adapters repurposed as a broadcast video transmitter. Video is one-way broadcast (no association, no ACK — degrades gracefully like analog). Telemetry, settings, and RC control are bidirectional. The link supports encryption with verification. This guide takes you from an empty bench to a working long-range video link with MAVLink telemetry passthrough.
Difficulty: Moderate — requires Linux comfort, soldering, and MAVLink configuration
Time to first link: 2–4 hours
BOM cost: $30–80 depending on hardware tier
Repository: github.com/OpenHD/OpenHD (GPL-3.0, 2.3k stars)
Docs: openhdfpv.org
What You're Building
Two nodes — Air and Ground — each running the OpenHD software stack on a Linux SBC or x86 computer. Both nodes have a WiFi adapter running in monitor/injection mode. The air node captures video from a CSI camera, encodes it, wraps it in wifibroadcast frames, and injects it into the air. The ground node captures all frames promiscuously, decodes the video, and displays it in the QOpenHD app — which also shows MAVLink telemetry forwarded from your flight controller.
[FC] ──UART── [Air SBC] ──wifibroadcast──▶ [Ground SBC/PC] ──UDP── [QOpenHD / Mission Planner]
│ │
[CSI Cam] [Live Video]
No network router. No association. No ACK. Video is one-way broadcast with FEC. Telemetry and settings are bidirectional. OpenHD also supports dual cameras with picture-in-picture, low-latency RC control via USB joystick, and link encryption.
Hardware BOM
Tier 1 — Minimum (RPi Zero 2 + laptop)
| Item | Notes | ~Cost |
|---|---|---|
| Raspberry Pi Zero 2 W | Air unit. Not Zero 1 — not supported | $15 |
| 2× ASUS USB-AC56 or ALFA AWUS036ACH | One for air, one for ground (RTL8812AU, 500mW). For best performance: BLM8812EU (800mW+, no FCC/CE cert). | $20–30 each |
| Arducam or RPi HQ Camera | CSI, supported by OpenHD drivers | $25–50 |
| 22-pin type B CSI cable | Pi Zero uses this, not standard 15-pin | $3 |
| 5V/3A BEC for WiFi adapter | Dedicated power — mandatory | $5 |
| 5V/3A BEC for RPi | Separate rail from the WiFi adapter | $5 |
| Laptop (x86) | Ground station — modern CPU, SecureBoot off | — |
| USB stick (fast) | Ground station image boot (if not native) | $10 |
Total air unit: ~$80
Total ground (excluding laptop): ~$30
Tier 2 — Recommended (CM4 + Rock5)
| Item | Notes | ~Cost |
|---|---|---|
| Raspberry Pi CM4 (4GB, eMMC) | Better thermal, dual camera, lower latency | $60 |
| Ochin CM4 carrier board | Designed for OpenHD, compact form factor | $35 |
| Radxa Rock 5B | Ground station — H.265 hardware decode, lowest latency | $80 |
| 2× ALFA AWUS036ACH | One for air, one for ground | $30 each |
| Arducam Skymaster or IMX477 | Best IQ for OpenHD | $40–80 |
Tier 3 — Lowest Latency
OpenHD custom hardware (purpose-built SBC + camera combination). Check the project Discord for current availability. Cuts latency roughly in half vs. RPi builds.
Step 1: Flash Air Image
- Download the latest OpenHD Evo image from openhdfpv.org/downloads. Select the image matching your SBC (Pi Zero 2, CM4, Rock5, or x86).
- Flash to SD card (Pi Zero 2) or eMMC (CM4 via Ochin) using the OpenHD ImageWriter (recommended — available at openhdfpv.org/downloads) or Balena Etcher.
- CM4/Ochin: enter flash mode by holding the button while connecting USB-C power. Flash is slow — do not disconnect.
- First boot takes several minutes. The SBC reboots multiple times during initial config. This is normal.
Step 2: Flash Ground Image
For x86 (laptop): 1. Flash the x86 OpenHD image to a fast USB stick. 2. Disable SecureBoot in BIOS/UEFI. 3. Set boot priority to USB. 4. Boot from the stick — QOpenHD will start automatically. If not, launch OpenHD and QOpenHD from the desktop shortcuts.
For Rock5 ground station: 1. Flash the Rock5 image to SD or eMMC per the Radxa standard process. 2. OpenHD starts automatically on boot.
Step 3: Wire the Air Unit
Power — critical:
The WiFi adapter draws more current than most SBCs can supply via USB. You need a dedicated BEC wired directly to the WiFi adapter, bypassing the SBC's USB port. Most builds solder the WiFi adapter directly to the SBC's USB power and data pads — remove the USB connector entirely to eliminate vibration disconnects. Two separate BECs: one for the SBC, one for the WiFi adapter.
Camera:
Connect the CSI camera to the SBC using the correct cable (22-pin type B for Pi Zero 2, standard 15-pin for CM4/Ochin). Mount the camera with a solid connection — no flex cable vibration.
Flight Controller:
Connect the FC's MAVLink UART to the SBC's UART. The SBC serial port and FC baud rate must match. Default is 115200; configure the same value in OpenHD's AIR → FC_UART_BAUD and in your FC's telemetry port settings.
FC UART TX ──► SBC RX
FC UART RX ◄── SBC TX
FC GND ──────── SBC GND ← common ground required
Step 4: WiFi Adapter — Air Side
The adapter should appear automatically if using a supported chipset. If you have connection but no video, check: 1. Camera is recognized — in QOpenHD go to AIR CAM 1 → CAMERA_TYPE and select the correct overlay. 2. The SBC reboots after camera type change — this is normal.
Solder the adapter to the SBC USB pads rather than using a plug. Mark the cable with a zip tie so you can identify which antenna connector is which later.
Step 5: Configure the Link
Open QOpenHD on the ground station. The OpenHD logo opens the main menu; the red circle opens the sidebar.
Frequency:
Go to OPENHD → LINK/QUICK. Set frequency to 5.8GHz (recommended — cleaner than 2.4GHz and compatible with 2.4GHz RC transmitters). You can use ANALYZE to see which channels are cleanest in your environment.
Do not change frequency while armed — it will interrupt the link.
STBC/LDPC:
Enable both on air and ground if your adapters support it (RTL8812AU and 8814AU do; RTL8811AU does not — single antenna). These use both antennas for receive diversity and significantly improve range. Both must be enabled or disabled on both ends — mismatched settings break the link.
TX Power:
Set per local regulations. Higher power = longer range. Configure in SOFTWARE SETUP → TX POWER.
RX Diversity (ground):
You can connect multiple WiFi adapters to the ground station for receive diversity — OpenHD picks the best signal per packet. Keep adapters same chipset and same manufacturer. Do not mix RTL8812AU with RTL8812BU or different brands. Not recommended for new users — start with a single adapter.
Step 6: Verify Link
In QOpenHD → STATUS tab, you should see both AIR and GROUND showing as LIVE. If only one shows, check: - WiFi adapter is powered and seated - Both nodes are on the same frequency - STBC/LDPC match between air and ground
Video troubleshooting:
- Black image with "rebooting camera" → wrong CAMERA_TYPE setting. Fix in AIR CAM 1 menu, then wait for reboot.
- Video but no telemetry → UART baud rate mismatch or wiring error. Check FC_UART_BAUD in AIR settings and match it in your FC configurator.
Step 7: MAVLink Forwarding
OpenHD automatically forwards the MAVLink stream from the FC over UDP on the ground station's local network. Default port is 14550. To connect Mission Planner or QGroundControl:
- Connect your laptop to the same network as the ground station (or use the ground station directly).
- In Mission Planner: Connection → UDP → port 14550.
- In QGroundControl: Application Settings → Comm Links → UDP → 14550.
Both QOpenHD and your GCS can receive the MAVLink stream simultaneously — OpenHD broadcasts it to all connected clients.
For Buddy/Wingman: Buddy can connect as a second MAVLink UDP client on port 14550 alongside QOpenHD. No configuration change needed on the OpenHD side.
Step 8: Key Settings Reference
| Setting | Location | Notes |
|---|---|---|
| Frequency | LINK/QUICK | 5.8GHz recommended. Cannot change while armed. |
| Channel width | Sidebar → LINK | 20/40MHz. Wider = more throughput, less range. |
| STBC/LDPC | LINK/QUICK | Enable both if adapter supports. Must match air/ground. |
| TX power | SOFTWARE SETUP → TX POWER | Obey local regs |
| Camera type | AIR CAM 1 → CAMERA_TYPE | Must match physical camera. Reboot required. |
| Video resolution | Sidebar → VIDEO | Also sets air recording resolution |
| Camera exposure | Sidebar → CAMERA | Adjustable in flight, no reboot needed |
| Air recording | Sidebar → AIR RECORDING | OFF / ON / AUTO (arms trigger). Air-side storage only |
| FC baud rate | AIR → FC_UART_BAUD | Must match FC telemetry port config |
Frequency Selection Guide
| Band | Pros | Cons | Use when |
|---|---|---|---|
| 5.8GHz | Clean spectrum, coexists with 2.4GHz RC | Less obstacle penetration | Most builds — open terrain, line of sight |
| 2.4GHz | Better penetration, slightly more range through obstacles | Heavy interference in populated areas, conflicts with 2.4GHz RC | Remote/rural ops where 5.8GHz is congested |
| 6GHz | Coming soon in OpenHD Evo — even cleaner spectrum | Newer hardware required | Future builds |
Integration Patterns
OpenHD + GHST/ELRS (dual-link):
Run OpenHD for video and MAVLink telemetry (long range, high latency acceptable). Run GHST or ELRS as the primary RC control link (low latency, high reliability, shorter range). The FC connects to both simultaneously — telemetry over OpenHD UART, RC input from the RC receiver. This is the recommended pattern for FPV/survey builds where video quality matters but you don't want to bet RC control on wifibroadcast.
OpenHD + Meshtastic (backup comms):
OpenHD as primary video + telemetry. Meshtastic LoRa node as backup telemetry mesh for emergency commands when the OpenHD link degrades. See the Meshtastic section for the dual-link architecture pattern.
OpenHD + Wingman/Buddy:
Buddy connects to the OpenHD ground station's MAVLink UDP stream (port 14550) as a second client alongside QOpenHD. No changes to the OpenHD side. Buddy's Kalman telemetry estimator smooths the MAVLink stream normally regardless of source. The video stream can be displayed in Buddy via RTSP if the ground station exposes one.
Gotchas
Soldering is not optional on the air side. Any plug-in USB connection to the WiFi adapter will eventually vibrate loose mid-flight. Solder it.
Dedicated BECs are not optional. Powering the WiFi adapter from the SBC's USB rail will cause brownouts under TX load. Two separate BECs — one per component.
STBC/LDPC must match on both ends. If one end has it enabled and the other doesn't, you get no link, not a degraded link. Easy to forget when flashing a replacement ground unit.
Camera type must match physical hardware. OpenHD cannot auto-detect the camera model. Wrong CAMERA_TYPE gives a black screen. Set it in QOpenHD, wait for the reboot, then test.
Don't change frequency while armed. The link drops during frequency change. Plan your frequency before takeoff.
The first CM4/Ochin flash is slow. This is a known limitation of the CM4 eMMC interface. Do not disconnect during flash — it will brick the device.
Resources
- openhdfpv.org — official docs (Evo and 2.0 legacy)
- github.com/OpenHD/OpenHD — source code, GPL-3.0
- QOpenHD Android app — ground station app
- Telegram: t.me/OpenHD_User — active community, fastest support
- Discord: discord.gg/NRRn5ugrxH
Last updated: March 2026
Orqa Hardware — Flight Controllers, ESCs, and FPV Systems
Orqa d.o.o. is a Croatian company producing flight controllers, ESCs, and FPV goggles used across both commercial FPV and defense-adjacent applications. Their Croatian origin (EU) is relevant for US government procurement pathways. US subsidiary: Orqa Inc. (Delaware).
Product Line Overview
| Product | PID | Type | MCU | Primary Use |
|---|---|---|---|---|
| QuadCore H7 | FC-1008 | Flight Controller | STM32H743 | FPV racing/freestyle/tactical |
| 3030 Lite F405 | FC-1011 | Flight Controller | STM32F405 | FPV racing/freestyle |
| WingCore H7 | FC-1420 | Flight Controller | STM32H743 | Fixed-wing / VTOL (PX4/ArduPilot) |
| 3030 70A ESC | ESC-1005 | 4-in-1 ESC | BLHeli_32 | Pairs with QuadCore/3030 Lite |
| DTK APB | IS-0001 | FC + Companion | STM32H7 + i.MX8M Plus | All-in-one autonomous platform |
| FPV.One | — | FPV Goggles | — | Pilot display |
| FPV.Connect | — | Video/RC Module | — | Digital FPV link for WingCore |
Orqa QuadCore H7 (FC-1008)
Specifications
- MCU: STM32H743VIT6
- IMU: Dual ICM-42688-P
- Barometer: DPS310
- OSD: AT7456E (integrated)
- Mounting: 30.5×30.5mm (M3)
- BEC: 5V/2A + 9V/2A
- Weight: 9g
- Betaflight Target:
ORQA_QUADCORE_H7 - Country: Croatia (EU) — NDAA compliant
UART Layout (7 UARTs)
| UART | Location | Recommended Use |
|---|---|---|
| UART1 | VCP/USB | Debug only — do NOT use for peripherals |
| UART2 | DJI JST-GH connector (TX2/RX2) | DJI / Walksnail / HDZero — enable MSP for OSD |
| UART3 | TX3/RX3 solder pads (bottom) | GPS |
| UART4 | TX4/RX4 solder pads (bottom) | Receiver (CRSF/ELRS) |
| UART5 | TX5 only (bottom) | SmartAudio or ESC telemetry |
| UART6 | TX6/RX6 solder pads (bottom) | Available |
| UART7 | TX7/RX7 solder pads (bottom) | Available |
Physical layout: - Top side: DJI JST-GH connector, USB-C port, boot button - Bottom side: solder pads for all UARTs, M1-M4 motor signals, VBAT, GND, 5V, 9V, LED, buzzer
Betaflight Setup
The dual ICM-42688-P gyros require Betaflight 4.4 or later.
Key CLI settings:
set gyro_lpf1_static_hz = 0
set gyro_lpf2_static_hz = 0
set dyn_notch_count = 4
set motor_pwm_protocol = DSHOT600
Ports tab configuration (typical): | Port | Function | |------|----------| | UART2 | MSP (for DJI/Walksnail/HDZero OSD) | | UART4 | Serial RX (CRSF/ELRS) | | UART5 | Peripherals → TBS SmartAudio |
Stack Pairing
Designed to stack with the Orqa 3030 70A ESC (ESC-1005) via 8-pin connector. 30.5mm mounting pattern matches.
Orqa 3030 Lite F405 (FC-1011)
Specifications
- MCU: STM32F405RGT6
- IMU: ICM-42688-P
- Barometer: DPS310
- OSD: AT7456E (integrated)
- Mounting: 30.5×30.5mm (M3)
- BEC: 5V/2A
- Weight: 14g
- Betaflight Target:
ORQA_3030LITE_F405 - Country: Croatia (EU) — NDAA compliant
UART Layout (5 UARTs)
| UART | Recommended Use |
|---|---|
| UART1 | VCP/USB |
| UART2 | Receiver (CRSF/ELRS) — TX2/RX2 pads |
| UART3 | GPS — TX3/RX3 pads |
| UART4 | Available — TX4/RX4 pads |
| UART5 | SmartAudio — TX5 only |
Betaflight Setup
Same ICM-42688-P gyro settings as the QuadCore H7. Requires Betaflight 4.4+.
Stack Pairing
Designed to pair with the Orqa 3030 70A ESC (ESC-1005) in a 30.5mm stack.
Orqa WingCore H7 (FC-1420)
Specifications
- MCU: STM32H743VIT6
- IMU: Dual ICM-42688-P (orthogonal mounting for vibration rejection)
- Barometer: DPS310
- PWM Outputs: 14 (10 servo + 4 motor)
- Current Sensor: 160A onboard
- Power: Dual redundant power input
- Weight: 5g
- Firmware: PX4 / ArduPilot
- PX4 Target:
orqa_wingcore_h7 - ArduPilot Target:
OrqaWingCoreH7 - Country: Croatia (EU) — NDAA compliant
Port Layout (All JST-GH — Pixhawk Standard)
No solder pads. Everything connects via JST-GH connectors.
| Port | Connector | Purpose |
|---|---|---|
| TELEM1 | JST-GH | Primary telemetry (SiK radio, companion computer) |
| TELEM2 | JST-GH | Secondary telemetry |
| GPS1 | JST-GH | Primary GPS + I2C compass |
| GPS2 | JST-GH | Secondary GPS |
| RC | JST-GH | Receiver input (SBUS/CRSF/ELRS) |
| VTX | JST-GH | Direct connection to Orqa FPV.Connect module |
| DEBUG | USB-C | Console / firmware flash |
| CAN | JST-GH | DroneCAN bus |
ioTag Encoding (for iNav/firmware development)
ioTag = (port_index << 4) | pin_number
// PA4 = (0 << 4) | 4 = 0x04
// PB8 = (1 << 4) | 8 = 0x18
DFU Flashing
- Hold BOOT button while connecting USB
- Open STM32CubeProgrammer
- Select USB DFU connection
- Load .bin file (not .hex for DFU mode)
- Click Start Programming
Target Platform
Designed for the Orqa MRM2-10 multi-rotor platform. The VTX port connects directly to the Orqa FPV.Connect C2 module.
Orqa 3030 70A 4-in-1 ESC (ESC-1005)
Specifications
- Current: 70A continuous per motor, 80A burst
- Voltage: 3-6S (12.6-25.2V)
- Firmware: BLHeli_32
- Protocol: DShot150/300/600, Oneshot, Multishot, PWM
- Mounting: 30.5×30.5mm (M3)
- Weight: 13g
- Features: Current sensor, temperature sensor, LED support
- Country: Croatia (EU) — NDAA compliant
Stack Connector (8-pin)
| Pin | Signal |
|---|---|
| 1 | M1 (motor 1 signal) |
| 2 | M2 (motor 2 signal) |
| 3 | M3 (motor 3 signal) |
| 4 | M4 (motor 4 signal) |
| 5 | CURR (current sensor) |
| 6 | VBAT |
| 7 | GND |
| 8 | ESC telemetry TX |
Can connect via ribbon cable or direct solder.
Orqa DTK APB (IS-0001)
Overview
Single-board platform combining flight controller and companion computer. Eliminates the traditional FC + separate companion model.
Specifications
- FC MCU: STM32H7 (running PX4)
- Companion: NXP i.MX8M Plus (running Linux)
- NPU: 2.3 TOPS (onboard AI inference)
- Weight: 13g
- Connectors: All JST-GH (Pixhawk standard)
- Features: MAVLink bridge built-in, no separate companion wiring needed
- Country: Croatia (EU) — NDAA compliant
Why It Matters
No separate companion computer wiring. The MAVLink bridge between FC and companion is built into the board. Direct Ethernet and serial between FC and companion. The NPU enables onboard AI inference (object detection, terrain classification) without external hardware.
Orqa Antennas
| Product | PID | Band | Connector | Polarization |
|---|---|---|---|---|
| spiroNET Mox 915MHz | ANT-1001 | 915 MHz | RP-SMA | — |
| spiroNET Mox 490MHz | ANT-1002 | 490 MHz | RP-SMA | — |
| FPV.01 Pro Omni (LHCP) | ANT-1181 | 5.8 GHz | SMA | LHCP |
| FPV.01 Pro Omni (RHCP) | ANT-1229 | 5.8 GHz | SMA | RHCP |
| FPV.P1.Pro Patch | ANT-1185 | 5.8 GHz | SMA | Directional |
| FPV.P1 Patch (LHCP) | ANT-1290 | 5.8 GHz | SMA | LHCP |
Orqa Platforms
| Platform | Type | Notes |
|---|---|---|
| MRM2-10 | Multi-rotor | Uses WingCore H7 + FPV.Connect |
| MRM2-10F | Multi-rotor (fixed) | Fixed-arm variant |
| MRM1-5 | Multi-rotor (small) | Smaller platform |
Compliance and Procurement
- Origin: Orqa d.o.o., Zagreb, Croatia (EU)
- US Subsidiary: Orqa Inc. (Delaware)
- NDAA §848: NOT a covered entity (not Chinese/Russian/Iranian)
- FOCI: Foreign Ownership, Control, or Influence mitigation may be required for classified DOD programs
- SAM.gov: Registration required for US government contracting
- TReX II: Consortium pathway for defense sales
- Blue UAS: Not currently on the DIU Blue UAS cleared list (Croatian origin requires separate pathway)
- ITAR: Standard EAR99 classification for commercial drone components
Related
Non-US Platforms — The Rest of the World Flies Too
Part 6 — Components The US is not the center of the UAS universe. Ukraine, Turkey, and Israel deploy more combat UAS than the US. The Handbook must reflect the actual global landscape.
Why This Chapter Exists
The parts-db started with 35 drone models — almost all US-based or DJI. The drone database JSON has been expanded to 137 platforms across 20+ countries. But the Handbook's platform profiles still skew heavily Western. This chapter provides the overview layer for the global ecosystem that detailed profiles will fill over subsequent sessions.
Ukraine — The World's Most Active UAS Ecosystem
Ukraine consumed ~9.6 million drone motors in 2025. The country produces and deploys more combat UAS than any nation except possibly China and Russia. Their innovation cycle — build, deploy, get feedback from combat, iterate — runs faster than any formal defense acquisition program.
Key Manufacturers
| Company | Type | Scale | Notable |
|---|---|---|---|
| TAF Industries | FPV production | 80,000+ drones/month | One of the largest FPV producers. Found alternative motors to Motor-G at better price |
| Vyriy | FPV drones | Mass production | First 100% Ukrainian-sourced FPV. Motor-G customer since Feb 2025. Autonomous drones with TFL-1 nav |
| Wild Hornets | Interceptor drones | Active production | Sting interceptor — 315-350 km/h. Counter-Shahed role. |
| General Cherry | FPV + interceptors | Expanding | Air Pro interceptor (200 km/h). Motor-G customer. Expanding interceptor lineup |
| Ukrspecsystems | ISR platforms | Established | PD-2, Leleka-100 — reconnaissance workhorses. Largest Ukrainian drone manufacturer by some measures |
| Skyeton | Fixed-wing endurance | Established | Raybird-3 — 28-hour endurance. Fixed-wing ISR |
| FirePoint | Long-range strike | Active | FP-1, FP-2 fixed-wing strike. Hundreds of km range |
| Terminal Autonomy | Long-range strike | Active | AQ-400 Scythe — long-range autonomous strike |
| UkrJet | Jet-powered strike | Active | UJ-26 Bober — 1,000 km range turbojet |
| Aerorozvidka | Volunteer tech unit | Active | R18 octocopter — dropped munitions pioneer |
| Escadrone | Multi-role | Active | Various tactical platforms |
| 3DTech | Fiber-optic FPV | Active | 3D-printed fiber spool casings |
| Hasta | Optical guided FPV | Active | 20-50 km fiber-optic range |
The Ukrainian Model
Ukraine's drone ecosystem is characterized by what Sine Engineering calls "creative chaos" — hundreds of small manufacturers, rapid iteration, combat-driven requirements, and minimal bureaucracy. This produces more innovation per dollar than any formal defense program. The ecosystem spans from garage workshops to companies producing 80,000+ drones per month.
Key insight: Only ~5% of Ukrainian drone companies don't rely on Chinese components. Motor-G's 17% domestic motor market share means 73% is still Chinese-sourced. The push toward localization is real but incomplete — stators will be 100% Ukrainian by May 2026, but magnets, bearings, and some test equipment still require import.
Turkey — The Export Leader
Turkey has built the world's most successful drone export industry. Baykar's TB2 changed the narrative about drone warfare globally.
Key Manufacturers
| Company | Platform | Type | Notable |
|---|---|---|---|
| Baykar | TB2 | MALE ISR/strike | The drone that changed modern warfare. Combat-proven in Libya, Syria, Nagorno-Karabakh, Ukraine. $2M+ unit cost |
| Baykar | Akıncı | Heavy MALE | Twin-engine, 24-hr endurance, AESA radar, 1,350 kg payload |
| Baykar | Kızılelma | Unmanned fighter | Jet-powered, carrier-capable, AI-enabled. In flight testing |
| Baykar | K2 Kamikaze | Loitering munition | Low-cost expendable strike |
| TAI/TUSAŞ | ANKA series | MALE | Turkish Aerospace, Aksungur variant for maritime |
| TAI | ANKA-3 | Stealth UCAV | Flying wing design, in development |
| STM | Kargu-2 | Autonomous loitering munition | Documented autonomous engagement (Libya 2020) |
| Asisguard | Songar | Armed multirotor | Turret-mounted weapons on commercial-class frame |
Turkish Defense Electronics
Turkey's drone success is underpinned by domestic avionics: Aselsan (communications, EW, radar), TUALCOM (datalinks), Meteksan (C-band datalinks), Roketsan (munitions). This vertical integration is a key competitive advantage.
Israel — The Technology Originator
Israel pioneered military UAV operations decades before the current drone era. Israeli companies built many of the autonomous systems and sensor payloads that define the state of the art.
Key Manufacturers
| Company | Platform | Type | Notable |
|---|---|---|---|
| Elbit Systems | Hermes 900/450 | MALE ISR | Widely exported. In service with multiple NATO nations |
| Elbit | Skylark | Tactical man-portable | Small ISR, widely deployed |
| Elbit | Lanius | Indoor autonomous | AI-powered indoor mapping/ISR micro-drone |
| IAI | Harop/Harpy | Loitering munition | Anti-radiation / autonomous strike. Combat-proven |
| IAI | Heron | MALE ISR | Long-endurance ISR platform |
| Aeronautics | Orbiter series | Tactical ISR | Multiple variants, widely exported |
| XTEND | XOS | Indoor/tactical | Immersive control interface |
| Rafael | Spike Firefly | Loitering munition | Man-portable, indoor-capable |
Israeli Technology Layer
Beyond complete platforms, Israeli companies provide critical subsystems used across the global industry: thermal/EO payloads (Elbit, Controp, Rafael), communications (Mobilicom, Elsight), cyber C-UAS (D-Fend, Sentrycs), fiber-optic (Kela Technologies), and autonomy software. Many Western drone platforms incorporate Israeli-origin components.
European Union
Germany
- Quantum Systems — Trinity Pro (commercial VTOL), Vector AI (defense). Bundeswehr contract. Combat deployment in Ukraine.
- Helsing — AI/autonomy for defense. FCAS program participation.
- Rheinmetall — Heavy defense UAS platforms.
France
- Delair/KNDS — MATARIS fixed-wing for defense.
- Safran — Patroller MALE platform.
- Novadem — NX70 micro-tactical for infantry.
UK
- Tekever — AR3/AR5 VTOL ISR. Active in maritime surveillance.
- Malloy Aeronautics/BAE — T-150 heavy-lift logistics drone.
Poland
- WB Group — Warmate 3.0 (loitering munition), FlyEye (ISR), Warmate 20. Combat-proven in Ukraine.
Other
- Primoco UAV (Czech) — One 150, NATO STANAG certified.
- Threod Systems (Estonia), KrattWorks (Estonia) — NATO-aligned tactical platforms.
- DeltaQuad (Netherlands) — VTOL mapping/ISR.
- ALX Systems (Belgium) — Tactical ISR.
Other Notable Regions
South Korea
- Doosan Mobility Innovation — Hydrogen fuel cell drones (DS30, DJ25). See propulsion chapter.
- KAI — Korean defense UAS programs.
UAE
- EDGE Group / ADASI — Rapidly expanding military UAS capability.
Iran
- HESA / IRGC — Shahed-136/238 series. Combat-deployed at massive scale in Ukraine (Russian use). The threat that Ukrainian C-UAS and interceptor drones are designed to counter.
India
- ideaForge — SWITCH tactical VTOL. Indian military procurement.
Australia
- Insitu Pacific — ScanEagle derivative operations.
- Currawong Engineering — Hybrid propulsion (covered in propulsion chapter).
- Hargrave Technologies — NDAA ESCs (covered in ESC chapter).
- DroneShield — Counter-UAS (covered in C-UAS chapter).
The Handbook's Global Obligation
The Drone Integration Handbook claims to be an industry reference. An industry reference that only covers US and DJI platforms is not a reference — it's a marketing catalog.
These principles guide the global coverage:
-
Combat-proven > spec sheet. A Ukrainian drone that has flown 200,000 sorties is more credible than a US prototype that has flown 20.
-
NDAA compliance is a procurement constraint, not a quality indicator. The Handbook documents what exists, not just what US procurement officers can buy.
-
The Handbook serves operators globally. A Ukrainian crew chief, a Turkish integrator, a German Bundeswehr operator, and a US defense contractor should all find useful information.
-
Credit the ecosystem. Ukraine's rapid innovation, Turkey's export success, Israel's technology depth — these define the industry as much as any Silicon Valley startup.
Detailed platform profiles for these manufacturers will be added in subsequent sessions. The drone database JSON (137 platforms) contains the structured data; the Handbook profiles provide the operator-useful prose.
Last updated: March 2026
Power Architecture & EMI
Most "random" failures on custom builds — video noise at high throttle, FC reboots on fast descents, RSSI drop near the motor arms, GPS losing lock on takeoff — are power problems. The root causes are almost always the same: the power rail isn't clean, grounds aren't shared correctly, or high-frequency switching noise is coupling into sensitive electronics. This guide explains the full power path and the practical fixes for each failure mode.
The Power Path
Battery → Main leads → ESC power input → Motor phases
↓
Capacitor (parallel)
↓
BEC / Power module → FC + peripherals
↓
FC regulated 5V → Receiver, GPS, cameras
Every component in this chain is a noise source or noise victim. Understanding the direction current flows — and what happens at each transition — determines where problems originate.
The Battery and Main Leads
Lead Length and Inductance
Battery leads are inductors. Long leads store energy in their magnetic field; when current changes rapidly (like when a motor commutates), the inductor resists the change and generates a voltage spike. A 150mm pair of 12AWG leads on a 4S build can produce voltage spikes of 3–5V above the rail voltage during aggressive motor braking.
Keep main leads as short as physically possible. The target is under 100mm from connector to ESC power pads. On builds where the battery tray is remote from the ESC stack, use a low-impedance power distribution board rather than long leads.
Connector Choice
| Connector | Continuous | Burst | Best For |
|---|---|---|---|
| JST-PH | 2A | 3A | 1S micro builds |
| JST-XH | 5A | 8A | Balance connectors only |
| XT30 | 30A | 60A | 3" builds, sub-4S |
| XT60 | 60A | 100A | Standard 5"–7" builds |
| XT90 | 90A | 150A | Heavy-lift, 10"+ |
| AS150 | 150A | 300A | Very high current |
Use the right connector for the current. An XT60 on a 12S heavy-lift build that pulls 200A peak will run hot and eventually fail. An XT90 on a 5" freestyle build adds 10g of unnecessary weight.
The Capacitor: The Most Ignored Component
The bulk capacitor across the ESC power input is the single most effective noise reduction measure on a custom build. Most builders omit it. Almost every builder who adds one later says "I wish I'd done that from the start."
What It Does
BLDC motors are switched loads. At the moment of commutation, the current draw changes sharply — the inductance of the motor winding releases stored energy back into the power rail as a brief voltage spike. Without a capacitor, this spike travels up the power leads to the battery and to every other component on the rail. With a capacitor, the spike is absorbed locally and dissipated.
The capacitor also acts as a local energy reservoir, keeping voltage stable during rapid throttle changes. When all four motors suddenly increase thrust simultaneously (a quick pitch-up), the current demand spikes before the battery leads can respond. The capacitor fills that gap.
Selecting the Capacitor
Low-ESR (Equivalent Series Resistance) electrolytic capacitors are the correct type. Ceramic capacitors have too low capacitance; standard electrolytics have too high ESR to absorb fast spikes.
Minimum specifications: - Voltage rating: at minimum 1.5× your fully-charged battery voltage - 4S (16.8V): use 35V or higher - 6S (25.2V): use 35V or 50V - 12S (50.4V): use 63V or higher
Capacitance: 470µF–1000µF for 4S–6S builds. Higher capacitance is better up to a point; above ~2200µF there's diminishing return and significant weight addition.
Placement: As close to the ESC power pads as physically possible. The leads between the capacitor and the ESC are part of the inductive loop — every millimeter counts. On a 4-in-1 stack, solder directly to the battery pads on the ESC board if layout permits.
Popular parts: - Panasonic FR series 35V 1000µF — low ESR, compact - Nichicon HE series 35V 470µF — very low ESR, common in FPV - Nichicon UHE series 50V 680µF — good for 6S builds
BEC vs OPTO: Powering the FC
The BEC Problem
An ESC with a Battery Eliminator Circuit (BEC) steps down battery voltage to 5V to power the FC and receiver. Convenient, but the BEC shares a power and ground plane with the motor drive stage. Switching noise from the motor commutation can couple directly through the shared ground into the FC's microcontroller and ADC inputs.
On low-power 1S–3S builds with modest motor noise, this is rarely a problem. On 6S+ builds with large motors, it can cause: - Gyroscope noise visible in Blackbox as high-frequency spikes - Compass interference (magnetometer picks up switching fields) - RSSI jitter on receivers sharing the 5V bus - Video noise coupling through shared 5V to the VTX
The fix: Use a separate, isolated 5V power source for the FC. Options: 1. A dedicated linear regulator or low-noise DC-DC converter on the FC board's own input (most modern FC boards have this — check the schematic) 2. A separate BEC (dedicated 5V regulator) powered directly from the battery, isolated from the ESC 3. OPTO ESC (no BEC at all) + separate FC power input
Most FC boards sold in 2024+ have their own 5V regulator on a separate input. Use it.
FC Power Input Best Practice
Battery (4S–6S) → ESC (motor drive only, no BEC used)
Battery (4S–6S) → Separate 5V BEC → FC 5V input
FC 5V output → Receiver, GPS, cameras
On stacked FC/ESC builds, check whether the FC's 5V pin is powered from the ESC BEC or from its own regulator. Many "stacks" run everything off the ESC BEC to simplify wiring — this is convenient but electrically noisy.
Ground: The Most Misunderstood Conductor
What Ground Actually Is
"Ground" is not a zero-voltage reference point — it's a return current path. Current flows in loops. Every milliamp that flows from the battery through a motor flows back to the battery through the ground conductor. On a poorly designed build, all return current shares the same ground wire, and different currents interfere with each other.
The key principle: keep high-current return paths physically separate from low-current signal return paths.
The Ground Loop Problem
A ground loop occurs when a circuit has multiple ground return paths, creating a loop of wire with varying potentials at different points. The symptom is usually video interference — a rolling bar in the FPV feed that gets worse with motor speed.
Classic ground loop: VTX and camera share the same ground wire as the ESC. Motor switching current flows through this shared ground, inducing a voltage across the impedance of the wire, which appears as noise in the video signal.
Fix: Separate the video ground from the power ground. Use a capacitor or ferrite bead in series with the video ground return. Many FPV cameras include this; many do not.
Common Ground Rule
The FC must share a common ground with every component it communicates with. UART RX/TX, PWM outputs, analog inputs — all require a shared ground between the FC and the peripheral. Floating grounds cause erratic behavior: random telemetry values, ESC calibration failures, GPS lock issues.
On every UART connection:
FC TX → Peripheral RX
FC RX → Peripheral TX
FC GND → Peripheral GND ← this wire is as important as the data wires
The ground wire on a UART connection can be the same wire as the 5V supply ground if the peripheral is powered from the FC's 5V rail. If the peripheral is independently powered (e.g., a VTX running off battery directly), a separate ground wire from the FC to the peripheral is required.
EMI: High-Frequency Noise Sources and Victims
Sources of EMI on a UAS
| Source | Frequency Range | Victims |
|---|---|---|
| ESC motor commutation | 10kHz–500kHz | FC gyro, magnetometer, video |
| Motor magnets (mechanical) | RPM-dependent | FC gyro (via vibration) |
| 2.4GHz receiver | 2.4GHz | GPS L1 (1.575GHz — adjacent) |
| 5.8GHz VTX | 5.8GHz | Remote ID (5.8GHz WiFi), FPV |
| Remote ID (WiFi/BT) | 2.4GHz, 5.8GHz | RC links |
| GPS (L1) | 1.575GHz | Nearby 1.8GHz links |
Separation and Shielding
The practical rule: distance is the cheapest shielding. Double the separation and you cut radiated interference by 6–12dB depending on geometry.
GPS placement: As far from the VTX as the frame allows. The VTX is the strongest intentional emitter on the build; GPS is one of the most sensitive receivers. Minimum 10cm separation. Never stack GPS directly above a VTX.
Magnetometer: Move it as far as possible from motor wires and power leads. Motor current creates a magnetic field proportional to current flow. A magnetometer (compass) directly above a high-current ESC will read garbage at full throttle. 5–10cm separation from any high-current conductor is the minimum.
RC receiver: Antennas should be oriented so they're not parallel to motor wires. Perpendicular routing reduces coupling. Avoid routing receiver antenna wires along power leads.
Ferrite Beads
A ferrite bead is a passive component that attenuates high-frequency noise on a wire by increasing its impedance at radio frequencies while leaving DC and low-frequency signals unaffected.
Where to use them: - In series on the 5V power line to the VTX (attenuates switching noise from BEC) - In series on the video signal line between camera and VTX - On the GPS power line if GPS noise is suspected - In series on UART power lines for noisy peripherals
Ferrite beads are passive noise mitigation — they address symptoms, not root causes. Fix the root cause first (capacitor, ground separation, physical layout), then add ferrite beads for any remaining residual noise.
Specific Failure Modes
"Video noise at high throttle"
Cause: Motor switching noise coupling into the video chain via shared power or shared ground.
Fix sequence: 1. Add/upgrade capacitor on ESC power pads 2. Power VTX from a separate filtered 5V source (not direct battery or ESC BEC) 3. Add ferrite bead in series on VTX power wire 4. Add ferrite bead on video signal wire 5. Check for ground loops — is the camera ground connected to FC ground connected to ESC ground? If so, try breaking one path
"FC reboots on fast descent / motor braking"
Cause: Regenerative braking. When motors decelerate rapidly (fast descent, motor_stop in Betaflight), they briefly act as generators, pushing current back into the power rail. Without a large capacitor to absorb this, voltage spikes above the FC's operating limit.
Fix: 1. Add a larger capacitor (1000–2200µF) close to the ESC power input 2. Enable bidirectional DShot and disable motor_stop (use digital idle instead) 3. Verify the FC's input voltage range — some FCs have poor voltage spike tolerance
"GPS drops lock on throttle up"
Cause: RF interference from ESC switching reaching the GPS receiver's front end.
Fix sequence: 1. Physically move GPS further from ESC stack 2. Move GPS antenna clear of motor wires (route away from arms) 3. Ensure GPS module has its own filtered 5V supply 4. Add ferrite bead on GPS power wire 5. If using a combined GPS/compass module, check compass for interference (see magnetometer section above)
"RSSI drops when VTX is active"
Cause: 5.8GHz VTX output reaching the 2.4GHz RC receiver's RF front end (harmonic mixing), or physical proximity causing desensitization.
Fix: 1. Move VTX antenna away from receiver antennas — minimum 5cm, perpendicular if possible 2. If using a 5.8GHz VTX near an ExpressLRS 2.4GHz receiver, verify no receiver de-sense (the LNA in the receiver can be driven into compression by a nearby strong transmitter at a nearby frequency) 3. Consider using a different VTX frequency band if the problem persists
"Gyro noise / oscillations with no obvious cause"
Cause: Electrical noise from ESC coupling into the gyroscope via the power rail or PCB traces.
Fix: 1. Add capacitor to ESC power input 2. Use soft-mounting for the FC stack (rubber standoffs) — vibration and electrical noise often appear together 3. Enable RPM filtering (requires bidirectional DShot) — this directly removes motor-frequency noise from the gyro signal 4. Check ESC firmware version — older BLHeli_32 / AM32 versions have known noise issues; update
Power Budget: Know Your Numbers
Before a build is complete, calculate the total power draw to verify the battery and BEC can handle every component simultaneously.
| Component | Typical Draw |
|---|---|
| Flight controller | 200–500mA at 5V |
| GPS module | 50–150mA at 5V |
| RC receiver (ELRS) | 100–200mA at 5V |
| FPV camera | 100–200mA at 5V |
| VTX (5.8GHz, 500mW) | 1–2A at 5V |
| LED strip (per meter) | 300–1000mA at 5V |
| Companion computer (Pi Zero) | 200–500mA at 5V |
A 5" freestyle quad with FC + GPS + ELRS + camera + VTX draws roughly 2.5–4A at 5V continuously. A 1A BEC will thermal-shutdown. Use a 3A minimum BEC; 5A for builds with companion computers or many LEDs.
Tracking total wattage: Multiply 5V draw by 5, then divide by battery efficiency (~85%) to get the battery watts consumed by electronics alone. On a 4S (14.8V) build drawing 3A at 5V, that's 15W from electronics, ~18W from the battery — a non-trivial portion of total power on a lighter build.
Non-Electric Propulsion — Beyond Batteries
Part 6 — Components When batteries aren't enough. Hydrogen fuel cells, hybrid-electric engines, IC engines, and micro-turbines for endurance platforms.
When Electric Isn't Enough
Battery-powered multirotors dominate the small UAS market because they're simple, reliable, and require no fuel handling. But batteries have hard physical limits: current lithium-ion tops out at 260 Wh/kg (conventional) to 520 Wh/kg (Amprius silicon anode). Gasoline stores 12,000 Wh/kg. Hydrogen stores 33,000 Wh/kg (though fuel cell system weight reduces the practical advantage significantly).
For missions requiring hours of endurance, heavy payloads at range, or VTOL-to-fixed-wing transition, non-electric propulsion fills the gap that batteries physically cannot.
Hydrogen Fuel Cells
Fuel cells convert hydrogen directly to electricity. No combustion, no moving parts in the cell itself. The electricity powers standard brushless motors. Flight times of 2–5.5 hours are achievable vs. 30–50 minutes on batteries for equivalent platforms.
Doosan Mobility Innovation (South Korea)
The most commercially mature hydrogen drone platform.
| Detail | Value |
|---|---|
| HQ | South Korea |
| Key Product | DS30W — world's first mass-produced hydrogen fuel cell drone |
| Flight Time | 2 hours (no payload), extended with lighter loads |
| Range | Up to 80 km |
| Speed | Up to 80 km/h |
| Fuel Cell | DP30M2S powerpack, 2.6 kW |
| Voltage Range | 40–74V output |
| System Weight | 21 kg (with 10.8L tank), 20 kg (with 7L tank) |
| Payload | Up to 5 kg |
| Motors | 8 (octocopter) |
| Fixed-Wing | DJ25 VTOL — 330 min endurance, 450 km range at 25 m/s |
| Awards | CES 2022 Innovation Award |
The DS30W is available as a complete system or the DP30 powerpack can be integrated into custom airframes. Doosan provides hydrogen storage, transport cases, and monitoring via their View App.
The DJ25 fixed-wing VTOL is the endurance champion — 5.5 hours of flight on hydrogen vs. ~2 hours on lithium batteries for equivalent platforms.
HES Energy Systems (Singapore)
Hydrogen fuel cell systems optimized for UAS. Modular powerpack design for integration into third-party airframes.
Pegasus Aeronautics (Canada)
Hydrogen-powered UAS systems. Focused on long-endurance applications.
Hybrid-Electric
Hybrid systems combine an internal combustion engine with electric motors. The engine drives a generator that powers the electric motors and charges batteries. This provides IC engine endurance with electric motor simplicity and redundancy.
Currawong Engineering (Australia)
The most complete hybrid UAS powertrain manufacturer.
| Detail | Value |
|---|---|
| HQ | Australia |
| Products | Corvid-29 (29cc EFI), Corvid-50 (50cc EFI), Cortex-50 Hybrid |
| Key Feature | Turnkey systems: engine + generator + ECU + hybrid power management |
| ECU Heritage | Based on Autronic SM4 platform (10,000+ units in field) |
| Protocols | DroneCAN, PiccoloCAN, UART |
| Partners | Veronte/Embention (autopilot integration), Honeywell (700+ EFI systems on T-Hawk) |
Corvid-29: 29cc single-cylinder 2-stroke EFI. High power-to-weight. Minimal maintenance. Passed two 150-hour FAR Part 33 endurance tests without major overhaul. Turnkey system includes generator, power supply, remote starter, isolation mount, low-noise exhaust.
Cortex-50 Hybrid: 50cc 2-stroke EFI with hybrid power architecture. Bi-directional power flow — engine charges batteries while flying, batteries supplement during peak demand. Cortex Hybrid Power System (CHPS) provides up to 750W electrical, supports 6S–14S batteries (24–56V), integrated engine restart. Single high-voltage battery operation for VTOL quad-planes.
Heavy fuel option: UMAN-VP4F fuel for safer field operations (non-volatile, stable). Power output comparable to petrol.
Hirth Engines (Germany)
Two-stroke UAS engines. German engineering, established manufacturer. Models range from small tactical to medium endurance platforms.
ePropelled (UK/USA)
Partnership with Hirth Engines announced for next-gen hybrid systems. Combining advanced IC engines with intelligent electric propulsion and power management. Prototype demonstrations expected early 2026.
Internal Combustion (Direct Drive)
IC engines driving propellers directly. Simpler than hybrid (no generator/motor conversion losses) but limited to fixed-wing or single-rotor configurations.
Rotron / Aero Design Works (Australia)
Wankel rotary engines for UAS. Compact, high power-to-weight, smooth operation (no reciprocating vibration). Used in medium endurance fixed-wing and VTOL platforms.
UAV Turbines (USA)
| Detail | Value |
|---|---|
| HQ | USA |
| Technology | Micro-turbine engines |
| R&D Investment | $50M+ over 15+ years |
| Key Product | Monarch 5 micro-turbine |
| Generator Sets | 25 kW APEX — 75% lighter, 50% smaller than diesel equivalents |
| Fuel | Multi-fuel including JP-5, JP-8, Jet-A, diesel, biofuels |
| Demonstrated | 480 lb TigerShark drone platform |
Micro-turbines offer superior reliability, fuel flexibility, lower noise, and lower total cost of ownership vs. diesel/piston engines. The challenge has always been miniaturization — components like ignitors, pumps, and compressors require complete redesign at micro scale, not just scaling down.
UAVT's APEX generator sets are also positioned for man-portable ground power — 3-4× more generators per helicopter/truck load than conventional diesel units.
Choosing Propulsion
| Method | Endurance | Complexity | Best For |
|---|---|---|---|
| Battery (LiPo/Li-Ion) | 20–50 min | Low | Small multirotor, FPV, tactical |
| Battery (Amprius SiCore) | 40–90 min | Low | Extended multirotor, high-value ISR |
| Hydrogen Fuel Cell | 2–5.5 hr | Medium | Long endurance, BVLOS, delivery |
| Hybrid-Electric | 2–8 hr | High | VTOL fixed-wing, heavy payload |
| IC Direct Drive | 4–24+ hr | Medium | Fixed-wing ISR, MALE class |
| Micro-Turbine | 4–12+ hr | High | Group 3-4 platforms, heavy payloads |
-
Battery if you can. Electric is simpler, more reliable, and cheaper to operate. Only go non-electric when battery endurance is genuinely insufficient for the mission.
-
Hydrogen for clean endurance. No exhaust emissions, no vibration from combustion. But hydrogen handling requires training and infrastructure (storage, transport, refueling).
-
Hybrid for VTOL transition. Quad-plane designs (vertical takeoff, horizontal cruise) benefit most from hybrid — electric for hover, engine for cruise efficiency.
-
IC/turbine for maximum endurance. When you need a platform in the air for 8+ hours, combustion is the only practical option with current technology.
-
Fuel logistics matter. JP-8/Jet-A compatibility (UAV Turbines, Currawong heavy fuel) simplifies military logistics. Hydrogen requires dedicated supply chain.
Last updated: March 2026
Propulsion System Matching
Motor, ESC, prop, and battery are a single system. Change one and you've changed all of them. Most build failures — insufficient hover time, thermal shutdown, desync, weak punch-out — trace back to a mismatch somewhere in this chain. This guide walks the selection process from frame weight to battery spec, in the order you should actually make the decisions.
The Selection Order
Frame weight → thrust-to-weight ratio → motor → prop → ESC → battery
Never start with the motor. Start with what you need the system to do.
Step 1: Establish Your All-Up Weight
All-up weight (AUW) is the total flying weight: frame + motors + ESC + FC + battery + payload + wiring. Before you know your AUW you don't know anything else.
For a first build, estimate: weigh the frame, add ~30g per motor, ~20g for the ESC stack, ~30g for FC + GPS + wiring, then the battery (usually the biggest variable). Your payload weight is fixed — design around it, not against it.
Rule of thumb for initial estimates: - 5" FPV freestyle: 350–450g AUW - 5" long-range: 500–650g AUW - 7" long-range: 700–900g AUW - 10" survey quad: 1.2–2.0kg AUW - Heavy-lift hex (spray/survey): 4–10kg AUW
Step 2: Set Your Thrust-to-Weight Ratio
Thrust-to-weight ratio (TWR) is total maximum thrust divided by AUW. It determines what the aircraft can do.
| Application | Minimum TWR | Recommended TWR |
|---|---|---|
| Stable photography / mapping | 2:1 | 3:1 |
| General utility / survey | 3:1 | 4:1 |
| Freestyle / sport | 4:1 | 6–8:1 |
| Racing | 8:1 | 10–14:1 |
| Payload delivery (heavy-lift) | 2.5:1 | 3.5:1 |
A 2:1 TWR means the motors produce exactly twice the aircraft's weight at full throttle. This sounds like plenty, but it means you're flying at ~50% throttle just to hover — leaving almost no margin for wind, attitude corrections, or payload variation. For anything other than calm, stable survey work, 3:1 is a better floor.
Calculate required total thrust:
Required thrust = AUW × TWR target
Per-motor thrust = Required thrust ÷ motor count
A 700g 5" quad targeting 5:1 TWR needs 3,500g total thrust — 875g per motor on a quad.
Step 3: Select the Motor
KV Rating
KV is RPM per volt with no load. Higher KV = higher RPM at a given voltage, smaller prop needed. Lower KV = lower RPM, larger prop, more torque, more efficient at extracting thrust from large slow propellers.
KV × prop size × voltage must balance. The constraint is that tip speed (prop diameter × RPM) should stay below roughly 200m/s for efficiency, and prop loading (thrust per square centimeter of disc area) should stay in the efficient range.
| Frame / Prop | Battery | Typical KV Range |
|---|---|---|
| 3" micro / cinewhoop | 3–4S | 2000–3000 KV |
| 5" FPV freestyle | 4–6S | 1700–2400 KV (4S), 1400–1700 KV (6S) |
| 5" long-range | 6S | 1300–1700 KV |
| 7" long-range | 4–6S | 1300–1600 KV |
| 10" survey | 4–6S | 700–1200 KV |
| Heavy-lift 15"+ | 6–12S | 100–400 KV |
Higher voltage = lower KV for the same prop. Running a 1750 KV motor on 4S (16.8V) gives ~29,400 RPM. The same prop on 6S (25.2V) would give ~44,100 RPM — too fast for most 5" props and brutally inefficient. Drop to ~1200 KV for 6S with a 5" prop to hit the same RPM range.
Stator Size
Motor stator is described as WWHHmm: width × height in millimeters. A 2306 motor has a 23mm wide, 6mm tall stator.
- Larger stator = more copper = more torque = better for larger props
- Taller stator = more winding depth = higher torque at similar width
- Wider stator = faster motor, better for higher RPM applications
| Prop Size | Typical Stator |
|---|---|
| 2–3" | 1103–1306 |
| 3–4" | 1404–1606 |
| 5" | 2203–2306 |
| 6–7" | 2407–2806 |
| 8–10" | 3110–3515 |
| 12"+ | 4012–4114+ |
Thrust Curves
Always verify thrust against manufacturer data at your target voltage. Rated thrust is usually at full throttle on the test bench — your hover throttle should be 40–60% of max thrust, not 70%+. If you're hovering at 70% throttle you have no margin left.
Step 4: Select the Propeller
Diameter
Larger diameter = more air moved per revolution = more efficient thrust per watt (at low speed). But larger props are heavier, have more gyroscopic effect, and react more slowly to throttle changes.
Match prop diameter to your motor stator (see table above) and verify clearance in your frame. Standard clearance is at least 10% of prop diameter between the tip and the nearest obstruction.
Pitch
Pitch is the theoretical distance the prop advances per revolution in inches. Higher pitch = more thrust per RPM at higher airspeeds but less efficient at hover. Lower pitch = more efficient hover but less top speed.
| Application | Pitch Target |
|---|---|
| Hover efficiency / mapping | Low pitch (3–4") |
| General purpose | Medium pitch (4.3–4.5") |
| Speed / aggressive freestyle | High pitch (5–6"+) |
Blade Count
Two-blade propellers are more efficient at lower RPMs. Three-blade props move more air per revolution (higher thrust at same RPM) but are less efficient. Four-blade props are even less efficient but provide smoother thrust, useful for cinematography where prop wash artifacts matter more than flight time.
Changing Props Requires Retuning
Every prop change is a PID tuning event. A new prop of the same nominal spec from a different manufacturer — different weight, rigidity, blade profile — will change the aircraft's response. If you swap props, run a Blackbox session and check for oscillations before putting on a camera.
Step 5: Select the ESC
Amperage Rating
ESC continuous current rating must exceed the motor's maximum current draw with margin.
ESC amperage ≥ motor max current × 1.25 (25% margin minimum)
Motor max current is on the datasheet, measured at the test voltage with the test prop. Your combination may differ — verify with a watt meter on the first flights.
4-in-1 vs individual ESCs: - 4-in-1: cleaner build, lighter, centralized mass. Standard for 3"–7" builds. Thermal density is higher — heat from all four ESCs in one package. - Individual: better thermal management, field-replaceable. Better for 8"+ where each motor draws more current.
Protocol
| Protocol | Type | Notes |
|---|---|---|
| PWM | Analog | Legacy. Avoid on new builds. |
| OneShot125/42 | Analog hybrid | Obsolete. |
| Multishot | Analog hybrid | Obsolete. |
| DShot150/300/600 | Digital | Standard for 2024. Use DShot300 or DShot600. |
| DShot1200 | Digital | For F7/H7 FCs at high loop rates. |
| Bidirectional DShot | Digital + telemetry | Enables RPM filtering. Required for dynamic notch. Use this. |
| ProShot | Digital | Rare, not widely supported. |
Use Bidirectional DShot on any modern build. It enables RPM-based notch filtering in Betaflight/ArduPilot, which is the single biggest filter improvement available.
BEC vs OPTO
- BEC (Battery Eliminator Circuit): ESC includes a 5V regulator to power the FC/receiver. Convenient for simple builds but introduces a potential noise coupling path between the power stage and flight controller.
- OPTO: No integrated BEC — FC must be powered separately. Eliminates one noise path. Required on high-amperage builds where a BEC would be thermally stressed.
On modern FC stacks with a dedicated 5V regulator on the FC board, OPTO ESCs are often the cleaner choice even on small builds.
Capacitor
Solder a low-ESR electrolytic capacitor (typically 35V 1000µF or 50V 470µF) as close to the ESC power input as possible. Without it, voltage spikes from motor commutation will reach the flight controller, causing video noise and occasional FC brownouts. This is the number one overlooked step in custom builds.
Step 6: Select the Battery
Cell Count (Voltage)
Battery voltage directly determines motor RPM (KV × V = RPM). Select cell count to put your motor in the right RPM range for your prop at your target hover throttle.
| Cell Count | Nominal V | Fully Charged |
|---|---|---|
| 1S | 3.7V | 4.2V |
| 2S | 7.4V | 8.4V |
| 3S | 11.1V | 12.6V |
| 4S | 14.8V | 16.8V |
| 6S | 22.2V | 25.2V |
| 8S | 29.6V | 33.6V |
| 12S | 44.4V | 50.4V |
Higher voltage on the same motor gives more power but also more heat. Verify your motor, ESC, and FC are rated for the voltage you're using — this is particularly important on the FC (many are 3–6S only).
Capacity (mAh)
More capacity = heavier battery = lower effective payload capacity and potentially lower TWR. There's a crossover point where adding battery capacity reduces flight time because the extra weight costs more than the extra energy provides.
Rough flight time estimate:
Flight time (min) ≈ (capacity_mAh × 0.8) / (average_current_A × 1000) × 60
Average current is typically 30–50% of maximum current on a well-matched build at moderate flying.
C Rating
C rating × capacity_Ah = maximum continuous discharge current.
Peak current required = motor_max_current × motor_count
Required C rating = peak_current / capacity_Ah
A 4S 1500mAh (1.5Ah) pack powering four 35A-max motors needs to supply up to 140A peak — requiring a C rating of at least 93C. In practice, most LiPo packs are de-rated; buy at least 1.5× the required C rating.
Chemistry comparison:
| Chemistry | Energy Density | Discharge Rate | Weight | Cycle Life | Use Case |
|---|---|---|---|---|---|
| LiPo | 150–200 Wh/kg | Very high (C-rated) | Light | 200–400 cycles | Racing, freestyle, high-performance |
| Li-Ion | 200–265 Wh/kg | Moderate (2–5C typical) | Similar | 500–1000 cycles | Long-range, mapping, endurance |
| LiHV | 155–210 Wh/kg | High | Light | 200–350 cycles | FPV, cinematography (4.35V/cell) |
| LiFePO4 | 90–120 Wh/kg | Moderate | Heavy | 2000+ cycles | Heavy-lift, ground vehicles |
Li-Ion is often the right call for long-range or mapping builds where flight time matters more than peak power. A 21700 cell pack will typically give 30–50% more flight time than a same-weight LiPo because of its higher energy density, at the cost of lower peak discharge.
Common Failure Modes and Their Root Causes
| Symptom | Likely Cause | Fix |
|---|---|---|
| Motors hot after short flight | Under-rated KV for voltage; prop too aggressive | Lower KV or cell count; reduce pitch |
| Short flight time | Hover throttle >60%; battery over-C-rated for weight | Higher capacity; lighter battery; lower TWR target |
| ESC thermal shutdown | ESC amperage too close to motor max | 25% margin minimum; add cooling |
| Desync (motor stutter/stop) | ESC timing mismatch; low-quality motor; electrical noise | Recalibrate ESC; try different timing value; add capacitor |
| FC brownout under full throttle | No capacitor; BEC undersized | Add 1000µF cap to power leads; use separate BEC |
| Video gets noisy at high throttle | Motor switching noise on power rail | Add capacitor; route video and power lines separately |
| Oscillations after prop change | PID tune no longer matches new prop inertia | Retune — run Blackbox, adjust D term first |
| Can't lift payload | TWR too low; CG too far from center | Recheck AUW with payload; move battery for CG |
Quick Reference: 5" 6S Freestyle Build
A worked example to illustrate the process:
- Frame: 5" 215mm X-frame, ~100g
- Target AUW: 450g with 1000mAh battery
- TWR target: 6:1 → need 2,700g total thrust → 675g per motor
- Motor selection: 2306 1400KV on 6S → peaks at ~900g thrust per manufacturer data ✓
- Prop selection: 5.1×4.1 3-blade HQ prop → designed for this motor/voltage combo
- ESC: 4-in-1 45A BLHeli_32 with bidirectional DShot → motor peaks at ~35A, 45A gives 28% margin ✓
- Battery: 6S 1000mAh 100C LiPo → 100A peak discharge, motor peak ~140A (marginally tight — consider 1300mAh)
- Capacitor: 35V 1000µF across ESC power pads ✓
The battery is slightly marginal here — the 1000mAh 100C pack provides 100A discharge vs 140A peak demand. A 1300mAh pack at 80C gives 104A (still marginal) or a 1500mAh at 100C gives 150A (comfortable margin but heavier). This is the typical LiPo weight-vs-margin tradeoff for freestyle builds.
Remote ID for Custom Builds
Most Remote ID guides are written for DJI pilots. If you're flying a custom Betaflight quad, an ArduPilot fixed-wing, or anything else that wasn't bought in a box, the compliance picture looks very different. This guide covers the actual rules, how they apply to open-source and custom-built platforms, and how to achieve compliance without buying a new aircraft.
What Remote ID Is
Remote ID is an FAA-mandated broadcast from every drone in flight, transmitting identification and location data via Bluetooth 4 or 5 / Wi-Fi (IEEE 802.11). The broadcast can be received by any smartphone or dedicated receiver within ~300m. The data includes:
- Drone serial number or session ID
- Drone GPS position, altitude, and velocity
- Control station (takeoff point or pilot) GPS position
- Timestamp
- Emergency status flag
The rule has been in effect since September 16, 2023. Non-compliance is a regulatory violation regardless of whether you're flying recreationally or commercially.
The Weight Cutoff That Matters
Remote ID applies to all drones in the 0.55 lb (250g) to 55 lb (25kg) category operating in US airspace.
Under 250g: No Remote ID required. This is why the DJI Mini 3 exists at 249g. Most competitive FPV builds on 3" frames or smaller (without a camera) can hit this threshold, but a 5" freestyle quad with a GoPro and LiPo is almost certainly over 250g.
Weigh your build. Not the frame weight. Not the advertised weight. Weigh the complete flying system on a postal scale including the battery you typically fly. If it's 251g you need Remote ID.
Three Compliance Paths
Path 1: Standard Remote ID (Built-In)
The drone has Remote ID capability integrated into its firmware, broadcast from an onboard module. This is what DJI, Autel, Skydio, and most commercial UAS manufacturers provide. The FC or companion processor handles the broadcast — no external hardware needed.
For custom builds: This requires Remote ID support in your flight controller firmware. As of 2025: - ArduPilot (4.3+): Native Remote ID support via MAVLink RemoteID messages. Supported with external broadcast module (see Path 2 setup) or via companion computer. - Betaflight (4.4+): Native Remote ID support. Requires an external serial broadcast module, configured as a SERIAL port peripheral. - iNav (6.0+): Remote ID support added. External module required.
Path 2: Broadcast Module (Add-On)
A small external module handles the Remote ID broadcast independently. The module receives GPS data (either from the FC via serial or from its own GPS), and handles the Bluetooth/Wi-Fi broadcast. This is the standard compliance path for custom builds.
The module connects to a spare UART on the FC and receives position data via MAVLink or a dedicated Remote ID protocol.
Widely-used modules: - BlueMark db202 — most popular for Betaflight; compact, UART connection, both BT and WiFi - uAvionix Ping (sRID) — well-regarded, slightly larger, MAVLink native - Spectral Devices modules — open-source firmware option
Module wiring:
FC UART TX → Module RX
FC UART RX → Module TX (for bidirectional GPS sync)
FC 5V → Module power
FC GND → Module GND
Configure the FC UART port as "Remote ID" in Betaflight Configurator (Ports tab), or set SERIAL_PASSTHROUGH / FRSKY_TELEMETRY_SERIAL_PORT + Remote ID function in ArduPilot.
GPS requirement: The module needs a GPS fix to broadcast valid position data. If your build has no GPS, the module cannot transmit compliant position data. You have two options: add a dedicated GPS module, or operate only at a FRIA (see below).
Path 3: FRIA (FAA-Recognized Identification Area)
A FRIA is an FAA-approved location where drones without Remote ID can fly. FRIAs are designated at fixed locations — almost exclusively model aircraft club fields and a small number of educational institutions.
Key FRIA constraints: - You must remain within the FRIA boundary at all times - You must maintain VLOS (visual line of sight) - The drone operator (pilot) must be physically present at the FRIA - You cannot use a FRIA as a compliance shortcut for commercial operations — they're for recreational flying at designated fields
For most commercial work and any off-site flying, FRIAs are not a practical compliance path.
Custom Build Specifics
Open-Source FC Without Built-In Serial Number
The FAA Remote ID rule requires a serial number in ANSI/CTA-2063-A format: a manufacturer code + serial string. DJI and commercial manufacturers provide this at the factory. Custom builds do not have one assigned by default.
The path for custom builds: Register your drone on the FAA DroneZone website. The FAA assigns a registration number (FAxxxxxx format). This registration number becomes the broadcast identifier for your build — the serial number field in the Remote ID broadcast uses your FAA registration number.
Every broadcast module configures this via either:
- A companion app (BlueMark uses a Bluetooth-paired phone to configure)
- A USB CLI (uAvionix uses a web-based configurator)
- Betaflight Configurator CLI: set drone_serial = FA12345678
Multiple Aircraft on One Registration
The FAA allows one registration for multiple aircraft of the same make/model. For a fleet of identical custom builds, you can register them as a "class" rather than individually, reducing administrative overhead. Each aircraft needs its own broadcast module, but they can share a registration — differentiate by using a session ID that includes the frame number.
What to Do if Your Drone Has No GPS
Without GPS, the broadcast module can't transmit position — the module sends an empty position field, which is technically non-compliant for Standard Remote ID. Options:
- Add a minimal GPS module (a BN-180 or similar UART GPS is ~3g, ~$8)
- Add a module with its own integrated GPS (several broadcast modules now include GPS onboard)
- Only fly at a FRIA where Remote ID isn't required
- Only fly drones under 250g AUW
ELRS and Remote ID: The Frequency Question
ExpressLRS operates at 2.4GHz. The Remote ID broadcast uses Bluetooth 5 (2.402–2.480 GHz) and Wi-Fi (2.4GHz or 5.8GHz). These frequency bands overlap.
In practice, the ELRS radio and the Remote ID broadcast coexist without issues — ELRS uses frequency hopping with very short packet times, while Bluetooth/Wi-Fi handle congestion through their own protocols. Hundreds of thousands of users run ELRS + Remote ID modules without conflict.
One thing to watch: If you're running a Remote ID module that uses 5.8GHz Wi-Fi and you have a 5.8GHz FPV VTX, run the VTX and Remote ID module on different 5.8GHz channels. The Remote ID uses a specific channel for discovery broadcasting; it won't interfere with FPV video but they shouldn't share the same channel.
What the Broadcast Contains — and What It Doesn't
The Remote ID broadcast is not a government tracking system. It's a local Bluetooth/Wi-Fi broadcast receivable only within radio range (~300m in practice). It does not upload to a database, does not contact the FAA, and is not stored anywhere. The pilot's personal information (name, address) is not in the broadcast — it's linked only via the registration number, and that link is accessible only to law enforcement with appropriate authorization.
The broadcast contains: - Your drone's registered identifier - Your drone's GPS position and altitude - The control station location (your takeoff point if not actively updated) - Speed and heading - Timestamp
It does not contain: your name, your address, your flight log, or any persistent data.
Configuring Remote ID in Betaflight
Betaflight 4.4+ has Remote ID support built in. You'll need a serial broadcast module connected to a UART.
Step 1 — Wire the module: Connect the module to a free FC UART (TX/RX/GND/5V).
Step 2 — Enable in Ports tab: Set the UART to "Remote ID" function in Betaflight Configurator → Ports.
Step 3 — Set the serial number: In CLI:
set drone_serial = FAXXXXXXXXXXX
save
Use your FAA registration number in place of the X characters. Format: no spaces, no dashes, just the alphanumeric string.
Step 4 — Verify: Download a Remote ID receiver app (OpenDroneID Android, or FAA's own viewer). Power up your quad with a GPS fix and verify your drone appears in the app with correct position data.
Configuring Remote ID in ArduPilot
ArduPilot supports Remote ID via the DroneCAN (UAVCAN) protocol or via MAVLink serial passthrough.
MAVLink serial method:
1. Connect module to a UART configured as MAVLink2 (SERIAL_PROTOCOL = 2)
2. Set REMOTE_ID_ENABLE = 1
3. Set REMOTE_ID_SERIAL_NUM to your FAA registration number
4. Reboot and verify with a receiver app
ArduPilot's Remote ID implementation also works with the BlueMark and uAvionix modules in their MAVLink modes.
Enforcement Reality
Remote ID enforcement is light as of 2025 — the FAA's attention has been on commercial operations and repeat offenders near airports and restricted airspace. But the rule is in effect, and local law enforcement increasingly has access to Remote ID receiver apps. The risk calculus is changing.
More practically: Remote ID is a prerequisite for Part 108 BVLOS operations. If you're building toward any kind of expanded operational authority, compliance now is infrastructure for later.
Quick Compliance Checklist for Custom Builds
- [ ] Weigh complete flying system — is it ≥250g?
- [ ] If ≥250g: register on FAA DroneZone, note your registration number
- [ ] Select and install a broadcast module (BlueMark db202 or uAvionix sRID)
- [ ] Wire module to FC UART (TX/RX/GND/5V)
- [ ] Ensure build has GPS (required for valid position broadcast)
- [ ] Configure UART in FC firmware (Betaflight: Ports → Remote ID; ArduPilot: REMOTE_ID_ENABLE)
- [ ] Set registration number in firmware or module configuration
- [ ] Test with a receiver app before first compliant flight
- [ ] Carry FAA registration number documentation when flying
RF Detection Hardware — Field-Deployable Drone Detection
You don't need a $40,000 RF sensor suite to detect consumer drones. A $31 module and open firmware will identify most commercial UAS on the market.
The Detection Problem
Commercial drones transmit on predictable frequencies using identifiable RF signatures: specific modulation schemes, hop patterns, beacon intervals, and frequency bands. A receiver that can scan these bands and match known signatures can identify drone activity at useful ranges.
Hardware Tiers
Tier 1 — $31 — LILYGO T-Embed CC1101
The best single-purchase option for getting started. The T-Embed integrates an ESP32-S3 with a CC1101 sub-GHz radio and a small display.
Coverage: 315MHz, 433MHz, 868MHz, 915MHz Detects: ELRS 900MHz, TBS Crossfire, Microhard pDDL 900, DJI OcuSync sub-GHz variants, FPV analog control links
Limitations: No 2.4GHz or 5.8GHz coverage. Misses DJI OcuSync 2.4/5.8, ELRS 2.4GHz, analog FPV video.
SPI pin definitions for T-Embed CC1101:
SCK: GPIO18
MISO: GPIO19
MOSI: GPIO23
CS: GPIO5
GDO0: GPIO4
GDO2: GPIO2
Note: These differ from generic CC1101 breakout wiring. Use T-Embed specific definitions or detection will fail silently.
Tier 2 — ~$10 — XIAO ESP32S3 + Wio-SX1262
Compact, field-portable, LoRa-focused coverage.
Coverage: 868MHz, 915MHz (LoRa bands) Detects: ELRS 900MHz LoRa chirp signatures, TBS Crossfire FHSS
Best for ELRS-heavy environments where the primary concern is detecting long-range FPV or autonomous vehicles using 900MHz links.
Tier 3 — ~$41 — Dual Radio (T-Embed + Wio-SX1262)
Combined coverage across sub-GHz bands. Run CC1101 for FHSS/FSK detection alongside SX1262 for LoRa chirp detection. Recommended field kit for comprehensive sub-GHz coverage.
Known RF Signatures (57 total in current firmware)
DJI Systems
| System | Frequency | Modulation | Key Identifier |
|---|---|---|---|
| OcuSync 2.4GHz | 2.400-2.483GHz | FHSS burst | 72 channels, ~10ms beacon interval |
| OcuSync 5.8GHz | 5.725-5.850GHz | FHSS burst | Fallback from 2.4GHz |
| O3/O4 Digital | 5.8GHz | OFDM | 10km claim, high bandwidth |
| DJI FPV | 5.8GHz | OFDM | Dedicated FPV variant |
ELRS
| System | Frequency | Modulation | Key Identifier |
|---|---|---|---|
| ELRS 900MHz | 868/915MHz | LoRa SF6-10, BW500kHz | Low-latency chirp |
| ELRS 2.4GHz | 2.4GHz | LoRa/FLRC | Gemini dual-antenna |
| ELRS Airport | 2.4GHz | Transparent serial | 115200 baud bridge mode |
Military/Defense Adjacent
| System | Frequency | Modulation | Key Identifier |
|---|---|---|---|
| Microhard pDDL 900 | 902-928MHz | FHSS/DSSS | AES-256, Blue UAS approved |
| Herelink | 2.4GHz | OFDM | CubePilot, combined video+RC |
| MafiaLRS | 433-735MHz | Modified LoRa | Non-standard EW-evasion bands |
| Skydio | 2.4/5.8GHz + LTE | Mixed | Autonomous, dual comms |
Common FPV
| System | Frequency | Modulation | Key Identifier |
|---|---|---|---|
| TBS Crossfire | 868/915MHz | FHSS | <10ms latency, 150km range claim |
| Analog FPV 5.8GHz | 5.645-5.945GHz | FM analog | Raceband R1-R8, A/B/E/F/R bands |
| Orqa FPV.Connect | 2.4/5.8GHz | Digital | Low-latency goggle ecosystem |
Critical Firmware Bug — strcmp False Matches
A known issue in early versions of ESP32 RF detector firmware caused false positive matches due to incorrect use of strcmp for pattern matching on binary data. The bug: strcmp stops at null bytes, causing truncated comparisons that match multiple different signatures.
Fix: Replace strcmp with memcmp and pass explicit length parameters.
// Wrong — stops at null byte
if (strcmp(received_data, signature) == 0) { ... }
// Correct — compares full signature including null bytes
if (memcmp(received_data, signature, SIGNATURE_LEN) == 0) { ... }
Always use memcmp for RF signature matching.
Detection Range
| Signal Type | Tier 1 Range | Notes |
|---|---|---|
| ELRS 900MHz | 200-800m | Depends on output power and antenna |
| Crossfire | 300-1000m | Higher power than ELRS |
| Microhard pDDL | 100-400m | Encrypted, harder to characterize |
| DJI OcuSync (sub-GHz) | 150-500m | Limited by CC1101 sensitivity |
Related
RTK/PPK GPS Integration
Standard drone GPS gives you 2–5 meter horizontal position accuracy. RTK and PPK give you 1–3 centimeter accuracy. For mapping, survey, precision agriculture, and BVLOS operations, the difference matters. This guide covers wiring an RTK receiver into ArduPilot or PX4, setting up a base station, and choosing between real-time RTK and post-processed PPK.
How RTK and PPK Work
Both methods exploit the same physics: a GPS receiver doesn't just measure the time of arrival of satellite signals — it also measures the carrier phase of the signal, which can resolve position to millimeter precision. The problem is ambiguity: carrier phase measurements have an inherent integer ambiguity (which wave cycle you're on), and resolving that ambiguity requires a reference point.
RTK (Real-Time Kinematic): A base station at a known location sends its raw carrier phase observations to the rover (your drone) via a radio or cellular link. The rover uses both sets of measurements to compute a "baseline vector" relative to the base station, resolving position to centimeter accuracy in real time. This requires a continuous data link during flight.
PPK (Post-Processed Kinematic): The rover logs its raw observations during flight. The base station logs its raw observations simultaneously. After the flight, you run a processing algorithm (in Emlid Studio, Novatel Inertial Explorer, or open-source RTKLIB) that computes the precise positions after the fact. No real-time link required; works even if the link drops during flight.
When to use which: - RTK: When you need centimeter accuracy during the flight for guidance (precision landing, crop row following, survey that requires real-time confirmation of coverage) - PPK: When you need centimeter accuracy in the final data product, the real-time link is impractical, or you want belt-and-suspenders reliability (log both; compute PPK if RTK lock drops mid-flight)
Hardware Options
Rover (Onboard)
| Module | Weight | Interface | RTK | PPK | Price | Notes |
|---|---|---|---|---|---|---|
| Emlid Reach M3 | 15g | UART/USB | Yes | Yes | ~$300 | Popular, lightweight, good ArduPilot integration |
| Emlid Reach M2 | 20g | UART | Yes | Yes | ~$400 | Multi-constellation, widely deployed |
| u-blox ZED-F9P module | 5g (bare) | UART/I2C | Yes | Yes | ~$160 | Raw chipset; needs a carrier board |
| Holybro H-RTK F9P Rover | 24g | UART/CAN | Yes | Yes | ~$200 | Pre-built F9P board, ArduPilot plug-in |
| CUAV C-RTK 2 HP | 49g | UART/CAN | Yes | Yes | ~$350 | Integrated antenna + receiver |
| ArduSimple simpleRTK2B | 10g | UART | Yes | Yes | ~$190 | ZED-F9P-based, popular in community |
For new ArduPilot builds: the Holybro H-RTK F9P or Emlid Reach M3 are the easiest integrations. For weight-critical platforms: the bare u-blox ZED-F9P on a minimal carrier board.
Base Station
The base station must stay fixed during the flight. Options:
Option A: Temporary base (known point or averaged) Set up a tripod-mounted receiver at a surveyed benchmark or let it average its position for 5–10 minutes (accurate to ~30cm without corrections, ~10cm with prolonged averaging). This is "relative accuracy" — your map will be internally consistent to centimeter level but may be offset from absolute coordinates by the base station's own uncertainty.
Option B: Network RTK / NTRIP Use an existing CORS (Continuously Operating Reference Station) network to provide corrections over the internet. No base station hardware needed. Services: RTK2go (free, community), NGS OPUS, state DOT CORS networks, Trimble RTX, Hexagon SmartNet.
NTRIP workflow:
1. Subscribe to NTRIP service (many are free)
2. Configure a Ground Control Station phone/laptop as NTRIP client
3. Corrections flow: NTRIP server → GCS → radio link → drone receiver
Option C: Emlid RS2 / RS3 base station A complete base station in a weatherproof enclosure. Self-contained, logs raw data for PPK, transmits corrections via LoRa radio (built-in) or NTRIP forwarding via cellular.
Wiring Into ArduPilot
Serial Connection
The RTK receiver connects to a free UART on the FC:
RTK module TX → FC UART RX
RTK module RX → FC UART TX
RTK module GND → FC GND
RTK module power → FC 5V or dedicated BEC (check module current draw)
The u-blox ZED-F9P draws ~200mA — fine from a 500mA+ FC 5V rail. The Emlid Reach M3 draws ~350mA and should use a dedicated BEC or powered hub.
ArduPilot Parameters
# GPS type for the RTK receiver
GPS1_TYPE = 17 # UBX (u-blox ZED-F9P, Holybro, ArduSimple)
# or
GPS1_TYPE = 15 # Emlid Reach (for Reach M2/M3 via NMEA+RTCM)
GPS1_RATE_MS = 100 # 10Hz updates (200ms for 5Hz, 67ms for 15Hz)
# UART for the GPS
SERIAL3_PROTOCOL = 5 # GPS
SERIAL3_BAUD = 230400 # or 115200 for slower configs
# If corrections are injected via GCS (MAVLink injection):
GPS1_INJECT_TO = 1 # Enable MAVLink RTK correction injection
Correction injection methods:
1. Radio link (dedicated): Base station transmits RTCM3 corrections over a dedicated 915MHz or 433MHz radio link. Rover FC receives and passes to GPS module via UART.
2. MAVLink injection: GCS forwards RTCM3 corrections from an NTRIP source to the FC via MAVLink GPS_RTCM_DATA messages. The FC passes them to the GPS module's serial port. Works over cellular or standard telemetry link.
3. Emlid LoRa: Emlid Reach base and rover use a built-in LoRa radio for corrections. Simple and reliable to ~8km.
Checking RTK Fix Status
In Mission Planner, the GPS status bar shows: - 3D Fix: Standard GPS, 2–5m accuracy - 3D RTK Float: Carrier phase initialized but integer ambiguity not resolved. ~20–50cm accuracy. - 3D RTK Fixed: Integer ambiguity resolved. 1–3cm accuracy. This is what you want.
Time to RTK Fixed: typically 30–120 seconds after both base and rover have satellite lock. Cold start (no almanac, new location) can take 5–15 minutes.
PPK Workflow
For mapping/survey missions where real-time RTK isn't essential:
Pre-flight: 1. Set up base station. Start logging raw observations (RINEX 3.x format) at 1Hz. 2. Verify rover is logging raw observations to onboard storage. 3. Note the base station coordinates (or post-process them against NTRIP for absolute accuracy).
Flight: 1. Fly the mission normally. 2. Confirm rover log is running continuously.
Post-flight processing: 1. Download rover observation log and FC flight log. 2. Download base station observation log. 3. Load both into Emlid Studio (free), RTKLIB (open-source), or Novatel Inertial Explorer. 4. Set base station coordinates (absolute or relative). 5. Run forward-backward processing. Output: precise trajectory as a time-series of positions. 6. Apply trajectory to geotagged photos or LiDAR scan using Pix4D, Agisoft Metashape, or CloudCompare.
MRK files: Some cameras (Sony a6xxx, Phase One) output a .MRK or .SHUTTER log with precise shutter timestamps. Emlid Studio can fuse these with the PPK trajectory for sub-centimeter geotag accuracy.
Why FC GPS Accuracy ≠ Survey Accuracy
This is the most common confusion for operators moving from hobbyist to survey work.
The GPS status in your GCS shows the position reported by the onboard receiver. But your final data product accuracy depends on more than just receiver accuracy:
1. Ephemeris vs. precise ephemeris: The FC GPS uses broadcast ephemerides (satellite position predictions). Survey-grade processing uses precise ephemerides from IGS, which are accurate to a few centimeters vs. the broadcast's 1–2m. For RTK, this matters less because the base-rover differential eliminates most orbital error.
2. Shutter sync: If the camera shutter fires at an unknown time (no sync signal to GPS), the position at capture time must be interpolated. At 10m/s groundspeed, 50ms timing uncertainty = 50cm position error. Sync the shutter to GPS PPS for centimeter-level geotag accuracy.
3. Antenna phase center: The GPS antenna has a phase center that's not exactly at the mechanical center. For centimeter surveys, apply the antenna offset (calibrated from manufacturer spec) as an offset correction in your PPK software. ArduPilot parameter: GPS1_POS_X/Y/Z — the offset of the GPS antenna from the IMU.
4. IMU lever arm: For systems where the GPS antenna is not coincident with the IMU (separate modules with a physical offset), the lever arm creates position errors proportional to attitude angle × separation distance. A 15cm lever arm at 30° roll creates a 7.5cm lateral error in GPS-reported position. Compensate with GPS1_POS_X/Y/Z offsets in ArduPilot.
5. Base station accuracy: If your base station position is off by 30cm (averaged position without NTRIP corrections), your entire dataset is offset by 30cm. Relative accuracy (internal consistency) can be centimeter-level while absolute accuracy (position on Earth) is 30cm off. For relative surveys (volume calculations, change detection) this doesn't matter; for absolute surveys (cadastral, infrastructure) it does.
Quick Config Reference
ArduPilot + u-blox F9P + MAVLink NTRIP Injection
GPS1_TYPE = 17 # UBX
SERIAL3_PROTOCOL = 5 # GPS
SERIAL3_BAUD = 230400
GPS1_INJECT_TO = 1 # Accept MAVLink injection
GPS1_RATE_MS = 100 # 10Hz
GPS1_GNSS = 0 # Use all constellations (auto)
GPS1_POS_X = 0.05 # Antenna offset from IMU X (meters, forward)
GPS1_POS_Y = 0.0 # Antenna offset Y (meters, right)
GPS1_POS_Z = -0.03 # Antenna offset Z (meters, down)
In Mission Planner: Config → Planner → NTRIP → enter service URL, credentials, and mount point. MP will forward RTCM3 corrections to the FC via MAVLink at ~1Hz.
RTK vs PPK: The Real Story
There is no correct answer to "should I use RTK or PPK?" Anyone who tells you otherwise is selling something or hasn't worked in enough terrain types. Both methods achieve centimeter-level accuracy. Both have workflows that can fail silently. Both require things the vendor won't tell you until you've already ruined a mission. This guide covers the physics, the failure modes, and the cases where one is genuinely better than the other.
The Physics: What Both Methods Are Actually Doing
Standard GNSS positions your receiver by measuring the travel time of pseudorandom noise codes from satellites to your antenna. The timing accuracy of modern chips puts this at roughly 1–5 meters of horizontal position. That's the code-based solution.
Both RTK and PPK use carrier phase measurements instead. The carrier wave of a GPS L1 signal has a wavelength of 19cm. By tracking the phase of this wave rather than the timing of the code, a receiver can resolve position to roughly 1–3% of a wavelength — in the millimeter range. The problem is integer ambiguity: you're measuring the fractional phase, but you don't know how many complete cycles are between you and the satellite. That unknown integer is the "ambiguity."
Resolving this integer ambiguity is the entire technical challenge of both RTK and PPK. Everything else — the radio link, the base station, the post-processing software — exists to solve for these integers accurately and reliably.
Double differencing eliminates common-mode errors (atmospheric delays, clock errors) by computing the difference of phase measurements between two receivers (rover and base) and two satellites simultaneously. This is why you need a base station: you need two receivers measuring the same satellites at the same time to cancel the noise that prevents ambiguity resolution.
RTK: Real-Time Ambiguity Resolution
In RTK, the base station sends its raw observations to the rover during the flight via a radio link or cellular/NTRIP connection. The rover's processor resolves the integer ambiguities in real time and outputs a corrected position solution every epoch (typically every 100–200ms).
The FIX vs FLOAT Distinction
This is the most important thing to understand about RTK:
RTK FIXED: Integer ambiguities are resolved. Position accuracy is 1–3cm horizontal. This is what the spec sheet is advertising.
RTK FLOAT: Ambiguities are not resolved — the processor has a floating-point estimate of the integers but hasn't locked them down. Accuracy is 20cm to 1m. Your drone is flying, your camera is firing, and the positions being written to the photo EXIF are not centimeter-accurate even though the RTK system is "working."
Float happens more than vendors admit. During sharp turns, the antenna tilts away from optimal sky view. Flying close to trees, buildings, or terrain causes signal blockage and multipath. A momentary data-link dropout (radio range, NTRIP latency spike) stops correction delivery. In each case, the system drops from FIX to FLOAT silently — the drone keeps flying, the camera keeps firing, and the photos keep getting tagged with positions that may be 30cm off.
RTK Initialization Period
When the rover starts up, or after a FIX is lost and regained, there is an initialization period during which the ambiguities are being resolved. For a stationary receiver with good sky view, this takes 30–120 seconds. For a moving drone with an antenna that's rocking through attitude changes: longer. Some multi-band receivers (dual-frequency L1/L2 or L1/L5) initialize much faster than single-band because the second frequency provides additional constraints on the ambiguity solution.
What this means in practice: Don't start your survey grid the moment the controller shows "RTK Fixed." Hover for 2–3 minutes first to confirm the solution is stable, then depart. The initialization that happened on the pad in perfect conditions may not survive the first 90-degree turn at the mission start.
PPK: Post-Processing What RTK Does in Real Time
In PPK, the rover logs its raw GNSS observations throughout the flight. The base station logs simultaneously. After the flight, you run a processing algorithm that does what the RTK rover's processor tried to do in real time — but now with access to the complete dataset, forward and backward, and optionally precise satellite ephemerides.
The Forward-Backward Processing Advantage
This is why PPK can be more accurate than RTK in marginal conditions, and why it's not just "offline RTK."
An RTK receiver processes data causal — it can only use observations from the past and present. When a signal blockage causes a FIX to drop, the receiver has to re-initialize forward in time.
A PPK processor runs the Kalman filter twice: forward (in time order) and backward (reverse time order). Then it combines them. A signal dropout mid-flight that loses FIX in the forward pass may be initialized from observations that come after the blockage in the backward pass — because from the end of the flight looking backward, the solver already knows where the aircraft ended up and can propagate that constraint backward through the blockage.
The combined forward-backward solution has higher ambiguity resolution rates and better accuracy in the segments around signal blockages than any real-time system can achieve. This is a fundamental mathematical advantage, not a software trick.
Precise Ephemerides
Broadcast satellite ephemerides (the satellite position and clock data your receiver uses in real time) are accurate to 1–2 meters. The International GNSS Service (IGS) publishes precise ephemerides after the fact, accurate to a few centimeters. PPK can use these; RTK cannot.
For baselines under 20km, the improvement from precise ephemerides is small. For long baselines (50km+) or when using CORS stations, the improvement is significant — this is one reason why CORS-based PPK with a 40km baseline can still achieve centimeter accuracy when CORS-based RTK at the same distance would struggle.
Where Each Method Fails
RTK Failure Modes
1. Link dropout → silent float The radio link drops for 5 seconds during a turn. The RTK rover loses corrections, drops to FLOAT, assigns 40cm position estimates to 20 photos, then re-acquires FIX and continues. Your processing software sees no flag — the photos look fine, the coordinates look fine, but a strip across your survey has terrible position accuracy. You won't know until you compare against check points.
2. NTRIP latency → float or degraded FIX NTRIP delivers corrections over cellular. In remote areas with marginal signal, packets arrive late. The rover's ambiguity filter gets stale corrections and may degrade to FLOAT or produce a biased FIX solution. RTK via NTRIP is sensitive to the quality of cellular coverage in a way that a direct radio link is not.
3. Long baseline degradation Single-band RTK over a 30km CORS baseline: the tropospheric and ionospheric delays are different at the base and rover, and double-differencing doesn't fully cancel them. Accuracy degrades to 5–15cm. Multi-band (dual-frequency) receivers handle this much better — the ionospheric delay is frequency-dependent, and two-frequency data allows direct ionospheric modeling.
4. Multipath at the drone antenna The drone's GPS antenna is surrounded by carbon fiber arms, ESCs, and other RF-reflective surfaces. Signals reflecting off these surfaces create multipath that corrupts carrier phase measurements. This shows up as a "noisy" FIX — technically FIX status but with 3–5cm scatter rather than 1–2cm. Active antenna designs and careful antenna placement reduce this.
5. False FIX The ambiguity resolution algorithm can converge on the wrong integer values. The position looks like a FIX (the ratio test passes, the algorithm reports fixed integers), but the integers are wrong and the position has a systematic offset — often 10–20cm — from the truth. The ratio test threshold controls the probability of a false fix. Default settings in many receivers may be too permissive for high-stakes survey work.
PPK Failure Modes
1. Short flight / inadequate initialization time The PPK ambiguity solver needs enough data to converge. For a single-frequency receiver, less than 5–10 minutes of continuous flight data can result in a FLOAT-only solution. The rover is in the air, moving, which makes ambiguity resolution harder than a static survey — the processor needs enough redundant observations from different satellite geometries to lock down the integers. Flights under 5 minutes with a short observation window are high-risk for PPK.
2. Base station logging rate mismatch The drone logs at 5Hz or 10Hz. A base station logging at 1Hz (every second) means the PPK solver interpolates base observations between the 200ms drone samples. This introduces interpolation error, particularly during clock drifts and ionospheric activity. The base must log at the same rate as the rover — 5Hz minimum, 10Hz preferred.
DJI Matrice 4E issue: Multiple operators have reported that PPK with the M4E produces consistently worse results than RTK, with 8–10cm vertical offset even when PPK is processed correctly. Diagnosis points to the M4E logging raw observations at a different internal rate than the M3E, causing the base-rover time alignment to degrade. The fix: use DJI's own DJI Terra software for M4E PPK rather than third-party tools, or set the base station logging rate to match exactly the rover's output rate.
3. Baseline too long PPK has more baseline tolerance than RTK because it can use precise ephemerides and ionospheric models. But there are still limits. With single-band receivers: - < 10km: reliable FIX expected - 10–30km: FIX likely, depends on ionospheric activity - 30–50km: FLOAT likely, accuracy 10–30cm - > 50km: FLOAT almost certain, not suitable for cm-accuracy work
With multi-band (dual-frequency) receivers the thresholds roughly double.
4. Base station on an unknown point If the base is "free-stationed" (placed anywhere and coordinates derived from averaging GPS readings), the absolute position of the base has 30cm–3m uncertainty. Your relative accuracy (internal consistency) will still be centimeter-level, but the absolute position of your dataset is uncertain. For volume calculations and change detection this doesn't matter. For cadastral surveys or tying to existing infrastructure, the base must be on a known point or post-processed against a CORS to determine its precise absolute position.
5. Camera shutter timing errors PPK assigns positions to photos based on a timestamp. If the timestamp comes from the EXIF metadata written by the camera controller rather than a hardware signal wired to the GNSS receiver, there's typically 10–50ms of timing uncertainty from operating system latency and camera processing delay.
At 10m/s groundspeed, 50ms = 50cm position error. This is the single most common reason PPK produces worse results than expected even when the GNSS solution looks clean.
The fix: Use a hardware shutter sync — the GNSS receiver's event input (or "hot shoe" signal) is triggered by the physical shutter, not the camera's software. Emlid Reach's hot shoe connection provides <1µs timing accuracy. DJI RTK drones write .MRK files with hardware-synced shutter timestamps, which is why they work much better with PPK than third-party integrations using EXIF-only timing.
The Controversy: "Which Is Better?"
The internet argument about RTK vs PPK is mostly people talking about different scenarios without acknowledging it.
RTK advocates argue: Faster workflow, no post-processing, immediate quality check, no risk of forgetting to collect base data, works with standard photogrammetry pipelines without special handling.
PPK advocates argue: More robust, no data loss from link dropout, forward-backward processing is fundamentally more accurate, works at long range, doesn't depend on radio/cellular infrastructure.
Both are right about their chosen scenario. Here's the honest breakdown:
| Scenario | RTK Advantage | PPK Advantage |
|---|---|---|
| Urban/suburban, NTRIP available | ✓ Faster workflow, no base equipment | — |
| Remote area, no cellular | — | ✓ No link dependency |
| Large site, multiple batteries | Risky — link may drop between batteries | ✓ Continuous log across battery swaps |
| Site near buildings/trees | Risky — signal blockage causes float | ✓ Forward-backward recovers from blockage |
| Time-critical delivery | ✓ No post-processing delay | — |
| Legal/cadastral survey | Both need GCPs/checkpoints regardless | ✓ Auditable raw data log |
| LiDAR mission | ✓ Guides real-time flight path | ✓ Better trajectory for scan strip alignment |
| Long baseline (>20km) | Difficult with single-band | ✓ Handles better with precise ephemerides |
| Quality assurance | Visible in GCS during flight | Visible only after post-processing |
The Case for Doing Both
Modern RTK drones (DJI M3E/M4E, Autel EVO Max, Skydio X10 RTK) log raw observations simultaneously with applying RTK corrections. This means you have PPK data even when flying in RTK mode.
The dual workflow: 1. Fly in RTK mode — get instant geotag corrections 2. Keep the raw log running 3. If RTK holds FIX throughout: use the RTK-tagged photos, done 4. If RTK dropped to FLOAT in a segment: post-process that segment with PPK 5. Result: RTK speed with PPK reliability
This is not a compromise — it's strictly better than either alone. DroneDeploy's Smart Uploader implements exactly this: it applies RTK corrections by default and automatically falls back to PPK for segments where RTK quality was poor.
Ground Control Points: Still Not Optional
Neither RTK nor PPK eliminates the need for ground validation. They reduce the number of GCPs needed, but they don't replace the QA function that GCPs provide.
Why checkpoints matter even with RTK/PPK:
-
Absolute accuracy verification: RTK/PPK gives you a precise trajectory, but the absolute accuracy of that trajectory depends on the absolute accuracy of the base station's coordinates. Even if the base is on a "known point," that point may have 2–5cm uncertainty depending on how it was established. A checkpoint on a separately surveyed point catches this.
-
False fix detection: A false RTK fix (wrong integer ambiguity, position biased by 10–20cm) can pass all internal quality metrics. It's impossible to detect without an external reference. One well-placed checkpoint would catch it.
-
Photogrammetric consistency: The RTK/PPK position is the GNSS antenna position. The actual camera position involves the antenna-to-camera offset vector (lever arm) that must be measured and applied. A systematic error in the lever arm — which is easy to make — produces a consistent offset in the final model. Checkpoints catch this.
Minimum checkpoint strategy for RTK/PPK surveys: - 3–5 checkpoints distributed across the site (corners + center for a rectangular area) - Measured with independent survey equipment at higher accuracy than the expected drone survey accuracy - Checkpoints should not also be used as GCPs in the photogrammetric bundle adjustment — they must be kept independent for verification
The standard practice in survey-grade work: use 1–3 GCPs to anchor the bundle adjustment, and 3–5 independent checkpoints to verify. RTK/PPK with this approach typically achieves 1–3cm RMSE on checkpoints in good conditions.
Software Options for PPK Processing
| Software | Cost | Learning Curve | Best For |
|---|---|---|---|
| Emlid Studio | Free | Low | Emlid hardware; DJI with .MRK files; beginner-friendly |
| RTKLIB (rtkpost) | Free, open-source | High | Custom setups, research, any hardware |
| KlauPPK | Paid (~$200/yr) | Medium | DJI enterprise; handles DJI-specific formats natively |
| Pix4Dfields PPK | Paid (subscription) | Low | Integrated with Pix4D photogrammetry |
| Leica Infinity | Paid (expensive) | Medium | Professional survey; full adjustment capability |
| Novatel Inertial Explorer | Paid (expensive) | High | Survey grade; INS/GNSS tightly coupled processing |
| DJI Terra | Paid (subscription) | Low | DJI hardware; best for M4E and newer DJI RTK drones |
For most operators starting with PPK: Emlid Studio is the right choice. It handles RINEX data from any manufacturer, processes DJI's .MRK files, and produces geotagged photos ready for import into any photogrammetry package.
For DJI Matrice 4E specifically: Use KlauPPK or DJI Terra. Third-party tools have documented issues with M4E raw data formats.
Practical Decision Framework
Do you have reliable cellular or radio C2 coverage over the entire site?
│
├─ YES → RTK is faster. Use it.
│ Still log raw data as PPK fallback.
│ Verify FIX status throughout — check the flight log, not just the summary.
│
└─ NO → PPK is required.
│
├─ Is baseline < 20km from nearest CORS?
│ ├─ YES → Use CORS base data (no hardware needed). Multi-band preferred.
│ └─ NO → Set up local base station. Must log at rover rate. Log >1 hour.
│
├─ Is the flight > 10 minutes of continuous data?
│ └─ NO → PPK may not achieve FIX. Consider shorter segments or
│ single-band upgrade to multi-band for faster initialization.
│
└─ Does the camera have hardware shutter sync?
├─ YES → MRK/event log will give <1ms timing accuracy. Expect cm results.
└─ NO → EXIF-only timing. Expect 10–50cm error at normal survey speeds.
Fly slower (<5m/s) to reduce shutter-lag position error.
The One Thing Everyone Gets Wrong
The accuracy number on the spec sheet — "1cm + 1ppm horizontal" — is the GNSS trajectory accuracy. It is not the final map accuracy.
Final map accuracy depends on: 1. GNSS trajectory accuracy (RTK/PPK performance) 2. Camera calibration (lens distortion, principal point) 3. IMU/camera boresight offset 4. Ground sampling distance (flight altitude) 5. Image overlap (how well photogrammetry can reconstruct geometry) 6. Processing software settings 7. Whether you have independent checkpoints to verify
A drone with a 1cm RTK solution but a poorly calibrated camera, flying at 120m AGL, will produce a survey with 5–10cm absolute accuracy. A drone with a 3cm PPK solution but a well-calibrated camera, flying at 60m AGL with 80% overlap, will beat it on every project. Hardware matters, but workflow matters more.
Sensor Payload Integration
Hanging a sensor off your drone is not plug-and-play. The mechanical interface, the electrical interface, the firmware configuration, and the data pipeline are four separate problems that all interact. Get any one wrong and you either damage the aircraft (CG shift causing attitude instability), damage the payload (vibration destroying a LiDAR scan), or just get useless data (GPS-triggered shutter not synced to IMU). This guide covers all four.
Mechanical Integration
Center of Gravity
Every payload changes your center of gravity. The flight controller compensates for CG offsets automatically — but only up to a point, and with a cost.
What CG offset costs: A 200g LiDAR mounted 80mm forward of the CG forces the rear motors to work harder than the front motors to maintain level flight. The FC compensates via differential throttle, but that asymmetric loading means: - Lower effective thrust margin (the rear motors are near their limit before the front motors are) - Higher average current draw (compensating for the imbalance) - Asymmetric PID response (the aircraft responds differently to forward vs rearward pitch corrections) - Shortened flight time
Rule of thumb: Keep the payload CG within ±15% of the frame's geometric center in both fore-aft and lateral axes. Beyond that, consider ballast or repositioning the battery to compensate.
Measuring CG shift: Balance the complete flying system (with payload, without battery) on a fulcrum under the motor mounting pattern center. Note the direction of lean. Move the battery to counter it, or add ballast as a last resort.
Vibration Isolation
This is the most commonly skipped and most consequential step. Two separate isolation problems exist on any camera/sensor drone:
Problem 1: FC gyroscope noise from propulsion The flight controller's IMU is sensitive to vibration from motors, propellers, and frame flex. Motor and prop imbalance generates vibration at the motor electrical frequency (motor RPM / pole pairs), which couples into the gyro as high-frequency noise. This is the primary driver of PID tuning difficulty on poorly-built platforms.
Fix: Soft-mount the FC stack on rubber or silicone standoffs. Most modern FC stacks include mounting holes for M3 anti-vibration standoffs. This has nothing to do with the payload.
Problem 2: Payload sensor noise from the same propulsion A camera or LiDAR mounted rigidly to the frame receives the same propulsion vibration as the frame. For cameras, this causes rolling shutter artifacts and blurry frames. For LiDAR, it introduces scan line discontinuities. For IMU-based payloads (survey-grade GNSS/INS), it overwhelms the sensor.
Fix: Isolate the payload from the frame with a vibration-damping mount. Options: - Foam/silicone tape: Cheap, effective for light cameras under 200g. Adds 2–5mm compliance. - Rubber ball mounts: Standardized vibration isolators (M3 or M5, various Shore hardness). Match Shore hardness to payload weight — too soft causes pendulum oscillation, too hard transmits vibration. - Gimbal: Active stabilization for cameras. Gyro-stabilized gimbals eliminate both vibration noise and attitude coupling simultaneously for camera payloads.
Don't double-isolate. If the payload has its own vibration isolation, don't also soft-mount the payload bracket. The compliance of two soft mounts in series creates a resonant system that can amplify certain frequencies rather than damping them.
Payload Weight and Arm Loading
On a quadrotor, payload weight is distributed across all four motors equally if mounted at the CG, and unequally if not. Check your motor's rated continuous thrust against the hover throttle with payload loaded — you want to be at 50–60% throttle in hover with the heaviest expected payload.
For hexarotors and octorotors carrying heavy payloads: calculate the per-motor load and verify you have enough margin for maneuver and wind correction on the highest-loaded motor, not just the average.
Electrical Integration
Power Budgeting for Payloads
Before wiring anything, add up the power draw of every peripheral. The payload power draw is in addition to the propulsion system — it directly reduces flight time.
| Payload | Typical Power Draw |
|---|---|
| FPV camera (analog) | 0.5–1W |
| Action camera (GoPro class) | 3–7W |
| Thermal camera (FLIR Boson) | 2–4W |
| 1080p USB camera | 1–3W |
| Raspberry Pi Zero 2W | 1–2W |
| Raspberry Pi 4 | 3–8W |
| NVIDIA Jetson Nano | 5–10W |
| NVIDIA Jetson Orin NX | 10–25W |
| LiDAR (RPLIDAR A3) | 3–5W |
| LiDAR (Ouster OS1) | 15–20W |
| RTK GNSS module | 0.5–2W |
Derive flight time impact:
Extra flight time consumed (min) = payload_watts / battery_voltage / hover_current_A × 60
A 10W payload on a 6S (22.2V) battery draws ~0.45A additionally. If the platform hovers at 12A without payload, 10W of payload costs about 3–4% more current — roughly 1–2 minutes on a 30-minute platform.
Payload Power Sources
Never power a high-current payload directly from the FC's 5V pin. The FC's onboard regulator is typically rated 500mA–1A — enough for receiver and GPS, not for a companion computer or gimbal.
Correct payload power architectures:
For small payloads (<500mA at 5V): FC 5V output is fine.
For medium payloads (0.5–3A at 5V or 12V):
Battery → Dedicated BEC (3A–5A rated) → Payload
FC GND ─────────────────────────────→ Payload GND (shared)
For large payloads (>3A or custom voltage):
Battery → Power module or PDB → Payload power regulator → Payload
Payloads like the Ouster OS1 run at 24V and draw ~800mA — they need a boost/buck converter, not a BEC.
Isolation and Noise
Camera payloads are high-frequency noise generators (USB 3.0 operates at 5GHz, HDMI at similar frequencies). These can affect GPS L1 (1.575GHz) if the payload is physically close to the GPS antenna.
Rules: - Keep companion computer USB 3.0 ports and cables away from GPS antenna — minimum 15cm - If using USB 3.0 to USB-C camera, use a cable with a ferrite clip - Power the payload from a dedicated BEC with its own filter capacitor, not shared with the FC rail
Firmware Integration: MAVLink Camera Protocol
ArduPilot and PX4 both support the MAVLink Camera Protocol (MAVLink v2), which defines a standard interface between the autopilot and camera/payload systems.
What the Camera Protocol Provides
- Shutter trigger via MAVLink: The FC triggers the camera shutter synchronized to GPS time. Critical for photogrammetry — without GPS-synced triggers, your ground sampling distance calculations are based on estimated position, not actual.
- Geotag injection: ArduPilot can log shutter events with GPS position, allowing post-flight geotagging without a separate logger.
- Camera status feedback: Camera can report capture count, storage remaining, and error status back to GCS.
- Video control: Start/stop recording, zoom, change mode.
Wiring a MAVLink Camera
The camera needs a MAVLink serial connection. For companion computers running the camera:
Option A: Companion computer as camera manager
FC UART (MAVLink2) ─── Companion computer (USB serial or GPIO UART)
Companion computer ─── Camera (USB, CSI, or Ethernet)
The companion computer runs camera control software (MAVProxy, MAVSDK, or custom) and translates MAVLink camera commands to the camera's native API.
Option B: Direct MAVLink camera Some cameras (Sony a6xxx via Sony SDK, some GoPro Mods) support MAVLink directly. Wire UART TX/RX and configure the FC camera port.
ArduPilot configuration:
CAM1_TYPE = 1 (Servo) or 3 (Relay) or 4 (MAVLink)
CAM1_TRIGG_TYPE = 0 (distance) or 1 (time)
CAM1_TRIGG_DIST = 5 (meters between shots)
For MAVLink camera (TYPE=4), set the camera's MAVLink component ID and the serial port. The FC will send MAV_CMD_IMAGE_START_CAPTURE on trigger.
Gimbal Control
Gimbals receive control commands via:
| Interface | Use Case | Notes |
|---|---|---|
| PWM (Servo) | Simple 1–3 axis, basic tilt control | Universally supported, low resolution |
| SBus | Multi-axis, smoother control | Single wire, widely supported |
| MAVLink (serial) | Full camera integration, stabilization telemetry back | Best for survey, requires compatible gimbal |
| CAN | Industrial gimbals (Gremsy, Zenmuse) | High reliability, hot-swap capable |
For ArduPilot:
MNT1_TYPE = 1 (Servo) or 4 (SToRM32 MAVLink) or 8 (Gremsy)
MNT1_ROLL_MIN / MNT1_ROLL_MAX
MNT1_TILT_MIN / MNT1_TILT_MAX
Gimbal stabilization modes: - RC passthrough: Gimbal follows stick input directly. Use for FPV, not survey. - Stabilize mode: Gimbal corrects for aircraft attitude, points where commanded. Standard for camera work. - GPS point-of-interest: Gimbal tracks a GPS coordinate. Useful for inspection, requires ArduPilot 4.3+.
LiDAR Integration
LiDAR payloads add complexity beyond cameras: they generate large data streams, require precise time synchronization, and need PPS (pulse-per-second) signals from the GNSS for accurate scan timing.
The Time Sync Problem
A LiDAR spinning at 10–20Hz captures thousands of points per second. Each point must be timestamped to microsecond accuracy to fuse correctly with the INS position. Without accurate time sync, your point cloud will have "smear" artifacts proportional to platform velocity × time error.
Required hardware: - GNSS receiver with PPS output (1Hz pulse, accurate to <1µs) - PPS wired to both the LiDAR and the INS/GNSS module - All devices sharing a common time base from GPS
Most mapping-grade LiDARs (Ouster, Velodyne, RIEGL) have PPS inputs. Consumer LiDARs (RPLIDAR, Livox Mid-360) have varying time sync quality — check the datasheet.
Data Pipeline
LiDAR → Ethernet or USB → Companion computer → storage or real-time streaming
Most mapping workflows record raw LiDAR data plus IMU/GNSS data separately and post-process them (Inertial Explorer, Pix4D Matic, or open-source tools like LOAM/LeGO-LOAM).
Real-time SLAM (Simultaneous Localization and Mapping) is also possible — KISS-ICP, LIO-SAM, and Fast-LIO run on a Jetson Orin or similar at map-update rates of 10Hz. This enables obstacle avoidance and GPS-denied navigation rather than just post-flight mapping.
Weight and Power Budget Example: RESEPI Ultra LITE
The RESEPI Ultra LITE (from Inertial Labs) is a representative small mapping payload: - Weight: 380g - Power: 30W (12–24V input) - Interface: Ethernet + USB - Data rate: ~100MB/min of LiDAR + imagery - Requires: external GNSS antenna for INS, PPS from GNSS
On a 6S platform with 5,000mAh battery: the RESEPI draws ~1.35A at 22.2V. At 20A hover current, this is a 6.7% load increase — roughly 2–3 minutes flight time reduction.
Thermal Camera Integration
Thermal cameras are simpler electrically than LiDAR but have their own quirks.
Radiometric vs Non-Radiometric
- Non-radiometric (NTSC/PAL video output): Cheap, works as a standard analog FPV camera. Gives a thermal image but no temperature data. Connect to video input on FC or VTX.
- Radiometric: Each pixel carries temperature data. Requires digital interface (USB, CSI, Ethernet). Enables temperature measurement and alarm triggering. Required for industrial inspection.
FLIR Boson / Lepton Integration
The FLIR Boson connects via UART (command) + either analog video or USB (image data). For analog FPV:
Boson analog out → VTX video input (same as any FPV camera)
Boson UART → FC UART (for camera control: shutter, gain, FFC)
For full radiometric data:
Boson USB → Companion computer (USB 2.0)
The FLIR SDK runs on the companion computer and handles data capture, temperature extraction, and trigger coordination with the autopilot.
Sensor Fusion: Thermal + RGB
Most professional thermal payloads are paired with an RGB camera for context. The key challenge: the two sensors must be precisely co-registered spatially. This requires: - Boresight calibration (measuring the angular offset between the two lenses) - Time synchronization (both cameras triggered at the same moment) - Lens distortion maps for both sensors
Skydio, Autel, and Parrot all ship dual-sensor payloads with factory boresight calibration. DIY thermal+RGB rigs require field calibration with a calibration target.
Companion Computer Integration
The companion computer is the hub for payload data processing, MAVLink camera management, and any AI inference running onboard.
FC to Companion Computer Interface
FC UART (MAVLink2) ─── Companion computer USB serial adapter or GPIO UART
FC 5V (small CC only) ─── or ─── Dedicated BEC → CC 5V input
ArduPilot configuration:
SERIAL2_PROTOCOL = 2 (MAVLink2)
SERIAL2_BAUD = 921600 (for Jetson/RPi)
MAVSDK vs MAVProxy vs ROS2
| Framework | Best For | Weight | Notes |
|---|---|---|---|
| MAVSDK | Simple payload control, guided mode | Light | Python/C++ API, limited telemetry access |
| MAVProxy | GCS forwarding, scripting, full telemetry | Medium | Shell-based, good for scripted missions |
| ROS2 + MAVROS2 | Sensor fusion, SLAM, AI integration | Heavy | Full robotics stack, requires Jetson class hardware |
| DroneKit | Legacy Python API | Medium | Deprecated but widely used |
For a Raspberry Pi controlling a gimbal and triggering a camera: MAVSDK or MAVProxy. For a Jetson running LiDAR-SLAM and real-time obstacle avoidance: ROS2 + MAVROS2.
Thermal / IR Cameras — What Sees in the Dark
Part 6 — Components Thermal imaging for ISR, inspection, SAR, and defense. Who makes the sensors, what the specs mean, and what's NDAA compliant.
Why This Matters
Thermal cameras detect infrared radiation emitted by objects based on their temperature. They see heat, not light. This makes them essential for night operations, search and rescue, industrial inspection, firefighting, perimeter security, and target acquisition.
Every enterprise and tactical drone platform either ships with thermal or supports it as a payload option. The parts-db had zero thermal camera entries. This chapter fixes that.
The Market Structure
Teledyne FLIR dominates. They are the world's largest volume manufacturer of ITAR-free, NDAA-compliant infrared sensor and camera modules, delivering thousands of units daily. Their product line spans from the $200 Lepton OEM module to six-figure defense gimbals. Most NDAA-compliant drone platforms use FLIR sensors (Teal 2 ships with Hadron 640R, Skydio uses Boson+).
The rest of the market breaks down by tier: - Defense gimbals: L3Harris WESCAM, Leonardo DRS, Elbit, Rafael - OEM modules: FLIR Boson/Lepton, RPX Technologies EmbIR - Drone-specific cameras: Workswell (EU), DJI Zenmuse (China) - Microbolometer cores: Lynred (France), Guide Sensmart (China)
Teledyne FLIR — The Reference Standard
Lepton Family (Entry/OEM)
| Product | Resolution | Type | Key Feature | ITAR | NDAA |
|---|---|---|---|---|---|
| Lepton 3.5 | 160×120 | LWIR micro-thermal | Radiometric, smallest thermal module | Free | Compliant |
| Lepton XDS (NEW Feb 2026) | 160×120 thermal + 5 MP visible | Dual thermal-visible | MSX edge fusion, Prism ISP, RJPEG output | Free | Compliant |
The Lepton XDS is significant — it's the first dual-sensor module with MSX (visible edges embossed onto thermal imagery) in a compact OEM form factor. USB output, SWaP-optimized. Classified 6a993.b.4.b — broadly exportable.
6+ million Leptons shipped. Proven supply chain at scale.
Boson / Boson+ (Mid-Tier)
| Product | Resolution | Pixel Pitch | Key Feature | ITAR | NDAA |
|---|---|---|---|---|---|
| Boson 640 | 640×512 | 12µm | LWIR, XIR video processing | Free | Compliant |
| Boson+ 640 | 640×512 | 12µm | Enhanced sensitivity, HDR | Free | Compliant |
| Boson 320 | 320×256 | 12µm | Budget 640-class alternative | Free | Compliant |
Boson is the workhorse thermal core for UAS payloads. The 640×512 resolution at 12µm pixel pitch delivers detail sufficient for most ISR and inspection applications. Used in dozens of drone platforms.
Hadron 640 Series (Integrated Dual-Sensor)
| Detail | Value |
|---|---|
| Thermal | 640×512 Boson or Boson+ (radiometric) |
| Visible | 64 MP |
| Design | Dual-sensor module, SWaP-optimized |
| Software | Prism AI detection/tracking/classification |
| Compatibility | NVIDIA, Qualcomm drivers |
| ITAR | Free |
| NDAA | Compliant |
| Used In | Teal 2 (Hadron 640R) |
Hadron is the go-to for OEMs who want thermal + visible in a single module without building their own dual-sensor payload.
Vue Series (Complete Drone Cameras)
- Vue TZ20-R — Dual Boson zoom (20×), radiometric. Ready to mount.
- Vue Pro R — 640×512 or 336×256, radiometric. Legacy but widely deployed.
Defense / Long-Range ISR
- Neutrino SX8 ISR 50-1000 (announced Feb 2026) — Vehicle detection at 34 km, identification at 20 km. Longest-range ISR thermal on market. Defense-tier pricing and availability.
RPX Technologies — Blue UAS Framework
| Detail | Value |
|---|---|
| HQ | USA |
| Blue UAS | Framework component |
| Product | EmbIR UAV-640 thermal camera |
| Resolution | 640×512 |
| Key Feature | Blue UAS listed, compact, drone-optimized |
| Models | A (wide), B, C (13.6mm), D (16.7mm), E (42mm telephoto) |
| Weight | 20g (Model A) to 118g (Model E) |
RPX is one of the few thermal camera manufacturers directly on the Blue UAS Framework component list. Compact, lightweight modules designed specifically for small UAS integration.
Workswell — EU-Made, Drone-Specific
Czech manufacturer building thermal cameras purpose-designed for drone use. Non-Chinese manufacturing. Full SDK and MAVLink integration. Compatible with DJI Matrice 300/350 and any platform via standard interfaces.
Product Line
| Product | Thermal | Visible | Weight | Key Feature |
|---|---|---|---|---|
| WIRIS Pro | 640×512 (Super-Res 1266×1010) | FHD 10× optical zoom | <430g | Radiometric, SSD recording, 50 mK (30 mK option) |
| WIRIS Pro SC | 640×512 (Super-Res 1266×1010) | FHD 10× optical zoom | <450g | Scientific-grade 30 mK, interchangeable lenses |
| WIRIS Enterprise | 640×512 (Super-Res 1266×1010) | 16 MP + rangefinder | — | Multi-sensor, IP66, thermal+RGB+rangefinder |
| WIRIS Enterprise G | — | — | — | Gas detection variant |
| WIRIS Agro | 640×512 | — | — | Agriculture/NDVI water stress mapping |
| GIS-320 | Specialized | — | — | Gas leak detection, 400+ gases detectable |
All models: Temp range up to 1,500°C, radiometric video, individually calibrated with certificate, WIRIS OS, SDK available (Data SDK + Stream SDK + MAVLink interface + CANbus/UART SDK).
Why Workswell Matters
EU-manufactured thermal cameras for drones are rare. Most European brands resell Chinese-made sensors. Workswell manufactures in Prague and provides full SDK access — making them the primary EU-sourced alternative to FLIR for operators who need non-Chinese, non-US thermal imaging.
Israeli Manufacturers (Defense Tier)
Elbit Systems
Mini-POP, Micro-POP — defense-grade EO/IR payloads for tactical UAS. Stabilized gimbals with thermal, visible, and laser designator. Widely deployed on Israeli and export military platforms.
Controp
iSky series — stabilized EO/IR payloads. Focus on small UAS and maritime applications. Israeli defense export controlled.
Rafael
TOPLITE EOS — heritage from Litening targeting pod. Defense-tier multi-sensor gimbals. Not available for commercial purchase.
Israeli thermal/EO payloads are among the most combat-proven in the world but are typically available only through government-to- government sales or defense export channels.
Microbolometer Core Manufacturers
Most thermal cameras use uncooled microbolometer detector cores from a handful of OEMs. Understanding this layer matters because the core determines the fundamental capability of any camera built on it.
| Manufacturer | HQ | Status | Notes |
|---|---|---|---|
| Lynred (formerly ULIS) | Grenoble, France | EU-made | Major European IR detector OEM. Supplies cores to many camera manufacturers including European defense |
| Guide Sensmart | Wuhan, China | NOT NDAA | Chinese OEM cores. Aggressive pricing. Used in many third-party thermal cameras |
| InfiRay | Yantai, China | NOT NDAA | Competing Chinese OEM modules |
| Teledyne FLIR | USA | NDAA compliant | Vertically integrated — makes own cores for Boson/Lepton |
Lynred is the key non-Chinese, non-US microbolometer source. Any European defense program requiring thermal imaging without US ITAR or Chinese supply chain dependency will likely use Lynred cores.
DJI Thermal (Context — NOT NDAA)
DJI's Zenmuse H20T and H30T are the best-integrated drone thermal cameras on the market — quad-sensor (wide, zoom, thermal, laser rangefinder) with seamless software integration. The H30T's thermal is 640×512 with 1280×1024 super-resolution.
NOT NDAA compliant. Excluded from any government or defense use. But for commercial operators without compliance requirements, DJI thermal payloads offer the best out-of-box experience.
Choosing Thermal for Your Drone
-
Resolution matters less than you think. 640×512 is the sweet spot. 320×256 is adequate for many applications. 160×120 (Lepton) works for detection but not identification.
-
Radiometric vs. non-radiometric. Radiometric cameras measure actual temperatures (critical for inspection). Non- radiometric only show relative temperature differences (adequate for SAR and ISR).
-
NETD (sensitivity) matters more than resolution. ≤50 mK is standard. ≤30 mK is scientific-grade. Lower NETD = better ability to see small temperature differences.
-
Integration complexity. FLIR modules have the best driver support (NVIDIA, Qualcomm). Workswell provides full SDK. DJI is plug-and-play but closed ecosystem. Israeli payloads require defense procurement channels.
-
ITAR vs. ITAR-free. FLIR OEM modules are ITAR-free (EAR 6a993.b.4.b). Defense gimbals from L3Harris, Elbit, Rafael are typically ITAR-controlled and require export licenses.
Last updated: March 2026
UAS Maintenance Standards
Overview
The aerospace industry has converged on ASTM F3600-22 as the foundational qualification guide for UAS maintenance technicians. Published January 2023 by ASTM Committee F46 (Aerospace Personnel), it defines the knowledge, skills, and abilities (KSAs) required to maintain UAS across three complexity classes — from hobby-grade multirotor to turbine-powered aircraft.
The standard is significant because it treats the entire UAS as the unit of maintenance — not just the airframe. A UAS Technician is responsible for the aircraft, ground control station, data links, and all peripheral equipment. This mirrors how operational teams actually maintain systems and is why fleet-level tooling like Tooth and Hangar tracks configuration across all subsystems, not just the FC.
Companion standards: - ASTM F2909 — Continued Airworthiness of Lightweight UAS (the task baseline F3600 draws from) - ASTM F3376 — Core Competencies for Aviation Maintenance Personnel (prerequisite for F3600) - ASTM F3366 — General Maintenance Manual (GMM) specification for sUAS
The Three-Class System
F3600-22 classifies UAS by equipage complexity. The classification of the full system is determined by the highest class of any individual component.
Class 1 — Consumer/Tactical Multirotor
Voltage: <60V electric or fuel cell
Typical examples: Sub-250g hobby quads, tactical ISR multirotor (MRM2, H7 WingCore builds), DJI Mavic class
| Subsystem | Class 1 Characteristics |
|---|---|
| Landing gear | Fixed or electronically retracted |
| Engine | <60V electric |
| Structure | Remove/replace, foam gluing, composite taping |
| Maintenance model | Line-replaceable unit swap only — no structural repair |
| GCS | Consumer device (phone/tablet app) |
| Software | Open-system app with high configuration variability |
| Networking | Not required for flight |
| Data link | Radio line-of-sight only |
| Launch/recovery | Hand launch or bungee; no dedicated recovery system |
| Manuals required | Operations manual only |
Technician KSA scope: Basic electronics, LRU swap procedures, propulsion and battery fundamentals, firmware update procedures, operational safety.
Class 2 — Mid-Complexity Fixed-Wing / Larger Multirotor
Voltage: 60–599V electric, piston, or fuel cell
Typical examples: 6S+ fixed-wing ISR platforms, Group 1 UAS, VTOL survey aircraft, fuel cell endurance platforms
| Subsystem | Class 2 Characteristics |
|---|---|
| Landing gear | Fixed or retractable (hydraulic/pneumatic/electronic) |
| Engine | 60–599V electric, piston, rotary, or modular turbine |
| Structure | Advanced composites/metal — sanding, grinding, potting, elevated cure, riveting |
| Maintenance model | LRU swap for most components; structural repair common |
| GCS | Portable or fixed multi-user workstation; open+closed software mix |
| Networking | Simple networking (hubs, switches, routers) required |
| Data link | LOS + cellular + satellite relay possible; complex handover events possible |
| Launch/recovery | Pneumatic/hydraulic launcher; parachute, VTOL, arresting gear |
| Support equipment | Ground power unit; fuel/defuel devices; external engine start equipment |
| Manuals required | CMM + engine maintenance manual + AMM + IPC |
Technician KSA scope: All Class 1 plus: composites repair, hydraulic systems, complex avionics, networking, multi-link data architectures, launcher/recovery systems.
Class 3 — High-Complexity / MALE / HALE
Voltage: >599V electric or turbine/piston comparable to manned aircraft
Typical examples: Group 3–5 UAS, turbine-powered platforms, high-altitude long-endurance systems
Maintenance is functionally equivalent to manned aircraft, with the addition of UAS-specific systems (autonomy stack, ground data terminal, datalink redundancy). Full manned aviation manual set required.
Airworthiness Definition
F3600-22 defines airworthiness specifically in the UAS context:
Airworthiness — within this guide, refers to a state of readiness whereby the system meets all manufacturer specifications for safe operations.
This is deliberately narrower than the FAA's manned aviation definition. For UAS, airworthiness is manufacturer-spec compliance, not regulatory certification. This means the maintenance standard's authority is the component manufacturer's documentation, not a type certificate. For open-source platforms (ArduPilot, Betaflight), the flight controller firmware + vehicle configuration parameters collectively constitute the "manufacturer specification."
This is the direct justification for Tooth's audit trail design: every parameter change that moves the vehicle away from a known-good AMC configuration is a potential airworthiness event.
Knowledge Area Taxonomy
F3600-22 Tables 2–4 define KSAs per class across these subject areas (drawn from the companion AAM standard WK88720 which shares the same taxonomy):
| Knowledge Domain | Class 1 | Class 2 | Class 3 |
|---|---|---|---|
| Structure / Airframe | Awareness | Proficient | Expert |
| Propulsion (electric) | Proficient | Expert | Expert |
| Propulsion (combustion) | Awareness | Proficient | Expert |
| Avionics / FC | Proficient | Expert | Expert |
| Information Technology / Software | Proficient | Expert | Expert |
| Data Links / RF | Awareness | Proficient | Expert |
| GCS / Control Station | Proficient | Proficient | Expert |
| Operations / Safety | Proficient | Proficient | Expert |
| Regulatory | Awareness | Proficient | Proficient |
| Human Factors | Awareness | Proficient | Proficient |
| Documentation / Manuals | Awareness | Proficient | Expert |
Awareness = can identify and describe. Proficient = can perform with guidance. Expert = can perform independently and train others.
Relevance to the Wingman Ecosystem
The F3600-22 framework maps directly to Wingman's tooling layer:
| F3600-22 Requirement | Wingman Implementation |
|---|---|
| Airworthiness = manufacturer spec compliance | Hangar derives params from AMC vehicle_components.json; every step references manufacturer source |
| Full audit trail of configuration changes | Tooth — SHA-256 audit chain, before/after state per parameter, technician ID, timestamp |
| GCS maintenance includes software reinstall | Hangar param diff engine — compare current directory vs proposed, approve/reject per param |
| Documentation requirement (CMM/AMM/IPC) | Forge platform profiles link to manufacturer datasheets per component |
| Class 1 LRU swap with component records | Tooth component swap events — install/remove per serial/batch, flight hours at swap |
| Firmware version tracking | Tooth records firmware version at every param change event |
| Pre-flight airworthiness verification | Hangar preflight checklist module (see below) |
The Tooth Audit Trail as Maintenance Record
Under F3600-22, any change to a Class 1 UAS that affects its configuration relative to manufacturer specifications is a maintenance event. For software-configurable platforms, this includes:
- Flight controller firmware updates
- Parameter changes (any change from the baseline AMC vehicle directory)
- Component swaps (ESC, motor, FC, receiver, battery)
- Blackbox log entries that document in-flight anomalies
Tooth records all of these. A complete Tooth record constitutes a maintenance logbook compliant with F3600-22's intent for Class 1 systems.
Pre-Flight Airworthiness Checklist
The standard's airworthiness definition implies a pre-flight verification process. The following structure is used in Hangar's preflight checklist (see Hangar documentation):
Software/Configuration - [ ] Firmware version matches last known-good Tooth record - [ ] All parameters within Tooth-approved baseline (no untracked diffs) - [ ] Blackbox logging enabled and storage available
Propulsion - [ ] All motors spin up cleanly — no grinding, vibration, or asymmetric noise - [ ] Propellers secure, no cracks or chips, pitch/diameter matches build spec - [ ] Battery voltage at or above pre-flight minimum (BATT_ARM_VOLT threshold) - [ ] Battery connector secure, no damage to leads
Structure - [ ] Frame arms secure — no cracks at motor mounts or arm joints - [ ] All screws present and tight (vibration inspection) - [ ] No foam delamination or composite delamination visible
Electronics - [ ] FC LED indicators normal - [ ] RC link established and RSSI above mission minimum - [ ] GPS lock acquired (if required for flight mode) - [ ] OSD or telemetry feed live
Data Links / GCS - [ ] GCS connected and showing live telemetry - [ ] RC channel outputs verified (control surfaces or motor response correct) - [ ] Failsafe tested — RC signal loss → expected FS action
Standards Ecosystem Context
F3600-22 sits within a broader ASTM UAS standards family (Committee F38 and F46):
- F3002 — Design of the Command and Control Link for sUAS
- F3003 — Quality Assurance Specification for Small Unmanned Aircraft
- F3178 — Operational Risk Assessment for sUAS Operations
- F3269 — Methods for Bounding Flight Behavior of UAS
- F3322 — Small Unmanned Aircraft Systems (sUAS) Parachutes
- F3366 — General Maintenance Manual Specification for sUAS
- F3376 — Core Competencies for Aviation Maintenance Personnel (prerequisite for F3600)
- F3600 — UAS Maintenance Technician Qualification (this standard)
The FAA has been moving toward accepting ASTM standards as means of compliance for UAS operations under 14 CFR Part 107 and the forthcoming Part 108 (BVLOS). Organizations with F3600-aligned maintenance programs are better positioned for Part 108 compliance as those rules mature.
UTM and Airspace Awareness Stack
Before you fly anywhere near controlled airspace, you need to know what airspace you're in, whether authorization is required, what restrictions are active, and how to file your intent. This guide covers the full airspace awareness stack — from the apps on your phone to the UTM infrastructure being built for BVLOS.
The Authorization Hierarchy
Not all airspace requires the same process. The FAA classifies airspace into classes, and each has different authorization requirements for drones.
| Airspace Class | What It Is | Drone Authorization |
|---|---|---|
| Class G (uncontrolled) | Below 700ft AGL in most rural areas | No authorization needed (under 400ft AGL) |
| Class E (controlled) | Most of the NAS above 1,200ft; some areas from surface | No authorization at surface E; LAANC or DroneZone above |
| Class D | Airspace around smaller towered airports (typically 5nm, SFC–2,500ft) | LAANC authorization required |
| Class C | Airspace around medium airports (typically 5–10nm, SFC–4,000ft) | LAANC authorization required |
| Class B | Airspace around major airports (multi-layer, 0–10,000ft) | LAANC authorization required; more restrictive |
| Class A | IFR airspace, 18,000–60,000ft MSL | No drone operations |
| Prohibited/Restricted | Military, national security, etc. | Special authorization or prohibited entirely |
| TFRs | Temporary Flight Restrictions | Check before every flight |
The key tool for class D/C/B authorization is LAANC. The Low Altitude Authorization and Notification Capability is an automated system that grants near-instant authorization (typically within 30–90 seconds) in pre-approved UAS Facilities Map (UASFM) grids.
LAANC: The Standard Authorization Tool
What LAANC Does
LAANC grants automated Part 107 authorization to fly in controlled airspace at or below the altitude shown on the UAS Facilities Map. The UASFM shows a grid overlaid on controlled airspace, with each grid cell showing a maximum altitude (0ft, 100ft, 200ft, 400ft) where automated authorization is available.
Authorization is near-instant (typically under 2 minutes), tied to your FAA registration number, and valid for the time window and location you specified.
LAANC Access
LAANC is available through FAA-approved USS providers via their apps: - AiRHub — popular in commercial sector; web + mobile - Aloft (formerly Kittyhawk) — popular with enterprise operators - Skydio Cloud — integrated with Skydio aircraft - DroneDeploy — primarily for mapping workflows - Wing Pilot — Wing Aviation's app, includes free airspace awareness - Garmin Pilot — for pilots who use Garmin EFB already - ForeFlight — integrated with EFB workflows
All of these connect to the FAA's LAANC backend. Authorization from any of these is equally valid.
What LAANC Doesn't Cover
- Above UASFM altitude: If the UASFM shows 100ft and you need 200ft, you must use DroneZone manual authorization (5-day minimum wait).
- Class B airspace with 0ft UASFM altitude: This means automated authorization is not available at all altitudes in that cell — you need a manual DroneZone authorization.
- TFRs: LAANC does not override active TFRs. Even with LAANC authorization, a TFR in effect makes flight unlawful.
- BVLOS: LAANC is for VLOS Part 107 operations only. BVLOS requires a waiver or Part 108 Permit.
Pre-Flight Workflow: What to Check
Every flight, without exception:
-
TFRs — tfr.faa.gov or any LAANC app. TFRs can appear with little notice (VIP movement, emergency response, large events). A presidential TFR covers ~10nm radius and is a federal crime to violate.
-
NOTAMs — notams.faa.gov. Relevant to your airspace and route. UAV-specific NOTAMs (NOTAM type D) are most relevant; also check general airspace NOTAMs for your area.
-
Airspace class — is authorization required? Which tool do you use?
-
UASFM altitude — if in controlled airspace, what's the authorized altitude ceiling for automated approval?
-
Weather — Part 107 requires 3 statute miles visibility minimum and 500ft below clouds. Check wind at altitude, not just surface.
For BVLOS operations, additionally: 6. File a UAS NOTAM via DroneZone 7. Coordinate with the ADSP (once Part 108 infrastructure is in place) 8. Confirm C2 link coverage for the planned corridor
Ground Control Station Software
Mission Planner
Windows-native, most feature-complete for ArduPilot. Key airspace-relevant features: - ArcGIS / Google satellite layers — visualize terrain and obstacles - Geofence editor — define operational area boundaries; ArduPilot enforces these in firmware - NOTAM overlay via 3rd party plugins — Herelink or FAA data feeds - Corridor planning for BVLOS linear missions
Configuration:
# Enable geofence enforcement
FENCE_ENABLE = 1
FENCE_TYPE = 7 # All fence types (polygon + altitude + circle)
FENCE_ACTION = 1 # RTL on breach
FENCE_ALT_MIN = 0 # Minimum altitude (0 = surface)
FENCE_ALT_MAX = 120 # Maximum altitude (meters AGL)
QGroundControl (QGC)
Cross-platform (Windows/Mac/Linux/iOS/Android). More approachable than Mission Planner, works with both ArduPilot and PX4. Key airspace features: - Airmap integration (legacy) — basic airspace overlay - Geofence editor — similar to Mission Planner - Survey and corridor mission tools — optimized flight paths for mapping
QGC is better for operators who work across platforms or need a mobile GCS.
UgCS
Designed for professional survey and inspection workflows. Key differentiators: - Terrain following — automatically adjusts altitude to maintain AGL height over varying terrain (uses SRTM or custom DEM data) - Corridor planning — linear corridor missions for pipeline, power line, road inspection - Virtual terrain 3D view — preview the planned flight path against terrain - DJI, ArduPilot, PX4 support — single GCS for mixed fleets
UgCS is the professional standard for corridor and terrain-following missions. It's not free ($500+/year for commercial license) but the terrain following alone justifies it for complex terrain operations.
UTM: What It Is and How It's Evolving
UTM (UAS Traffic Management) is the digital infrastructure that will eventually manage drone traffic the way air traffic control manages manned aviation — but without human controllers, using automated coordination.
The core UTM services:
| Service | What It Does |
|---|---|
| Airspace awareness | Know where flight is and isn't permitted, in real time |
| Flight planning | File intent, request authorization, check for conflicts |
| Conformance monitoring | Detect when a drone deviates from its planned flight |
| Deconfliction | Separate planned flights from each other in time/space |
| Dynamic airspace configuration | Respond to TFRs, emergencies, airspace changes |
Current state (2026): The FAA's LAANC covers airspace authorization. Remote ID provides identification. But the deconfliction and conformance monitoring services — the ones that enable multiple BVLOS operators in the same airspace — are still being built. The Part 108 ADSP (Automated Data Service Provider) framework is the regulatory foundation; the technical standards and certified providers are in development.
Near-term expectation: Part 108 Permits will require filing flight intent with an FAA-approved ADSP before BVLOS operations. This filing will: - Register your planned flight path and time window - Check for conflicts with other filed flights - Return a "de-conflicted corridor" or flag conflicts for resolution - Enable conformance monitoring during the flight
European U-Space: The EU has a more structured UTM framework (U-space, under EASA Regulations EU 2021/664–666). U-space is operational in several EU member states and requires drone operators to use certified USSPs (U-space Service Providers) for most operations. U-space is more mature than the US UTM framework and offers a preview of what the US system may look like.
Digital Notice to Airmen (NOTAM) and DroneZone
For any operation that requires manual FAA authorization (above UASFM altitude, BVLOS, Class B full coverage), use the FAA DroneZone portal (droneconnect.faa.gov).
Authorization types available via DroneZone: - Part 107 Airspace Authorization — manual review, 90-day processing time, for operations not covered by LAANC - Part 107 Waivers — for BVLOS, night (pre-2021), operation over people; 6–18 month review - UAS NOTAM filing — file a voluntary NOTAM for any UAS operation; required for BVLOS operations and useful for public safety coordination
UAS NOTAM best practice: File a UAS NOTAM for any operation over 400ft AGL, any BVLOS operation, and any operation near an airport even if LAANC-authorized. A filed NOTAM ensures ATC is aware of your operation and protects you in an airspace conflict investigation.
Integrating Airspace Data into the Flight Stack
For automated and autonomous operations, airspace data should flow into the aircraft's geofence, not just the pilot's phone.
ArduPilot dynamic fences: ArduPilot's geofence system can be updated in flight via MAVLink. A companion computer with airspace API access can: 1. Pre-flight: query airspace API (OpenAIP, AirHub, FAA UDDS) for restrictions in the operation area 2. Convert restrictions to ArduPilot fence polygons 3. Upload fences to FC before departure 4. Monitor for TFR activations and update fences dynamically in flight
Open data sources: - FAA UDDS (UAS Data Delivery Service): Free API for authorized airspace, FRIAs, UAS Facility Maps - OpenAIP: Global airspace data, free for non-commercial, API available - Airmap/Kittyhawk: Commercial APIs with global coverage - SkyVector: Web-based, good for visual planning (not for programmatic access)
ArduPilot fence upload via MAVLink:
# Upload an exclusion fence polygon via MAVSDK
await drone.param.set_param_int('FENCE_ENABLE', 1)
# Upload polygon vertices via MAVLink MISSION_ITEM_INT
# type = MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION
This integration pattern — dynamic airspace to dynamic fence — is the technical foundation for automated Part 108-compliant BVLOS operations. The regulatory infrastructure (ADSPs, certified APIs) is still maturing, but the aircraft-side implementation can be built now.