DCF77 Meteotime Decoding – Technical Details

What Was Achieved

The goal was to fully decode the DCF77 Meteotime weather data, including its actual content.

✔️ Bitstream fully understood
✔️ 3-minute frame structure reconstructed
✔️ Decoder and crypto correctly implemented
✔️ Validation via 0x2501 magic check confirmed
✔️ Weather data (temperature, conditions, wind) decoded
✔️ Regions and forecast sections identified

👉 Result:
The system is now understood — from raw RF signal to human-readable weather data.

For many years, numerous attempts were made to decode Meteotime, with only limited success.
Today, with modern tools, the process has become much more accessible.

👉 The approach used here was simple:

  • Provide real DCF77 recordings
  • Combine them with publicly available reference implementations
  • Let AI iteratively generate and refine a decoder
  • Let AI automatically test against real data until valid decryption is achieved

👉 The result is a fully working decoder — without manually writing a single line of code.


📦 Data Structure

Meteotime data is embedded into the standard DCF77 signal and transmitted in 3-minute frames.

Each frame consists of 22 payload bits and 20 check bits:

  • Minute n: 14 payload bits
  • Minute n+1: 8 payload bits + 6 check bits
  • Minute n+2: 14 check bits

👉 Total: 42-bit block per dataset


🔐 Encoding & Encryption

Meteotime data is not transmitted in plain form.

  • Data is permuted and encoded
  • A substitution-based cipher (S-Boxes) is used
  • The key is derived from the current time/date
  • No key is transmitted

👉 This effectively forms a lightweight broadcast cryptosystem


🔄 Decoding Process

  1. Bitstream acquisition
    Detect pulses and convert to binary
  2. Frame assembly
    Group into 3-minute blocks
  3. Integrity check
    Validate using check bits
  4. Key generation
    Derived from decoded time
  5. Decryption
    Reverse permutation and substitution
  6. Interpretation
    Map to weather data

🔍 The Road to the Solution

🧩 Phase 1 – Crypto Analysis

  • S-Boxes and permutations analyzed
  • Time-based key hypothesis

❌ No valid output

👉 Insight: Input data was wrong, not the algorithm


🧩 Phase 2 – Heuristic Reconstruction

  • Sliding windows
  • Bit order experiments
  • Key variations

❌ No stable results

👉 Insight: Missing correct framing


💡 Breakthrough (Phase 3)

The breakthrough came from publicly available reference code.

Key findings:

  • Fixed 3-minute frames
  • Frame alignment: (minute - 1) % 3
  • Edge case:
    • minute = 0 → underflow → 255 → 255 % 3 = 0
  • Total structure: 82 bits
    • 42 weather bits
    • 40 time bits
  • Time taken from minute 2
  • Bit 7 is skipped
  • Info bits are not part of the key

👉 This was the turning point.


⚙️ Decoder Implementation

📡 Input

Per minute:

  • 14 weather bits
  • Full time information

🧱 Frame Assembly

  • Minute 1 → Weather A
  • Minute 2 → Weather B + Time
  • Minute 3 → Weather C

42 weather bits


🧠 Data Buffer

[ 0..41 ] = weather
[ 42..81 ] = time

⚠️ Bit 7 is skipped


🔐 Cipher & Key

  • Cipher → weather bits
  • Key → time bits

🔓 Decryption Output

[ byte0 | byte1 | byte2 | byte3 | byte4 ]


✅ Validation

plain[1..2] == 0x2501

👉 Confirms valid decode


🌦️ Payload

  • Lower 22 bits contain weather data

🌍 Data Mapping

BitsMeaning
0–3Day weather
4–7Night weather
8–11Extreme / wind direction
12–14Rain / wind strength
15Anomaly flag
16–21Temperature

🗺️ Regions & Sections

  • Regions derived from frame index
  • Sections define forecast timeline

🚀 Summary

Meteotime is far more than “extra data” in DCF77 — it is a:

  • Structured data protocol
  • With error detection
  • And time-dependent encryption

👉 A surprisingly sophisticated system for a 77.5 kHz broadcast signal.

A reference implementation of this approach is publicly available on GitHub:
https://github.com/johndcf/dcf77-meteotime-decoder

Also the live decoder is taken from GitHub:
https://github.com/johndcf/DCF77-Meteotime-Live-Monitor