183 lines
8.4 KiB
Markdown
183 lines
8.4 KiB
Markdown
# Amateurfunk-Anki
|
|
|
|
Download the German amateur-radio exam question catalog from the
|
|
Bundesnetzagentur and turn it into Anki decks.
|
|
|
|
## Quick start
|
|
|
|
```sh
|
|
make # fetch + build (default)
|
|
make fetch # download + extract the catalog only → data/
|
|
make anki # rebuild .apkg files from data/ → anki/
|
|
make test # run both test suites
|
|
make clean # remove data/ and anki/
|
|
```
|
|
|
|
Output: five `.apkg` files under `anki/`. 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. 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 |
|
|
|-------|---------------------------|-----------|----------:|
|
|
| N | Technische Kenntnisse (N) | `N*` | 195 |
|
|
| E | Technische Kenntnisse (E) | `E*` | 463 |
|
|
| A | Technische Kenntnisse (A) | `A*` | 716 |
|
|
|
|
Counts are from the current edition (3. Auflage, März 2024; ~1750
|
|
questions total). 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 by the `Number` field
|
|
prefix.
|
|
|
|
## 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).
|
|
|
|
- Landing page: <https://www.bundesnetzagentur.de/DE/Fachthemen/Telekommunikation/Frequenzen/SpezielleAnwendungen/Amateurfunk/start.html>
|
|
- Machine-readable ZIP (what we download):
|
|
[`PruefungsfragenZIP.zip`](https://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Amateurfunk/Fragenkatalog/PruefungsfragenZIP.zip?__blob=publicationFile)
|
|
— contains the JSON question tree, the `svgs/` figure folder, and a
|
|
`README.txt` with the official Quellenvermerk.
|
|
- Human-readable PDF (not used by this pipeline):
|
|
[`Pruefungsfragen.pdf`](https://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Amateurfunk/Fragenkatalog/Pruefungsfragen.pdf?__blob=publicationFile)
|
|
|
|
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:
|
|
|
|
- [`Hilfsmittel_12062024.pdf`](https://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Amateurfunk/AntraegeFormulare/Hilfsmittel_12062024.pdf?__blob=publicationFile&v=3)
|
|
|
|
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**](https://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**](https://www.darc.de/) — 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](https://www.gesetze-im-internet.de/), or
|
|
> the resources under [See also](#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)](#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](https://www.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.
|
|
|
|
## More
|
|
|
|
- `CLAUDE.md` — project orientation, pipeline overview.
|
|
- `DESIGN.md` — source-discovery notes, JSON schema, per-stage
|
|
design contracts.
|
|
- `EXPLANATIONS.md` — schema + workflows for the explanations
|
|
database.
|
|
|
|
## 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](https://www.govdata.de/dl-de/by-2-0); attribution
|
|
is preserved in every generated artifact (`README.txt` inside
|
|
`data/<edition>/`, `attribution` field in the per-edition manifest).
|