 Let's talk. So Martin decided to put this in academia and actually this is more of a hobby of than the actual work. So what we wanted to work with, with my colleague Enrico Rebula, is using very high stability clock source, which is the DCF-77 low frequency, very low frequency emitter in Germany, for measuring ionosphere altitude variations. That was actually decided during one of our barbecue party in the lab when Enrico was discussing with me about his PhD on measuring Lorentz signals and being able to separate the ionospheric wave from the surface ground propagating wave. So basically what we wanted to say is, okay, he did this like 25, 30 years ago as a PhD, can we do it nowadays with a sound card? So that was the original insight into this topic. Maybe some of you remember that a couple of years ago, I discussed GPS reception. Now GPS is a bit challenging because it's below terminal noise, you cannot see it on a spectrum analyzer. But the basic insight was that if you could collect the raw carrier signal from the GPS, well GPS is basically a collection of atomic clocks in the space, and you could do some nice physics. So a bit later now, Laurent Listerki here from Nest has published in one of his reviews what physics you can do on GPS usage, and this is all based on GNSS-SDR. So basically what the insight in this work is if you have a very high stability clock, and because frequency is a physical quantity that you can measure with a highest resolution, then maybe you can do something fun. So in this context, what we wanted to look at is looking at DCF-77 as a signal source that is locked or disciplined on the PTBs of the German National Metrologist Center atomic clocks, and actually that was all started during the EFTS, the European Frequency and Time Seminar, that is organized in Besançon every summer, when Andreas Bauer, actually the acknowledgement is here below, showed us one of these slides where he was presenting the code system that was implemented in DCF-77. So you might know that DCF-77 is one of these radio frequency emitters that allows you to synchronize some of these low-cost weather station clocks, and this is just done by an amplitude modulation I'll show you a bit later. But what Andreas showed during his presentation was that if you just look at the carrier with this amplitude modulation you have a narrow band signal which is basically just the timing signal once every second, and you're not going to do good positioning with this because you have a very high stability frequency, but your timing capability is very poor because nothing looks more similar from one sign period than another sign period. So you have no timing capability. What they did at PTB or the people working running DCF-77 is that they added pseudo-random phase noise over the carrier which is amplitude modulated. When you've been working for a year on GPS and reading over the documentation of GPS, that just jumps on you as a typical spectrum spreading using phase modulation and pseudo-random phase modulation. So when we had a look at this with Enrico, we said we have to try to do this and do this as easy as possible. So what we want to do here is to have access to the raw signal from DCF-77 and implement not the basic amplitude modulation detection that everyone has been doing maybe, but the more fancy phase modulation detection. Why did we do this? Well, if you look at the literature, it's been very well known and I think that people are forgetting this a little bit. Actually, I have never been introduced to this before, this work is that in the 60s, people were very much interested in very low frequency propagation. They were looking at ionosphere altitude because these waves are bouncing over ionosphere. If you look in the older literature, you see that between daylight and nighttime, sorry, nighttime and daytime, ionosphere changes altitude because ionization due to a cosmic rays from the sun will change the electron density in the ionosphere. Basically, you have a 20-kilometer altitude variation in addition to reflection capability change due to electron density. What we want to do here in this work is, we have this very high stability clock source located in Mainzling in Germany, and we are located in Besançon, 370 kilometers away, and we have this beautiful cesium locked oscillator that generates a carrier wave with a 50 kilowatt emitter, and we wonder whether we could do something more interesting than just simply synchronizing a weather station clock by looking at the time of flight of this wave, and this requires, of course, accurate timing because carrier frequency is one story, but if you want to do some timing, you need to have some sort of time of flight measurement, and this is where the carrier phase measurement will be involved. So just to get an order of magnitude, what are we looking for? We're considering DCF 77, 370 kilometers away from me, a ground wave propagating around 100 microsecond, and if you make this wave bounce over ionosphere, it will take another 100 microsecond additional to go to the ionosphere and back to me, and if the ionosphere moves by about 20 kilometer, you could expect some variation of day-to-night variation of about an additional 95 microsecond. So the question is, can we time the signal generated by DCF 77 received in Besançon by better than or much better than 100 microsecond? That's the question. With a few approximation, we consider that the wave is propagating at velocity in vacuum, and you assume that the ground wave is delay is negligible with respect to what we're looking at. So that's really the objective of this work. So the first thing I would like to introduce, I know this is not a top session about antennas, but again, for someone who's been raised with VHF antenna, microwave antenna, for me, an antenna is a 50 ohm or 75 ohm piece of wire, which is usually resonant, and when you go back to this three kilometer wavelength signal, any antenna will be much, much shorter than the wavelength, and if you go back in the literature, you know or you might find that such antennas are necessarily high quality factor antennas, which for someone raising VHF and SHF is usually a poor thing. You don't like high resonance antenna because they are narrow-band, and usually we want wide-band signals to have a lot of information content, like Shannon told us. And so on the one hand, we have these narrow-band antennas, but actually narrow-band is good for SDR because narrow-band in SDR will allow you to select only one signal and get rid of all the very low frequency signals that might prevent us from receiving DCF-77. So we have this high quality factor antenna, which is simply a coil, which is made resonant. The other thing that is not usual to us or at least to me is that these antennas are very high impedance. If you calculate the impedance at anti-resonance of the system, it's 175, 125 kilo ohm. So you need an adaptation circuit, so just feel the effect transistor that has a very high impedance, that will generate a low impedance output, and this you can feed directly to the sound card of your PC. Now if you do this in the lab, well, you get a lot of signals, basically because your cathode ray screen is generating signal, your switching supply is generating, that was the first discussion this morning. So you need to take the antenna outdoor. So you go through the emergency exit outdoor that gets out of my lab, put the antenna outside, and if I put the antenna like three, five kilometer away from the lab, then I get my signal from DCF-77. So at least with respect to GPS with DCF-77, I can take a spectrum analyzer and just have a look at the signal and I see it. So now I have a signal, I want to decode it. So I steal a locking amplifier from one of my colleagues, I take a synthesizer, and I simply generate 77.5 kilohertz, the DCF-77 carrier frequency, and surely enough on the oscilloscope, I see my amplitude modulated signal, these are the amplitude drops once every second, and I have the phase information which comes out of the locking, and because there's no reason for this receiver to be locked to a cesium clock, the local oscillator of this synthesizer has no reason to be locked on the cesium. Of course, you have a phase which depends on the thing we want to decode plus a time varying signal which is the frequency offset as we've just seen. But because I'm in the time and frequency lab, I'm lucky enough to have access to a cesium clock. So now I take a cesium clock, I lock the synthesizer on a cesium clock, and surely enough, PTB has a cesium clock which is locked to the Besançon Observatory clock. Of course, these two clocks are used to generate time, so these are synchronized, or at least they have a very slow drift. So basically we can get amplitude modulation, phase modulation, and this is just my locking amplifier output. There's not much I can do out of this. So I take this on an oscilloscope, I grab the oscilloscope signal, and by recording the raw signal from DCF-77, can I extract amplitude phase, and if I get the phase, can I do a cross correlation so that I can recover my pseudo-random information? So here is the pseudo-random code that has been added on top of DCF-77 carrier. So it's a pseudo-random, it's a 511 bit, so it's very similar to GPS. GPS is 10 bit, this one is 9 bit. Pseudo-random means that it doesn't repeat over this 511 sequence, and you have a plus or minus 13 degree phase variation as opposed to GPS, which is 0 or 180. This is just a very tiny phase variation, plus or minus 13 degree. So you generate this code, this is stolen from DCF-77 webpage from Wikipedia. You generate the code, you load the code, you re-sample your signal to have as many ones and zero as you have samples in each bit. You cross correlate, and surely enough, this is one of these Eureka day where everything works nicely. Once every second, you've got one of these peaks coming out, cross-correlation peak. And you might say, no, this is just noise. Well, if you zoom into one of these peaks, you have a real cross-correlation signal that is significant. So this is an example of getting the signal by cross-correlating my pseudo-random code over the phase information that I've recorded, and I can get a nice timing signal. And if you wonder, if you wonder why we're doing this, this is the amplitude modulation. I zoomed into the amplitude modulation. This is one of my cross-correlation peak. If you look at this over one minute, this is what you have. Once every second, you have a drop in amplitude. Once every second, you have a cross-correlation peak. And if you look at them, you see that, obviously, we're gonna have a much better timing accuracy with such a signal than with this one. If you do this over one minute, you see that you have a beautiful cross-correlation peak, which is very narrow, and here you have this broad drop of the amplitude. So basically what has been published earlier is that you have at least a 10-fold improvement in timing capability by using the phase cross-correlation as opposed to amplitude modulation. Okay, so so far I've shown off with my fancy instruments. I have an experiment which is a few thousand zero and you need a cesium clock. Quite a few people here will not be able to perform it. So now let's go to software-defined radio. I want to do this now. I have my locking amplifier with my cesium-locked source and I want to compare the results with a sound card. And again, my sound card has a local oscillator which has no reason of being locked on cesium. So I need to compare my sound card recording with some sort of time reference. And the obvious time reference is one PPS, one pulse per second coming from the GPS. I have one of these cheap U-blocks receivers. U-blocks is a Swiss company making very good GPS receivers. This is for 80 Euro, you can get a phase output, a phase locked GPS receiver, which is one PPS signal, which I measured it to be plus or minus 30 nanoseconds. So you have a very good time reference. And so again, we do the same thing. We have our audio signal because I have a sound card that can record at 192 kilohertz. I am within Nyquist theorem of two samples for a 77.5 kilohertz carrier frequency. I do a frequency-translating filter and I just record magnitude and phase out of this signal. And if I do this, I will try to tune the frequency-translating fear filter so that I get, well, I compensate for this 192 kilohertz offset from the wanted frequency. Now, as I just mentioned during the session panel, one of the things that always baffles me with this translating fear filter is, should I put plus 77 or minus 77? I always do it wrong. I have to try it twice. What is the sign of the frequency offset that you have to put in the frequency filter? And somehow in this case, it worked whatever I put plus or minus 77.5. And this is obvious once you realize that you've recorded a real signal. This is not an IQ output, a complex output. It's a real signal. A signal, a real signal is even. So you have the same component on the positive frequency and the negative frequency. So whether you put plus 77 or minus 77, you always end up having one of the information components into the baseband. And so for this once, we can do whatever we want plus or minus sign and you end up having a nice signal. So you do this. And the first time you do this, you get once every second the amplitude drop and this is your phase from the recording. And you try playing with this delta that you cannot reach here. So originally, I'm slightly off frequency with an offset of zero hertz. I try to move it closer. So let's say one hertz. We're removing this phase offset. We're getting better. Whoops, I went too far. And at the end, you can compensate for the phase offset due to the difference between local oscillator of the sound card and DCF 77. So 15 ppm is not too bad. It's much better than most DVBT receivers. So now I can get my phase information and again, same story. I have my one pps, one pulse per second from GPS. I have my amplitude signals. Somehow I don't know why, but if I do have two sources, I get out of sync sometimes in the graphical display. I don't know why. And the green is the phase. So I don't want, I'm going to show you, I've been running this since October. So I don't want to tune manually the frequency offsets every time. So what I did here is a very ugly. What I'm doing here is I'm recording using new radio and then I process in MATLAB. I have easier fault in Inokta rather than working directly in C++. So I find it easier to record the data and then process them. So what I'm doing here is I'm recording the raw data. I'm having a local oscillator 77.5 kilohertz and I'm shifting by a discrete time, my DCF 77 signal, and I low pass filter, then I decimate. So basically here, I reproduce the translating fear filter. That's easy enough. And then what I do is I make a coarse frequency offset measurement by taking the magnitude of a free transform. And I say, okay, my free transform is going to tell me by how much, it's a very rough estimate, but by how much my local oscillator is offset with respect to DCF 77. And I remove, I create a local oscillator, which is exponential of J2 pi, the frequency offset times the discrete time, and I remove this offset. And then once I've removed this coarse frequency offset, I make a linear fit of the phase, the resulting phase. And once again, I remove the average value of this linear fit of a phase, which is an accurate or precise frequency difference estimate. And if I do this, I have my offset corrected phase information. If I cross correlate the signal, I get my beautiful cross correlation peaks once every second. So I can do the same thing we did with a locking amplifier, with a sound card, and all this will be referenced to the one PPS of GPS by recording on a stereo sound card on one channel. I record DCF 77 on the second channel. I record GPS. And I can measure here the difference between GPS and one PPS. At some point, you sometimes have a slight offset of the phase. Sometimes you lose some of these cross correlation peaks and your timing will go away. But if you run a median filter on this thing, you will find the median value and it will give you a pretty good idea of what the phase, so the time stamp is, so the time delay is. And this is an example of a three-day measurement where I have on top the locking amplifiers of a high-quality, high-grade locking amplifier. And on the bottom, this is the output of my sound card. So you see that the results are pretty consistent. You have here daytime, nighttime, so indeed I can measure some sort of fluctuation of the atmosphere during nighttime with respect to daytime. And what you cannot see here below the text is the resolution, the timing resolution is about nine microseconds. If you remember, I was claiming that the daytime to nighttime variation is about 100 microseconds. So we have 10 times better time resolution by using this cross-collation technique. So this is what I want to say here. This was done in September. This was my very first measurement in September. I had to leave for a three-week trip in the end of September, October. And unfortunately for you, I will not be able to show you any better result than this because since October it's been winter, in winter, ionosphere is not stable and I have to wait for a spring to come back to have, again, these measurements. I was hoping that yesterday maybe the sun might be helpful, but no, not yet. We have to wait a few more weeks before the ionosphere shows again this high stability during daytime. Now, one of the thing here is that not everyone has access to 192 kilohertz sound cards. So of course we all seen that we have these DVBT receivers and these DVBT receivers. They also allow me to sample at two mega-sample per second. So with two mega-sample per second, I can timestamp the GPS one PPS with a much better accuracy because now I have 500 nanosecond resolution. However, I'm losing in quantification resolution because I'm going from a 16-bit sound card to an 8-bit A2D converter. So will the 8-bit A2D converter from the RTL2832U be enough to get my signal out of, so my ground wave out of my air wave out of my ground wave. And we've seen that the antenna is a high-quality factor bandpass filter. So will I be able to get rid of the jammer here? So we did this and actually I'm putting this as a provocation for the Osmo SDR people in the room because I couldn't get the direct sampling function to work with the new radio block. And so what I did is this very ugly hack, I'm sorry, but at least it works, is I just put in the Libertial SDR, the fact that I'm using an E4000. E4000 is a tuner that is not using an intermediate frequency. So by setting your RTL-SDR with such a setting, you just tell it, record whatever sample you have and don't put any frequency offset. And somehow this works. So either is a better way to do it. I would like, I think this is very powerful way of using this RTL2832U and it would be nice to have you make sure that they work or at least find some way of getting people using them. And so once you get this working, you have one input, which is DCF77, the QR input, which is the GPS signal. And again, we do the same thing. I record for one minute, once every minute, I record for duration of one minute, my sample of GPS DCF77. I process my data and I will save them by doing the same processing. I will not get into the details, but it's exactly the same story, except that you need to do, well, by processing a two megahertz signal with a very narrow band, you are targeting a 700 kilohertz bandwidth, you realize why you need to do multiple fear filter with decimation. And again, we go back to this whole DSP thing. You can take all the courses on DSP that you want. If you haven't realized that if you do directly two megahertz to 700 hertz, you have like 10,000 coefficients and that's not going to run efficiently, then you haven't understood what DSP means. And so by doing this with practical signals, you really realize why you have to cascade fear filters with decimation steps in between. And so you do this again with your RTLSDR and at some point you should have a chart displayed, but there's a lot of points on the next chart. So recording the data, you extract phase and magnitude. Again, I have my once every second amplitude information, my phase information, my GPS timestamp, the phase which doesn't look very good, but at least cross correlation peaks come once every second here because I have a bit of leftover phase drift. I lose my cross correlation and I get here my cross correlation peaks. So again, I can do my timing experiment and I will be able to get a precise timing, timestamping by using DVBT. So even some of you who do not have 192 kilohertz sampling audio sound card, you can reproduce this with 10 euro worth of equipment with an RTLSDR dongle. And again, by doing this, we have a collection of timing. So this is a conclusion of, this has been running since November. This is 6th of November, this was done yesterday. So what you see here, here I changed my algorithm. So this is just a slight change in my algorithm. So what you see here is that phase, of course, we're referring GPS to a clock, which is used for defining UTC. So this, even though GPS is not officially linked to UTC to universal time, well, we have good reasons to think that GPS will be synchronized with UTC. So what you see here is over three months, you do not see any observable drift, which is well known from the meteorology community. And every one of these dips here is another day. So day, night, day, night, one of these like this. And if I plot an island deviation, for those of you who are more into the time frequency, so this is basically the stability of my timing capability as a function of integration time. So this is going from one minute up to, well, three months. You see that you are at 10 to a minus seven, down to 10 to a minus 11, which is about 1,000 times worse than what has been published by PTB. But I think I've spent much less than 1,000 times, less than what they did in their experiment. And just to give you some hints, the red curve here is a tuning fork. This is basically the stability of your watch. I took a tuning fork from a watch and I measured the stability. So what this chart tells you is that a tuning fork is very stable on the short term, but on the long term, it's going to drift if only due to time, the temperature variation when I wear or I do not wear my watch. So over time, the tuning fork is going to drift, whereas these two clocks that we're using here, the thecesium locked clock generated by DCF, is going to always demonstrate better stability as the longer you integrate. And at some point you have this intersection course which tells you that below this, your quartz watch will be better than DCF 77. And above some time you should look at DCF 77. This is basically what cesium atomic clocks are doing. You have high stability from the quartz oscillator on the short term and you lock your quartz oscillator on the atomic transition. So basically what you can do with this sound card is get acquainted to what people are doing when they try to design atomic clocks. So having various time sources and these time sources will give the best stability over various integration durations. So basically what we showed here is that we have the ability to receive DCF 77 signal using an active antenna. We have been able to extract amplitude and phase information using electric amplifier. We've been able to reproduce these experiments with SDR either with an audio sound card or with a DVBT dongle and we have consistent results. I'm eagerly waiting for a spring to get again a beautiful stable signal. I tried to correlate fluctuations in the DCF 77 signal with X-ray density measured by geosynchronous satellites from NOAA and there is no obvious correlation. I believe that 77.5 kilohertz is a bit too high and we're probing layers of atmosphere that are too deep to detect what people are usually measuring with ionosomes which are lower frequency devices, 10, 15 kilohertz where you really see the effect of X-ray density variation on the ionic content of ionosphere. I do have a few questions though if anyone wants to pursue this thing. We're supposed to be told that you have two waves propagating on VLF, a ground wave and an ionospheric wave. That was the initial insight that low run C allows you to distinguish these two waves. And if as published by PTB, the ground wave is much stronger than the ionospheric wave, how come that my unique signal that I'm measuring is varying from day to night? This is a question for me. And I wonder whether you have to use a waveguide model where you have varying boundary conditions or whether you have truly two waves propagating. At the moment I did everything on a PC, whether it's worth spending time putting all of this in a microcontroller is questionable but it's kind of fun and it's not too difficult to do. So the next thing I would like to look at is basically looking at the moment I've just been looking at the position of a cross correlation peak but I have not investigated the shape of a cross correlation peak and what I would expect is that if the air wave is slightly shifted with respect to the ground wave, what you should see is a broadening of a cross correlation peak because you have two waves slightly time shifted. You should remember that the phase bit is 1.5 millisecond apart, it's 700 hertz. These are 100 microsecond time delay so you will not be able to see the two cross correlation peak separate but you should be able to see some sort of cross correlation peak broadening as a function of this air wave and ground wave separation. So this is still open to question. So basically what I wanted to show you is that you can get involved into this electrical phenomena and atmosphere involved in this topic while investigating software-defined radio. Just I've put this, of course, the slide on my website and on the FOSDEM website. There has been a very extensive literature on this topic but I haven't seen anyone trying to tackle the issue of can anyone reproduce these experiments. Usually these are very fancy experiments with rather fancy equipment and I believe that this is a topic that would be worth investigating by more people, especially because very low frequency communication has lost some of its appeal since everyone is looking at high bandwidth transmissions and nevertheless, low frequency is a very amusing topic. So with this, I thank you for staying all the way to the end of the talk and if there is any question, I would be happy to answer. Thank you. Thank you for the questions. Just on your way out, look around you, pick up all the trash, glass goes in bins in the hallways and trash goes here, hopefully it's not overflowed. Thank you very much. The design of your idea wasn't commercial but was it self built in your dongle? The dongle is, actually I heard 20 euro, I buy mine for eight euros actually. This is just one of these eight euro dongle and you just have to unsolder the two capacitance and put an SMA connector instead. Got some design somewhere that you plan on sharing it somewhere? What I, it's like the previous presenter, I believe that in academia we are not careful enough to make something that other people can use. I would be very happy to put on the website all my Octave script. It might be that you have to send me an email so I can tell you how it works because they're definitely not plug and play but I would be very happy to send them to you. Your academics need to get that out of you and just put the code up or get it out. We'll do so. Yeah. Hi, I'm surprised that you can't receive BCF for the sound part because although you meet live with Pateria, there should be input filter stuff and even the Pateria processor in your sound card doesn't allow you to send a send-off into your home user. I have a 192 kilohertz sound card. I'm well below half the sampling frequency. Why wouldn't my sound card allow me to record this? Because input filter. Well, the fact is that it doesn't, luckily enough it doesn't. I've had the opposite experience. Okay, well, I tried it on, the lab is fitted with Dell laptops. I tried it on two Dell laptops, it works and on Panasonic laptops, it works. Any other question? Yeah. So you cross-correlate your receive signals with the PR, with the program? To the random number, yeah. So, what about, I mean, and then you do a frequency correction to amount for the LO offset. So, wouldn't you just use the autocorrelation to receive signal the cost? The first time I did this, before I was even sure that my pseudo-random number generator was correct, the first thing I did was I autocorrelated to see if I could get my piece once every second. The question about using directly the, because then once I got my autocorrelation, I wanted the cross-correlation to work. Like with GPS, you can only get the cross-correlation if you correct for a phase. And then I forgot returning back to the autocorrelation. I wonder whether, what you can grab out of the autocorrelation, it could be. But at some point, I want to compare this autocorrelation with a GPS tag. And then I need to have my copy, my local copy that I will phase align with my GPS. So, at some point, by taking external, I think the autocorrelation will tell me whether I got the right signal and whether I get a peak at once every second. But if I want to synchronize with an external source with either one PPS, then I need to run a local copy of my oscillator or my pseudo-random number generator and phase synchronize this as we do in GPS. But the autocorrelation is beautiful. Actually, this is completely off topic, but I've been spending the last three weeks working on RDS because Bastion tells us that RDS is so easy. It took me three weeks to get it. And the first thing I got with the stupid RDS is indeed the autocorrelation. And once I got the autocorrelation, I needed another three weeks to figure out how to get the bits out, how to get the correlation things. Autocorrelation is really something that should be the first thing tested whenever we want to check whether the signal integrity is correct. So autocorrelation is a very powerful tool indeed. That's it. Thank you. Thank you.