Reticulum: Chapter 3 — Prep the Raspberry Pi 3

Where I’m starting from

My Pi 3 is sitting in front of me with a blank SD card — nothing on it yet. I’ll be accessing it headlessly over SSH from my main computer, so I need to get the OS imaged and SSH configured before the Pi even boots for the first time. This chapter is purely software and setup — no Heltec hardware involved yet.

Step 1: Flashing the OS with Raspberry Pi Imager

I downloaded Raspberry Pi Imager from raspberrypi.com/software onto my main computer. The process is straightforward but there are a couple of choices worth making deliberately rather than just accepting defaults.

Insert the SD card, open Imager, then:

  1. Choose Device → Raspberry Pi 3
  2. Choose OS → Raspberry Pi OS (Other) → Raspberry Pi OS Lite (64-bit)

I’m going with Lite deliberately — I don’t need a desktop environment on a headless node, and keeping it lean means more CPU and RAM available for rnsd and mesh traffic later. Less cruft, more performance.

⚠️ NOTICE: as of late 2025, the newest Raspberry Pi OS images based on Debian Trixie have WiFi issues that can prevent headless setup from working on first boot. I’m sticking with the Bookworm image. If Imager only offers you Trixie and your Pi will be on Ethernet rather than WiFi, this doesn’t apply — but for a WiFi-based headless setup like mine, Bookworm is the safer choice right now.

  1. Click the gear/settings icon (Advanced Options) before writing — this is the crucial step for headless setup. Here I configure:
    • Hostname: rns-pi
    • Username and password
    • WiFi SSID and password, plus WiFi country (important — set this to your actual country)
    • Timezone and locale
    • Enable SSH (password authentication is fine to start)
  2. Write the image and wait for verification to complete before ejecting.

Step 2: First boot

SD card in the Pi, power it on, and wait about 90 seconds — it does an automatic first-boot resize and reboot cycle before settling. Then from my main computer:

ssh myusername@rns-pi.local

If .local hostname resolution fails (some routers block mDNS), I can find the Pi’s IP address from my router’s admin interface and SSH directly to that instead. Once I’m in, I know the hard part of headless setup is done.

Alternatively, you could just use an app like PuTTY if you already have it installed on your computer.

Step 3: Update everything first

Before installing anything, I want the system fully current. So let’s update and upgrade everything:

sudo apt update && sudo apt full-upgrade -y
sudo reboot

Reconnect via SSH after the reboot. This takes a few minutes on a Pi 3 — worth being patient rather than rushing past it.

Step 4: Install Python prerequisites

Raspberry Pi OS Bookworm ships with Python 3 already, but I need pip, venv tools, and a couple of extras:

python3 --version
sudo apt install -y python3-pip python3-venv python3-full git

Step 5: Set up a virtual environment

Here’s something that caught me out initially: Raspberry Pi OS Bookworm enforces PEP 668, which means a bare pip install at the system level gets refused. The clean solution is a Python virtual environment dedicated to Reticulum — it also means everything stays tidy and isolated from any other Python tools I might add later.

python3 -m venv ~/rns-env
source ~/rns-env/bin/activate

I’ll need to run that source command at the start of any new terminal session where I want to use these tools. It’s a small habit to build — and in Chapter 10 when I set up systemd services, the always-on daemon side of things handles this automatically anyway, so it only matters for interactive sessions.

Step 6: Install Reticulum and rnodeconf

With the venv active:

pip install rns --upgrade

This single command installs the full Reticulum Python package, which includes everything I need:

  • rnsd — the Reticulum daemon itself
  • rnodeconf — the RNode firmware flashing and configuration tool I’ll use in Chapter 4
  • rnstatus, rnpath, rnprobe — the diagnostic tools I’ll lean on heavily in Chapter 8

Let me verify both key tools installed correctly:

rnsd --version
rnodeconf --version

If both return version numbers without errors, I’m in good shape.

NOTE: At the time of writing this post and stepping through everything, rnsd = v1.3.5, and rnodeconf = v2.5.0.
Parts of this write-up may be different if there is a large delta between the versions what I am using here and future builds.

Step 7: Sort out USB serial permissions

This is a small but important step that’s easy to forget and causes confusing errors later. My user account needs permission to access serial ports (/dev/ttyACM0 etc.) without requiring sudo every time:

sudo usermod -a -G dialout $USER

This group change doesn’t take effect in the current session — I need to log out and back in, or just reboot:

sudo reboot

Reconnect via SSH after reboot and confirm the group is applied:

groups

I should see dialout in the list. If it’s there, the Pi is fully prepped.

Where I am now

At this point my Pi 3 is updated, has a clean Python venv with Reticulum installed, and has serial port permissions sorted. Nothing is physically connected to it yet — the Heltec boards are still sitting on my bench with their antennas attached, waiting for Chapter 4 where I’ll plug the first one in and flash it with RNode firmware.

Reticulum: Chapter 2 — Hardware and Legal Prep

Getting my hardware sorted

Before I plugged anything in or installed a single package, I wanted to make sure I had everything I needed on the bench and that I understood the legal framework I’m operating within. Running LoRa in the EU isn’t complicated, but there are real limits I need to respect — and getting them wrong doesn’t just risk a fine, it directly affects whether my mesh actually works well in practice.

Here’s what I’m working with:

ItemNotes
2× Heltec WiFi LoRa 32 V4 boardsConfirm they’re the standard V4, not the Expansion Kit or Touch variant — those are different flash targets
2× antennas (868MHz!)Must match the actual frequency I’m using.
A 915MHz US antenna won’t perform correctly here
2× USB-C cablesMust be data-capable, not charge-only cables. This trips people up constantly — cheap cables often carry power only and the Pi simply won’t see the device
Raspberry Pi 3 With its usual PSU, SD card, and case.
You could use a newer model.
(Later) Pi Zero 2 W + power supplyFor the remote node compute — not needed yet, just on order

The antenna rule I’m treating as non-negotiable

The very first thing I learned about these boards: always attach the antenna before powering on. Transmitting into an open port with no antenna can destroy the SX1262 RF frontend almost instantly — it’s not a maybe, it’s a when. So my rule is simple: antenna on, every single time, before any USB plug-in or power-up. I’m making this a reflex now so it never becomes a mistake later.

EU 868MHz — what I actually need to know

This is where it gets interesting from a regulatory standpoint, and as someone interested in RF I actually wanted to understand this properly rather than just copy settings from a tutorial. The 863–870MHz band we’re operating in isn’t technically an ISM band in the ITU sense — it’s a Short Range Device (SRD) band, governed by EC regulation with ETSI EN 300 220 as the harmonised technical standard. Two limits matter for my build:

Transmit power: carrier power is capped at ≤25mW ERP on the relevant sub-bands. The Heltec V4 is technically capable of much higher output at the chip level — I must not run it at full power on a licence-free EU channel. 25mW ERP works out to roughly 14dBm, which becomes my target TX power setting when I get to Chapter 6.

Duty cycle: the band is divided into sub-bands with different duty cycle limits. The two I care about are:

Sub-bandFrequency rangeDuty cycleMy take
M868.0–868.6MHz1%Home to the three standard channels (868.1, 868.3, 868.5MHz) — heavily used, only 36 seconds of TX per rolling hour
P869.4–869.65MHz10%Less crowded, 6 minutes of TX per rolling hour — much more breathing room for a mesh

I’ve decided to run on 869.525MHz (P sub-band) for exactly this reason. The 10% duty cycle gives my mesh room to actually function — periodic announces, message traffic, and the occasional file transfer — without constantly bumping into the legal ceiling. On a 1% channel, a busy mesh starts throttling itself into near-uselessness surprisingly quickly.

Why this isn’t just a legal checkbox

This is the part I find genuinely important to understand: getting the duty cycle configuration wrong isn’t just a regulatory problem, it’s a practical one. RNode firmware enforces duty cycle limits in software once I tell it the correct region and parameters. If I configure things incorrectly — say, too aggressive an announce interval on a 1% channel — the firmware will throttle my own transmissions and the mesh will feel sluggish or drop packets entirely. Setting this right in Chapter 6 directly determines whether my network performs well, not just whether it’s legal.

One thing worth noting: some EU member states have national variations on top of the ETSI baseline. Since I’m in Germany, the Bundesnetzagentur is the relevant authority — but for the power and duty cycle limits above, the ETSI EN 300 220 baseline keeps me safe and compliant. Worth a quick check against your own national regulator if you’re following along from elsewhere in the EU.


Hardware is on the bench, antenna rule is locked in, and I understand the regulatory framework I’m operating within. In Chapter 3, I’ll start getting the Raspberry Pi 3 ready — OS, Python, and installing the Reticulum tools I’ll need before anything gets plugged in.

Reticulum: Chapter 1 — Concepts and Architecture

What Reticulum actually is

Before I touch a single piece of hardware, I wanted to make sure I actually understood what the Reticulum Network Stack (RNS) is — and what makes it different from the other mesh networking tools I’d come across. The short answer is that Reticulum isn’t a mesh radio protocol like LoRaWAN or Meshtastic. It’s a full networking stack — think of it as a replacement for the whole TCP/IP suite — that’s completely transport-agnostic. It can run over LoRa, packet radio, WiFi, TCP/IP, serial cables, even data-over-audio. The same Reticulum identity and the same application can move seamlessly across any combination of these at once. The LoRa nodes I’m building are just one interface type Reticulum can use, which is part of what makes this so interesting.

Three ideas make this stack genuinely different from typical networking, and I think they’re worth understanding before diving into the hardware:

  • Identity, not address. Every node and every user has a cryptographic identity — a keypair. You don’t route to an IP address, you route to a destination hash derived from a public key. This means encryption and addressing are unified from the ground up, with no central authority handing anything out.
  • No central authority. No DNS, no IP allocation, no certificate authority. Nodes discover each other and build routing tables organically through announcements. Nothing about this network depends on any external service staying online.
  • Initiative-based routing. Nodes announce themselves periodically. Other nodes hear those announcements, remember the path, and that’s how packets get routed later. There’s no constant polling or handshaking overhead — which matters enormously on slow LoRa links where every transmission costs airtime.

The four logical layers in my build

When I mapped out what I’m actually building, it breaks down into four layers sitting on top of each other:

[ Application ]   Nomad Network / Sideband / custom scripts
        |
[ Reticulum (RNS) ]  rnsd daemon — routing, encryption, transport logic
        |
[ Interface ]     RNode firmware — turns LoRa radio into a packet modem
        |
[ Radio (PHY) ]   Heltec V4 + SX1262 chip, 868MHz EU ISM band

My Raspberry Pi 3 runs the middle two as a single process: rnsd (the Reticulum daemon) talks out over USB serial to the Heltec, which is running RNode firmware and only deals with the radio physics. The Heltec itself doesn’t know anything about identities, encryption, or routing — it just shuttles KISS-framed packets between USB and RF. All the intelligence lives in rnsd on the Pi. That clean separation is one of the things I find elegant about this design.

Why this matters for my plan

Right now my plan is: Pi (with RNode #1 on USB) ↔ RF ↔ standalone RNode #2. But for Node 2 to be useful, something needs to run Reticulum on the other end — otherwise it’s just a radio with no brain. My real options, which I’ll work through properly in Chapters 5 and 7, are:

  1. Second compute near Node 2 — another Pi, a laptop, a phone running Sideband — attached to the Heltec via USB, giving me a second full site with complete app capability.
  2. TCP/WiFi bridge firmware on the remote Heltec — bridges LoRa to a WiFi/TCP backbone without needing separate compute, but it’s a different, less mature firmware path I’ll explore later once I understand the basics.
  3. Single Pi, two RNode interfaces — both Heltecs plugged into the same Pi via USB, which is actually the smartest way to start: prove everything works on the bench before deploying anything remotely.

Given where I’m starting, my plan is to validate everything with both Heltecs plugged into the Pi first, then physically separate them once I’m confident the radio link and configuration are solid.

The Transport concept — important for where this is going

One concept I want to flag early because it shapes everything that follows: a Reticulum node can be configured as a Transport Node, meaning it actively forwards traffic for others, not just sends and receives its own. My Pi 3, sitting at a fixed location with reliable power, is the natural candidate to become a Transport Node as I scale to 3+ nodes. This is what turns “two devices that can talk to each other” into actual mesh infrastructure — and it’s something I’ll enable in Chapter 6 and revisit properly when we get to Chapter 11.


That’s the conceptual foundation I’m working from. In Chapter 2, I’ll get into the physical hardware and the EU radio regulations I need to respect before anything gets powered on — including some rules around duty cycle and transmit power that will directly affect how I configure everything later.

Reticulum Network Stack

So, what exactly is Reticulum? Pronounced Reh-TIK-yoo-lum, it comes from Latin, meaning “small net” or “little network” — which is a pretty perfect name for what it does. Reticulum is a networking stack built for the real world — the one where you are operating from a hilltop, a remote cabin, or the back of a vehicle, and the internet is either unavailable, unreliable, or simply not something you want to depend on. It is designed to run across whatever physical links you have available: LoRa radio, packet radio, WiFi, serial cables, or even audio tones over a soundcard. Unlike conventional networking, which assumes stable connections and centralised infrastructure, Reticulum treats those things as a luxury rather than a requirement. The same application, the same identity, and the same encrypted conversation can move across all of those link types simultaneously — the network figures out the best path on its own.

For those familiar with packet radio, Reticulum will feel conceptually familiar in some ways: it uses KISS framing over radio links, supports multi-hop routing, and is built around the idea that nodes should be able to find and communicate with each other without any central coordination. But it goes considerably further. Rather than assigning addresses from a central authority, every node and user on a Reticulum network is identified by a cryptographic keypair — your address is your public key, and encryption is built into the addressing system from the ground up. There is no network administrator handing out addresses, no DNS server to look up, and no single point of failure. Nodes announce themselves periodically, others hear those announcements and build routing tables from what they actually receive, and the mesh grows organically from there.

For the LoRa and IT community, Reticulum offers something that most LoRa platforms do not: a full, general-purpose networking stack rather than a purpose-built application. Platforms like Meshtastic are excellent for what they do, but they are largely fixed-purpose messaging systems. Reticulum is a foundation you can build anything on — messaging, file transfer, remote monitoring, custom applications — while remaining transport-agnostic underneath. Low-cost hardware like the Heltec WiFi LoRa 32 V4, flashed with open-source RNode firmware, becomes a capable radio modem that a Raspberry Pi can use as one interface among many, routing traffic intelligently across whatever links are available.

In the chapters that follow, I invite you to join me as I dive step by step into building my own Reticulum network from scratch — two LoRa nodes, a Raspberry Pi as a persistent routing node, EU-compliant radio configuration, and a growing mesh I plan to expand over time to include a cloud node. This is not a polished how-to from someone who has done it a hundred times — it is a genuine exploration of what is possible, documented as I go. Whether your interest is emergency communications, off-grid connectivity, decentralised networking, or simply seeing what capable radio hardware and thoughtful software can do together, I hope you will find something here worth taking back to your own shack.

DISCLAIMER: Laws change over time. Useable radio frequencies vary by region and country. Ability to transmit encrypted signals can also vary by region and country. Make sure you have looked up, read, and understand what is allowed and acceptable where you are. Remember that YOU are responsible for what you transmit.

Reticulum outline of what I will be covering…

Chapter 0 — Reticulum Network Stack
Introduction to RNS

Chapter 1 — Concepts & Architecture
What Reticulum actually is, how RNode/Pi/app pieces fit together, and how your 2-node topology will grow.

Chapter 2 — Hardware & Legal Prep
Heltec V4 unboxing/antenna safety, USB cables, EU 868MHz duty-cycle/power rules you must respect.

Chapter 3 — Prep the Raspberry Pi 3
OS, Python, drivers, installing Reticulum (rns) and rnodeconf.

Chapter 4 — Flash RNode Firmware onto Heltec V4 (Node #1, attached to Pi)
Using rnodeconf –autoinstall, selecting Heltec V4, setting EU 868MHz region.

Chapter 5 — Flash the Second Heltec V4 (Remote Node)
Same process, plus deciding if it’ll be USB-tethered to a second compute, battery-powered standalone, etc.

Chapter 6 — Configure Reticulum on the Pi (~/.reticulum/config)
Defining the RNode interface, frequency/bandwidth/spreading factor/power settings, enabling Transport mode.

Chapter 7 — Deploy the Remote Node
How the second node connects to the mesh — same Pi via second RNode, separate compute, or standalone via WiFi/TCP bridge.

Chapter 8 — First Contact: Testing the Link
Using rnstatus, rnpath, ping tools to confirm the two nodes see each other.

Chapter 9 — Running an Application
Install Nomad Network (or Sideband) on the Pi/phone, send a real message across the mesh.

Chapter 10 — Running rnsd as a Service
Making the Pi a persistent always-on Transport node (systemd), so it’s real infrastructure, not just a foreground process.

Chapter 11 — Growing to 3+ Nodes & Next Steps
Multi-hop considerations, Transport nodes, propagation nodes, planning antenna placement.

Chapter 12 — Adding a Cloud Node
Making a permanent, internet-reachable rendezvous point with a static IP

Chapter 13 — Adding a Nomad Network Propagation Node
Adding “Store-and-Forward” mesh capability to the cloud node

Meshcore vs Meshtastic

MeshCore and Meshtastic both leverage LoRa radio technology to create decentralized, off-grid mesh networks ideal for scenarios without cellular or internet access. These systems enable long-range text messaging, location sharing, and IoT data relay through multi-hop packet routing on low-power hardware.​

What is Meshtastic?

Meshtastic is an open-source project launched in 2020 that turns affordable LoRa radios into a mesh network for off-grid communication. Devices rebroadcast messages in a “managed flooding” approach, where every node relays packets up to a configurable hop limit, typically defaulting to 3 hops (max 7). This creates a resilient ad-hoc network without needing fixed infrastructure, supporting features like encrypted text messaging, GPS position sharing, and telemetry data such as battery levels or environmental sensors.​

The ecosystem thrives on community contributions, with firmware compatible across a wide range of hardware including ESP32, nRF52, and RP2040-based boards from brands like Heltec, LilyGO, and RAKwireless. Users connect via Bluetooth to Android/iOS apps or web interfaces, and no phone is required for basic mesh operation. Meshtastic excels in DIY projects, hiking groups, and emergency scenarios due to its “bring-your-own-radio” simplicity.​

What is MeshCore?

MeshCore is a lightweight C++ library and multi-platform system focused on secure, efficient LoRa mesh networking, supporting embedded devices for text communication and IoT. Unlike flooding, it uses advanced hybrid routing with configurable roles: “companion” nodes (end-user devices) do not relay messages, while dedicated “repeaters” or “room servers” handle forwarding up to 64 hops, incorporating path learning, deduplication, and ACLs for zoning.​

Pre-built firmware works with Heltec, RAK Wireless, and similar LoRa hardware, flashed via tools like ESPTool. Official apps (some proprietary) pair over Bluetooth or serial console, emphasizing low chatter, long battery life, and scalability for fixed networks. Applications span off-grid comms, disaster recovery, tactical ops, and sensor networks, with features like bulletin board systems (BBS) for store-and-forward messaging.​

Key Technical Differences

Meshtastic and MeshCore share LoRa foundations but diverge in architecture. Meshtastic’s flooding lets any node relay, suiting mobile groups but risking airwave congestion in dense areas. MeshCore’s role-based routing minimizes traffic—companions stay silent, repeaters optimize paths—enabling larger, quieter networks.​

Hop limits reflect this: Meshtastic caps at 7 for efficiency, MeshCore scales to 64 for regional coverage. Telemetry differs too—Meshtastic pushes frequent updates (battery, position), flooding the channel; MeshCore pulls data on-demand, conserving power. Protocols are incompatible; hardware can switch firmware, but networks do not interoperate.​

Hardware overlap exists (e.g., Heltec V3), but Meshtastic supports more devices like WisBlock modules and standalone handhelds with screens/keyboards. Both encrypt traffic, operate license-free in ISM bands, and prioritize low power.​

Pros and Cons of Meshtastic

Pros:

  • Beginner-friendly with plug-and-play setup—no infrastructure needed for small groups.​
  • Vast open-source community, extensive docs, apps on Google Play/App Store, and rich modules (GPS, sensors).​
  • Broad hardware compatibility and DIY ethos, including WiFi/Bluetooth integration.​
  • Proven in real-world use like 331km range records and roaming scenarios.

Cons:

  • Network chatter from constant rebroadcasts and telemetry floods airwaves in crowds, delaying messages.​
  • Scaling issues in dense or large deployments; default low hops limit range without tuning.​
  • Higher power draw from frequent broadcasts, shorter battery on same hardware.
  • Occasional UX glitches like Bluetooth drops or alpha features in apps.

Pros and Cons of MeshCore

Pros:

  • Superior efficiency: less chatter, faster delivery, longer battery (quicker BT disconnect).​
  • Scalable for city/region networks with fixed repeaters, advanced routing, and BBS for reliability.​
  • Low-power focus suits solar/battery IoT, asset tracking, and monitoring.​
  • Role-based design prevents loops, supports zoning/ACLS for secure/tactical use.

Cons:

  • Requires planning: needs repeaters for multi-hop; companions alone limit to direct range.​
  • Smaller ecosystem—fewer hardware options, some closed-source apps, brittle UX for novices.​
  • Less “just works” for ad-hoc mobile groups without setup.​
  • Emerging project with ongoing features like UI redesigns.

Use Cases and Comparison Table

Choose Meshtastic for spontaneous, mobile setups like hiking or small teams where anyone can relay. Opt for MeshCore in planned, large-scale ops like urban emergency nets or industrial IoT needing quiet, reliable routing.​

AspectMeshtasticMeshCore
RoutingFlooding (all nodes relay) Role-based hybrid ​
Hop Limit3-7 Up to 64 
Best ForAd-hoc mobile groups Fixed large networks 
Battery EfficiencyGood, but telemetry-heavy Excellent, low chatter 
Community/HardwareLarge, broad support Growing, focused 
Setup ComplexityLow Medium (repeaters) 

Superior Efficiency and Scalability

MeshCore’s popularity surges due to its superior performance in large-scale, reliable deployments, drawing users frustrated with Meshtastic’s limitations in dense or urban meshes.​​ MeshCore’s role-based architecture (companions avoid relaying, repeaters use path learning) slashes network chatter by 80-90%, enabling reliable multi-hop messaging in 30+ node networks where Meshtastic clogs. Communities like Austin, Boston, Cascadia, and Omaha report faster delivery (sub-2s), higher confirmation rates, and scalability to 64 hops, ideal for regional meshes on hills/rooftops.​​

Established meshes (Puget, West Coast, TennMesh) showcase MeshCore’s edge: live traces from Cascadia highlight congestion-free ops; operators migrate entire networks post-Meshtastic limits. Videos and forums document “night and day” reliability for emergency/off-grid use, fueling grassroots growth via Discord/events.​​

This contrasts Meshtastic’s flooding/telemetry spam, prompting switches for “spotty” large nets.​

Users praise Meshcore’s simpler firmware, cross-platform apps (Android/iOS consistency), rooms/BBS for catch-up, remote repeater management, and open core (apps proprietary but forkable). Less buggy UX and EU-compliant narrow presets attract tactical/IoT users over Meshtastic’s alpha features.​

Category: LoRa, Mesh | LEAVE A COMMENT

EASA A2 Drone license in Germany

I obtained my A2 drone license in February 2025 using the steps that I lay out below. My only disclaimer is that while these steps are current at the time of this writing, but they may evolve over time as rules and regulations change. If you notice that things have changed, drop me a comment below and I’ll update the steps accordingly. Danke!


What is the A2 License?

If you want to fly a drone in Germany that weighs more than 500g OR operate it in urban or populated areas, you need to obtain your EASA A2 Certificate of Competency (aka – the A2 license). This guide will walk you through the process of obtaining your A2 license in Germany.

The A2 Certificate of Competency is part of the European drone regulations, put out by the European Union Aviation Safety Agency (EASA), for operating drones in the Open Category (A2 subcategory). Obtaining your A2 license in Germany is straightforward but it does requires training, studying, and passing an exam. This license allows you to fly your drone more flexibly and operate in urban areas, flying closer to people, while staying compliant with regulations.

  • Obtain the A1/A3 Basic Certificate
    • Before applying for the A2 Certificate, you must first pass the A1/A3 online exam provided by the Luftfahrt-Bundesamt (LBA).
    • If you do not currently have yours please refer to my post “EASA A1/A3 Drone license in Germany” as a great starting point to obtaining it.
  • Complete Self-Practical Training
    • Before taking the A2 exam, you must conduct self-training to gain experience flying your drone safely in an unpopulated area.
    • Training Requirements:
      • Practice in an area where you do not endanger people or property.
      • Perform various maneuvers such as straight-line flights, turns, and emergency procedures.
      • No official instructor is required, but you must declare in writing that you have completed the training.
  • Pass the A2 Theory Exam
    • Once you’ve completed your self-practical training, you need to take the A2 theoretical exam at an approved test center. The A2 theory exam consists of 30 multiple-choice questions. You are given 30 minutes to finish and you will need an minimum score of roughly 75% in order to pass.
    • Subjects covered:
      • Meteorology (weather conditions and their impact on drones)
      • UAS flight performance and limitations
      • Risk assessment for safe drone operations
    • The LBA provides a link with all of their recognized certified examination providers. The exam fee varies by the provider, and not all providers offer the exam in English. Expect to pay at least €120 and up for a test center that is giving the exam in English.
    • Link: LBA A2/STS Recognized Test Centers
  • Receive Your A2 Certificate
    • Upon successfully passing the A2 exam, you will receive [electronically] your Certificate of Competency for subcategory A2. This certificate is valid for five year and allows you to legally fly drones closer to people within the Open A2 subcategory.

Additional Considerations to Remember:

  • Ensure Compliance: Even with your A2 license, you still must follow German and EU regulations.
    • Maintain a minimum distance of 30 meters from uninvolved people (or 5 meters in low-speed mode).
    • Fly only drones that weigh under 2kg.
  • Mark your drone: You must have your Operator ID (e-ID) present on all of drones.
  • Follow local airspace restrictions: Check maps before flying to assure you are following airspace restrictions. There are websites like Dipol MapTool, and apps like Droniq or AirMap, which can assist with checking the airspace.
  • Respect privacy laws: When flying near people or private property respect their privacy.

By following these steps and adhering to the regulations, you’ll be authorized to operate your drone safely and legally within Germany and the rest of the European Union.

If you’re planning commercial drone operations, consider looking into the Specific Category (STS or SORA approvals) for even greater operational flexibility.

EASA A1/A3 Drone license in Germany

I obtained my A1/A3 drone license in January 2025 using the steps that I lay out below. My only disclaimer is that while these steps are current at the time of this writing, but they may evolve over time as rules and regulations change. If you notice that things have changed, drop me a comment below and I’ll update the steps accordingly. Danke!


Since I don’t like unnecessary dealings with the authorities or having to pay fines, the first thing I needed to do as I get into flying drones was to obtain my actual license to fly. Easy, right? Well… yes and no. Easy because it actually isn’t too difficult of a process and you can complete it in a couple hours or less. Not so easy because I needed to research what the process is and then translate the steps from Deutsche into English. Luckily for you, I documented my steps. So, if your English is better than your Deutsche, then you are in luck!

What is the A1/A3 License?

According to “Das Rules”, if your drone weighs more than 250 grams OR is equipped with a camera or other recording sensors, you must register as a UAS operator with the Luftfahrt-Bundesamt (LBA), the German Federal Aviation Office. Upon registration, you’ll receive a personal electronic identification number (eID) that must be visibly displayed on all your drones. My final suggestion before telling you how to get your license is that during the process below to use a browser plugin or other capability for translation, as the LBA website is completely in Deutsche.

To obtain the EASA A1/A3 drone license in Germany, follow these steps:

  • Get liability insurance
    • Insurance is mandatory for all drone operators, regardless of weigh or purpose, in order to cover third-party damages. If you have German Liability insurance, you might already be covered, I recommend that you contact your agent or look through your policy. If you are not already covered, you will need to look for either “Drohnen-Haftpflichtversicherung” or you’ll need a liability policy that covers drones. Knowing what you need to get will make it easier when you reach out to an insurance company.
    • While this step technically isn’t required until the end of the process, I’m putting it first as it might be the longest step if you don’t already have an insurance policy.
    • If you need a contact, that speaks English, at a reputable German insurance company please leave a comment below and I will reach back to you with their contact info.
  • Complete Online Learning:
    • The LBA provides an online training course covering essential topics such as air law, safety, human performance, operational procedures, and general UAS knowledge. The online materials to help you learn about the safe and practical operation of UAS, as well as the theoretical foundations that are essential for a responsible flight.
    • Link: LBA Online Teaching Materials
  • Complete Training Exam:
    • The LBA requires you to take a short training exam before they deem you qualified to take the actual theoretical exam. The training exam is pretty straight forward. It’s 20 multiple choice questions base on the content found in the learning content, linked above. You need to score 75% or better on this test before you are allowed to register for the theoretical exam. You can take this training exam as many times as you want.
    • Link: LBA Online Training Exam
  • Register as a UAS Operator:
    • This is where the fun starts to “take off”. That was a bad pun, I’m sorry…
    • Have your insurance policy number ready as you will need it in this step.
    • Once you pass your training exam, the LBA UAS portal will let you register.
      Part of registering, is that you will get an email from the LBA, you will create an account and after that your progress up to this point is saved.
    • In order to finish registering you will need to have the two items below. With out those two items you will not be able to complete your registration on the portal.
      • a picture of an ID to use to verify yourself.
      • your policy number for your insurance.
    • Now, you’ll want to bookmark this link. As, you will be returning to this site to login and download your license (digital copy) or update your contact info later on.
    • Link: LBA UAS Operator Registration
  • Pass the Online Theoretical Exam:
    • After completing the training exam, the next step is to pass an online theoretical exam. You will be emailed a link to access the exam. The theoretical exam consists of 40 multiple-choice questions. You are given 45 minutes to finish and you will need a minimum score of 75% in order to pass. If you don’t pass, you can retake the exam as many times as needed.
    • Link: LBA Online Theoretical Exam
  • Obtain the EU Certificate of Competency (A1/A3):
    • Upon successfully passing the exam, you’ll receive [electronically] the Certificate of Competency for subcategories A1 and A3. This certificate is valid for five years and allows you to operate drones in the specified subcategories. There is a fee of €25 for the issuing the EU proof of competence A1/A3.
    • Link: LBA Certificate Information

Additional Considerations to Remember:

  • Age Requirement: The minimum age to obtain the A1/A3 certificate is 16 years.
  • Insurance: In Germany, it’s mandatory to have liability insurance for your drone operations. Ensure your insurance policy covers UAS activities.
  • Mark your drone: You must have your Operator ID (e-ID) present on all of drones.
  • Follow local airspace restrictions: Check maps before flying to assure you are following airspace restrictions. There are websites like Dipol MapTool, and apps like Droniq or AirMap, which can assist with checking the airspace.
  • Respect privacy laws: When flying near people or private property respect their privacy.
  • Operational Limitations:
    • Always maintain a visual line of sight (VLOS) with your drone.
    • Do not fly higher than 120 meters above ground level.
    • Avoid flying over assemblies of people.
    • Respect no-fly zones, such as near airports or sensitive areas.

By following these steps and adhering to the regulations, you’ll be authorized to operate your drone safely and legally within Germany and the rest of the European Union.

Drone stuff

I know its a stretch, but since I didn’t feel like spinning up a new sub-blog, and drones are controlled via radio signals, I felt like it’d fit in here well enough with the amateur radio stuff… I’m not too sure yet what I will post here but it will be things relating to UAS and drones as I dive into the hobby.

Raspberry Pi for Ham Radio Digital Modes

There I was sitting in my cave with a for now temporarily unused RaspberryPi (RPi) 3, having finished migrating my retro gaming onto a RPi 4. Having a itch I needed to scratch to get more into digital modes I thought it was a perfect time to look into setting up my RPi to do digital for me. That decision queued hours of YouTube videos and reading other people’s blog posts to figure out what I needed, as well as what I needed to do, to make my RPi work along side my radio as my newest little tool. Now that I have figured out a way forward to do so, I’m sharing my blog post to help you. And let’s be honest, it’s also to help me out with the build process for whenever the RPi’s SD card dies on me and I have to start over from scratch. Let’s begin…

Step 1: Reimage the SD card

In order to install the Raspberry Pi OS (previous known as Raspbian) we will need some software to “lay” the image on your SD card. To do this, there are many different software available but one of the simplest for all technical levels is the Raspberry Pi Imager from the folks that make the RPi. If you go to this link, https://www.raspberrypi.com/software/, you will find the imaging tool near the top of the page.

RPI OS Imager

Select the link for the version of the software that is appropriate for your computer’s operating system. Download and install it on your machine, then open the application.

Select the device type you are using. I have a RPi 3, so that is what I am going to select.

Select the OS version you are going to install. This will most likely be 64-bit, as it can run 32-bit stuff.

If it is not already, plug your SD card into your computer. If you get any pop-up messages about needing to format the card, you can disregard those for now. Click on the ‘Storage’ button and select the SD card you just plugged in. Remember to verify the capacity of the card you are going to be writing to so you can tell if you have the right device. Since this will completely wipe the SD card and you will loose any existing data on it, you want to make sure that you have the correct device selected.

Now that everything is selected, we can click on the ‘NEXT’ button. You then see a popup message that asks if you want to customize OS. This is optional, but you can edit and set stuff like hostname, wifi settings, enable ssh, etc…

Step thru the next couple popup messages, then it will kick off the reimaging. Go grab a drink, or a snack, as this will take a few minutes to complete. When it’s done, you will get a message just like what’s below.

Now you may eject that SD card from your computer and go plug it into your RPi.

Step 2: Prepping the Pi

Now that the newly reimaged SD card is plugged into your RPi, go ahead and turn it on. It will take a moment to start and load before you’re at the desktop and ready to proceed. Make sure you have either plugged in a network cable or have taken a moment to connect to you WiFi.

Open the command prompt. We’re going to run a few lines to set things up…

Lets run updates for starters.

sudo apt update && sudo apt upgrade -y

Then run the Raspberry Pi Configution tool to setup and tweak the settings on your RPi. This is where you can enable SSH if you didn’t do so when initially imaging the SD card. Go ahead and poke your way thru all those settings to make sure you have them how you want.

sudo raspi-config

Here are a few of the things you should consider looking at and setting up

  • System Options
    • WiFi enabled (optional but likely)
    • Hostname
  • Interface Options
    • SSH enabled (if you plan on remoting into it)
    • VNC enabled (if you plan on remoting into it)
  • Localization
    • Locale
    • Timezone
    • Keyboard
    • WLAN Country
  • Advanced Options
    • Expand Filesystem

Step 4: Ham apps

With all that initial BS out of the way. It’s time to install the fun stuff that we’ll actually use. 😎

We’re going to take a little bit of an easy button here, and use a script that another Ham has created and shared on his GitHub page. That guy is Jason, better known as KM4ACK in the ham community. If you’ve ever spent time browsing ham and amateur radio YouTube videos, you’ve probably seen a video or two of his. Here’s a link to his KM4ACK YouTube channel, check him out, he has a lot of great content on so many ham related topics.

KM4ACK deserves a lot of credit for his GitHub project named 73 Linux. He started it off as a project called “Build a Pi” that was a collection of scripts that installed a bunch of ham stuff on your Pi. It has since evolved into 73 Linux project, with other contributors, and it now supports the Raspberry Pi and Debian x32_64 hardware, full user control of the build when installing, and the ability to side load new apps. And it’s Open Source and shared on GitHub, talk about a software win! Here is a link to the 73 Linux project on KM4ACK’s GitHub.

Okay, enough talking… Let get to installing. The first step is to make sure that git is installed on your machine.

 sudo apt install git

Then you can run the following command:

 git clone https://github.com/km4ack/73Linux.git $HOME/73Linux && bash $HOME/73Linux/73.sh

The above command is two commands that are combined into a one liner. So lets break it apart so we can know what it is doing. Lets first look at everthing before the “&&”.

git clone https://github.com/km4ack/73Linux.git $HOME/73Linux

This is a git command to copy the repo of KM4ACK’s 73 Linux from his GitHub repo and save it to a folder named ’73Linux’ in the pi user’s home directory. Now lets look at what happens after the “&&”.

bash $HOME/73Linux/73.sh

This command will run a bash script that was downloaded from the 73 Linux repo onto your machine. It is essentially launching the installer that runs and adds all the handy ham stuff on to your computer.

And that’s it! You’ve now installed 73 Linux on your Raspberry Pi and you are ready to go!

KM4ACK has quite a few videos on his YouTube channel that will help you with the individual applications within 73 Linux. There is a link to his channel at the start of step 4 if you scroll back up.

This is also, unfortunately, where I’m going to stop this post. While setting this up and installing 73 Linux for this post, I’ve come to realize that the extra RPi 3 that I am using just doesn’t have enough resources to really run everything. For best results, you probably want to use an RPi 4 or better to truly have a usable experience.

For my next iteration in my shack, I’ve ordered myself a cheap netbook laptop. For just over $100, i was able to find a machine that has specs that are better than a RPi 4, a built in screen, and a battery for mobility. Stay tuned for the upcoming post where I’ll install linux and 73 linux on that laptop and we’ll be back off to the land of RX/TX.