Files
Amateurfunk-Anki/README.md
T

12 KiB

Amateurfunk-Anki

Download the German amateur-radio exam question catalog from the Bundesnetzagentur and turn it into Anki decks.

Quick start

make           # fetch + build everything (default)
make fetch     # download + extract the catalog only → data/
make anki      # rebuild the five exam decks from data/ → anki/
make shorthand # rebuild the Q-group / operating-abbreviation deck → anki/
make technical # rebuild the technical / HAM-abbreviation deck → anki/
make test      # run all test suites
make clean     # remove data/ and anki/

Output: seven .apkg files under anki/.

Five exam decks built from the catalog: Betriebliche and Vorschriften get one deck each (shared across all license classes); Technische is split per class into three decks (N / E / A) following the catalog's class field. A class-A candidate who wants every Technische question imports all three Technische decks. The E (463) and A (716) decks are large pools, so each ships as a deck tree — one sub-deck per first-level exam topic under Technische Kenntnisse::E / ::A — so you can study them topic by topic instead of as one giant deck. Each is still a single .apkg; N (195) stays flat (small enough that sub-decks would add clutter without helping).

Two glossary decks of radio shorthand — Q-groups and operating abbreviations, and technical/HAM abbreviations — built from curated data rather than the catalog (see Glossary decks).

Re-importing a newer build preserves your review history.

Exam sections

The BNetzA exam has three parts (Prüfungsteile): two shared across all license classes plus the technical part, which is split per license tier. The question ID's first letter encodes which part it belongs to:

Non-technical (one deck each, taken by every candidate):

Section ID prefix Questions
Betriebliche Kenntnisse B* 172
Kenntnisse von Vorschriften V* 204

Technical (one deck per license class):

Class Section name ID prefix Questions Layout
N Technische Kenntnisse (N) N* 195 one flat deck
E Technische Kenntnisse (E) E* 463 11 topic sub-decks
A Technische Kenntnisse (A) A* 716 11 topic sub-decks

Counts are from the current edition (3. Auflage, März 2024; ~1750 questions total). The class-E and class-A decks are each split into one sub-deck per first-level exam topic (the 11 catalog subsections — Bauteile, Sender und Empfänger, Antennen …, etc.) because those pools are unwieldy as a single deck; each is still one .apkg containing a deck tree. Anki sorts those sub-decks alphabetically on import, not in exam order. The license tiers are cumulative for the exam: a class-E candidate is responsible for N* + E* + B* + V*; a class-A candidate is responsible for everything. Filter inside Anki by deck, by the klasse-N|E|A tag, or — for the topic within a deck — by the pfad-* tag, or by the Number field prefix.

Glossary decks

Two extra decks teach the radio shorthand a candidate actually needs — the codes used in the exam plus the most common ones used on the air that the exam never tests (real operating knowledge, not just the test). They are built from hand-curated JSON, independent of the catalog, so they build even without make fetch:

Deck Source Builder
amateurfunk-abkuerzungen-q-gruppen.apkg shorthand.json amateurfunk_shorthand.py
amateurfunk-technische-abkuerzungen.apkg technical.json amateurfunk_technical.py
  • Q-groups & operating abbreviations — Q-codes (QRM, QSO, QSY…), CW/voice shorthand (CQ, DE, 73, RST…), prosigns, and the distress/urgency signals (MAYDAY, SOS…).
  • Technical & HAM abbreviations — modulation and modes (SSB, FM, CW), signal domains (NF, HF, ZF), building blocks (VFO, PLL, AGC), components, measurements (dB, SWR, PEP), propagation, digital modes, and the organisations/regulations (ITU, CEPT, EMV).

Each code is a single Anki note with two cards: one prompts for the meaning given the code, the reverse prompts for the code given the meaning. A Q-group means one thing as a statement (QSO) and another as a question (QSO?), so each becomes two notes (four cards).

Filter inside Anki by tag: pruefung marks codes that appear in the exam catalog; q-gruppe / abkuerzung and (technical deck) kategorie-* mark the kind; prosign and notsignal mark prosigns and the non-amateur distress signals. The pruefung flags and the meanings were cross-checked against the BNetzA catalog — pruefung means "this code's meaning is tested", not merely "the string appears somewhere".

⚠ Important: AI-generated content. shorthand.json and technical.json are compiled with AI assistance. As with the explanations and references, verify anything that looks off against a primary source (the catalog, the ARRL/DARC Q-code lists, or the resources under See also) before relying on it.

Exam question source

The catalog is published by the Bundesnetzagentur (BNetzA), the German federal regulator for telecommunications. Current edition: 3. Auflage, März 2024 (issued 2024-03-20, ~1750 questions across license classes N, E, A).

BNetzA replaces the file in place across editions, so the URL is stable; the fetcher detects updates via the HTTP Last-Modified header.

Exam aids (Hilfsmittel)

BNetzA publishes an official aid sheet that candidates are allowed to use during the exam — you do not have to memorize anything it contains:

It bundles the BNetzA frequency-allocation table (band limits, usage parameters, and maximum power per class), the IARU band plans, the German Rufzeichenplan (call-sign series → class plus the international suffixes like /m, /mm, /p), and the Formelsammlung (formula collection) together with constants and material tables. It does not contain foreign-country prefixes (Landeskenner), Q-codes, or the phonetic alphabet — those remain memory items.

Questions whose answer can be read or derived from this sheet carry a Hilfsmittel note in their explanation (see below), so you can tell when something is a lookup in the exam rather than something to learn by heart.

See also

  • 50ohm.de — community-maintained explanations, worked examples, and study material for the same exam. Pairs well with these decks for the why behind each question.
  • DARC — Deutscher Amateur-Radio-Club, the German national IARU member-society. Publishes the German band plan, regulatory liaison material, and a large body of technical and operating guidance referenced throughout the amateur-radio community.

Requirements

Python 3.11+, standard library only. No third-party dependencies.

Explanations

⚠ Important: AI-generated content. Every explanation shipped with these decks is written by an AI agent following the contract in EXPLANATIONS.md. AI agents make mistakes — they misread formulas, misquote law text, and confidently cite wrong sources. Do not treat any explanation as the ultimate source of truth. If something looks off, or if an explanation contradicts your existing understanding, verify against the primary source listed in the card (or against the catalog itself, the AFuV/AFuG on gesetze-im-internet.de, or the resources under See also). The official answer is always the one from the BNetzA catalog — the explanation is just a study aid, not an authority. Cards with a small low confidence badge are explicitly flagged as provisional and should be double-checked before you rely on them.

The back of each card optionally carries a terse English explanation of why the right answer is right. Explanations are not part of the BNetzA catalog — they're authored separately (by humans or AI agents) into explanations.json at the repo root. The build is non-blocking on this: questions without an entry just show no explanation block. Entries with confidence < 7 render a small "low confidence" badge so learners know the reasoning is provisional.

Where a question's answer is available in the official exam aid sheet (see Exam aids (Hilfsmittel)), the explanation appends a short Hilfsmittel note — for example pointing at the frequency-allocation table, the IARU band plan, the Rufzeichenplan, or the Formelsammlung — to flag that it is a lookup you may consult during the exam rather than a memory item.

EXPLANATIONS.md is the editorial contract: schema, sourcing guidance, confidence scale, and the workflows an AI agent should follow when asked to add or improve entries.

References

⚠ Important: AI-generated content. The files under references/ are compiled by an AI agent from the exam catalog and public sources. AI agents make mistakes — they mis-transcribe figures, miscopy table boundaries, and confidently state things that are subtly wrong. Do not treat these tables as authoritative. Verify against the primary sources cited in each file (the official IARU Region 1 band plans, the AFuV/AFuG on gesetze-im-internet.de, or the BNetzA catalog itself) before relying on them.

The references/ directory holds study aids that span many questions — lookup tables cross-referenced to the catalog. They are reading material, not part of the build, and are not bundled into the .apkg decks.

  • references/Frequencies.md — IARU Region 1 band-plan frequency recommendations (HF through microwave), cross-referenced to the exam questions that test them.
  • references/Call-Signs.md — call-sign patterns, suffixes, and country prefixes that appear in the catalog.
  • references/Q-Codes.md — Q-codes and operating shorthand used in the questions. This reference is the catalogue the Q-group glossary deck (shorthand.json) was built from.

More

  • CLAUDE.md — project orientation, pipeline overview (including the two glossary decks).
  • DESIGN.md — source-discovery notes, JSON schema, per-stage design contracts.
  • EXPLANATIONS.md — schema + workflows for the explanations database.
  • shorthand.json / technical.json — curated source data for the two glossary decks.

License

The downloader and builder code is in this repo. The exam questions themselves are published by the Bundesnetzagentur under DL-DE→BY-2.0; attribution is preserved in every generated artifact (README.txt inside data/<edition>/, attribution field in the per-edition manifest).