/dcf77

set dcf77 radio clocks through radio emissions of your display/monitor. my best hack ever.

Primary LanguageC

dcf77.c - Das Clock Fake @ 77.5 kHz


(c) 2003 by Matthias Wenzel, maZZoo NO @ SPAM gmx.de

         licensed under the GPLv2,
         see http://www.gnu.org/copyleft/gpl.html


>>>>>>>> this code is still very BETA, please          <<<<<<<<
>>>>>>>> report sucesses, improvements or ideas to me  <<<<<<<<


what's it ?
###########

This program paints black and white stripes on your screen. Your monitor
will now emit electromagnetic waves. Basically a carrier frequency of
77500 Hz. In Europe commonly used DCF77-radio-clocks will tune into that
frequency and listen ... to be honest, only if they're close enough to
your monitor they may/might.
The screen image will be modulated to emit the 59 information bits plus
the one sync bit per minute. Actually we only need to switch between two
static images once per second, but with a high timing precision of about
50ms. Nothing evil will happen to your monitor or LCD, we're not playing
with your modelines or the sync of your monitor.
The program uses the SDL-library to acess the screen, this can be a
problem when you don't have HW-acceleration - I had to switch back to
16bpp on my X to get the required 20fps.
The program now tests wether the screen performance is sufficient to
achieve the required 20 fps.


compiling
#########

do a 'make' and hope the best ...
you'll need the SDL-libraries installed, see http://www.libsdl.org/


running
#######

options:
    -v       verbose
    -f       force. don't run fps performance test
    -y nn    set year    to nn
    -M nn    set month   to nn
    -w n     set weekday to n
    -d nn    set day     to nn
    -h nn    set hour    to nn
    -m nn    set minute  to nn


if no parameters are given, time will start at 23:23, your
clock might tune in by 23:42



problems
########

 o this software is in a battle with a 50kW hardware. we probably need to
   test more and play with different modulation schemes to improve
   emission on more screens.
 o as of now, I only tested this program with the LCD of my laptop, but I
   could set all the clocks I had for testing
   Maybe for CRTs we need a different type of modulation
 o more testing is to be done


bugs
####

  o running with a virtual screen won't work
  o untested on HW-accelerated X
  o not yet seen working with a CRT !!
  o up to now time runs forward only ;)


misc
####

the excellent work of Erik Thiele ( http://www.erikyyy.de/tempest/ )
inspired me to write this program.
Tuning his code from several MHz down to 77 kHz I had to use a different
modulation scheme (PWM) to emit the required AM-shape.
I played with grey colors to implement the AM but no success. I picked
the grey color to have a certain number of bits set, and switched between
white and grey screens to implement the AM-ratio, as i suspected the
RAMDAC-databus to emit better than my LCD. No success either.
The first success was with a 1:3 black&white PWM-modulation.


DCF77
#####

some useful links related to the DCF77 coding scheme:

  o http://www.ptb.de/en/org/4/43/433/disse.htm
  o http://www.prog-link.com/dcf77/dcf77-contents.html


tempest
#######

which may be an abbreviation for 'Transient ElectroMagnetic Pulse
Emanation STandard' but nobody knows.

links on tempest:

  o http://www.cl.cam.ac.uk/~mgk25/ih98-tempest.pdf
  o http://www.shmoo.com/tempest/emr.pdf
  o http://www.eskimo.com/~joelm/tempest.html


history
#######

25 april 2003  dcf77-0.0.3 gcc instead of g++; options; measure fps
                           at startup

15 april 2003  dcf77-0.0.2 bugfixed, no options, LCD of my laptop sets
                           all five available clocks 

13 april 2003  dcf77-0.0.1 very experimental initial release