DCF77 AM Decoder
This program listens to DCF77 time signals transmitted via amplitude modulation (AM) and decodes the time information. It uses the `Rtaudio` library to capture audio input from a specified device.
Prerequisites
- 192kHz sampling capable sound card
- loop antenna pointed to the DCF77 transmitter
- `Rtaudio` library installed
- C++ compiler
- CMake
Example output
dev=129 in=0 sr=96000
dev=130 in=0 sr=192000
dev=131 in=0 sr=48000
dev=132 in=0 sr=48000
dev=133 in=1 sr=48000
dev=134 in=2 sr=192000
dev=135 in=2 sr=96000
dev=136 in=2 sr=192000
dev=137 in=1 sr=192000
dev=138 in=2 sr=44100
Enter input device id: 134
Listening for DCF77 AM dips. Press <Enter> to stop.
0111000011 1000010000 0110110001 0101001000 | <M>
[WARN] Minute ended, but we have 40 bits (expected 59). Skipping.
0000110100 1010000100 1001000101 0000100000 1101100010 1010010Audio status=1
Audio status=1
00 | <M>
========================================
DCF77 TIME: 2025-08-30 21:44
Flags: A1=0 Z1(CEST)=1 Z2(CET)=0 A2(leap)=0
========================================
0000110101 1010000100 1101000111 0000100000 1101100010 101001000 | <M>
========================================
DCF77 TIME: 2025-08-30 21:45
Flags: A1=0 Z1(CEST)=1 Z2(CET)=0 A2(leap)=0
========================================
0001100001 1110000100 1011000111 0000100000 1101100010 101001000 | <M>
========================================
DCF77 TIME: 2025-08-30 21:46
Flags: A1=0 Z1(CEST)=1 Z2(CET)=0 A2(leap)=0
========================================
0111101011 0111000100 1111000101 0000100000 1101100010 101001000 | <M>
========================================
DCF77 TIME: 2025-08-30 21:47
Flags: A1=0 Z1(CEST)=1 Z2(CET)=0 A2(leap)=0
========================================
0001000101 1001100100 1000100101 0000100000 1101100010 101001000 | <M>
========================================
DCF77 TIME: 2025-08-30 21:48
Flags: A1=0 Z1(CEST)=1 Z2(CET)=0 A2(leap)=0
========================================
0001001101 0110100100 1100100111 0000100000 1101100010 101001000 | <M>
========================================
DCF77 TIME: 2025-08-30 21:49
Flags: A1=0 Z1(CEST)=1 Z2(CET)=0 A2(leap)=0
========================================
0110110010 0111100100 1000010101 0000100000 1101100010 101001000 | <M>
========================================
DCF77 TIME: 2025-08-30 21:50
Flags: A1=0 Z1(CEST)=1 Z2(CET)=0 A2(leap)=0
========================================
0111011010 1010100100 1100011110 0001000001 1011000101 01001000 | <M>
[WARN] Minute ended, but we have 58 bits (expected 59). Skipping.
0001100101 1001000100 1010010111 0000100000 1101100101 01001000 | <M>
[WARN] Minute ended, but we have 58 bits (expected 59). Skipping.
0000011101 0100100100 1110010101 0000100000 1101100010 101001000 | <M>
========================================
DCF77 TIME: 2025-08-30 21:53
Flags: A1=0 Z1(CEST)=1 Z2(CET)=0 A2(leap)=0
========================================
0010111010 0110100100 1001010111 0000100000 1101100010 101001000 | <M>
========================================
DCF77 TIME: 2025-08-30 21:54
Flags: A1=0 Z1(CEST)=1 Z2(CET)=0 A2(leap)=0
========================================
00110101Audio status=1
01 0001100100 1101010101 0000100000 1101100010 101001000 | <M>
========================================
DCF77 TIME: 2025-08-30 21:55
Flags: A1=0 Z1(CEST)=1 Z2(CET)=0 A2(leap)=0
========================================