We advertise 100 kHz as the lower edge of HackRF Pro’s operating frequency range, but that isn’t a hard limit. While working on the design, I realized that it should work fairly well to pick up longwave time signals such as WWVB, broadcast at 60 kHz from Colorado, USA.

WWVB provides a stable frequency reference and time code. If you have a radio-controlled clock in North America, it probably uses the signal from WWVB to maintain the correct time. WWVB can also be used to discipline a laboratory frequency standard, eliminating the need for a local atomic clock in many cases.
Why use WWVB?
Nearly every electronic device contains some sort of oscillator or clock. HackRF Pro, for example, contains a temperature-compensated crystal oscillator (TCXO) which is better than the crystal oscillator (XO) used in HackRF One. Having a better internal clock means that radio frequencies received or transmitted by the device are more accurate. If I receive a radio signal at 1 GHz with HackRF One, I can’t be sure if the signal over the air is at exactly 1 GHz. The received frequency as detected by HackRF One might be 10 or 20 kHz off. With HackRF Pro the frequency uncertainty is an order of magnitude smaller, thanks to the built-in TCXO. I would be confident that any inaccuracy at 1 GHz is no more than about 1 or 2 kHz, even without performing any calibration.
I need to use an even better clock in my lab to be certain that the oscillators in our products perform as expected. I could use a HackRF Pro to measure the frequency error of a HackRF One, but how do I know I can trust the HackRF Pro? I would need a more trustworthy frequency reference such as an atomic clock. A good alternative to an expensive atomic clock would be an oven-controlled crystal oscillator (OCXO) that has been recently calibrated or that is disciplined by a remote atomic clock.
One such remote frequency reference is WWVB which has several orders of magnitude less frequency uncertainty than the TCXO in HackRF Pro. WWVB also provides a digital time code indicating the time of day.
Why not a GPSDO?
Folks like me who need a lab frequency standard typically turn to a GPS disciplined oscillator (GPSDO). I could purchase an off-the-shelf GPSDO that disciplines an internal OCXO with a signal received from GPS (or other GNSS) satellites. Such a device would cost a few hundred dollars, much less than the thousands of dollars required to buy a small atomic clock.
Before GPSDOs became available, some test equipment manufacturers sold WWVB disciplined oscillators, but these products are no longer made. They had already become unpopular before the broadcast format of WWVB was changed in 2012 with the introduction of phase modulation that broke compatibility with commercial oscillators. There is no reason that a new WWVB disciplined oscillator could not be made. In fact, many hobbyists have made their own or have modified older oscillators to make them compatible with the new phase modulation.
I like the idea of having my own WWVB disciplined oscillator, partly because a GPS receiver needs an active antenna placed somewhere with a view of the sky whereas a WWVB receiver can be located indoors. I like that a WWVB receiver can have a relatively simple design and does not need to constantly track multiple moving satellites. I like that WWVB is stable and will not be adversely affected by Kessler syndrome.
I like that a WWVB receiver implementation with HackRF Pro can be used to directly measure the frequency error of the HackRF Pro itself by simply measuring how far off from 60 kHz WWVB appears to be. I don’t even need to build a whole WWVB disciplined oscillator to do this. (In theory I could do the same thing with GPS, but it would require significantly more complex software.)
Most of all, I think that receiving WWVB is a fun project!
An active antenna for 60 kHz
Radio antennas are generally sized in proportion to wavelength, and the wavelength at 60 kHz is very long, about 5000 m. A vertically polarized quarter-wave monopole antenna for 60 kHz would be the tallest structure in the world! To avoid such an impractical construction, the WWVB transmit antenna has a more complex design. Although small compared to the wavelength, the broadcast antenna is comprised of hundreds of meters of cable and multiple towers.
WWVB receivers use small loop antennas which detect changes in the magnetic field. Several amateur radio operators have constructed air core loop antennas for WWVB with diameters of one to two meters while radio-controlled clocks use much smaller ferrite core (“loopstick”) antennas. I thought it would be fun to build a small active loopstick antenna that is compatible with HackRF Pro.
For my initial experiment, I pieced together a few RF amplifier and filter test PCBs and connected them to a loopstick antenna pulled from an AM radio kit. I used a VNA to tune the antenna for 60 kHz with a parallel capacitor. With two amplifier ICs (which I had previously tested for the URTI project) and a low-pass filter, I was barely able to detect a faint signal at 60 kHz one afternoon using a HackRF Pro. Later that evening the signal was stronger and easily identifiable as WWVB. I live in Ontario, Canada, over a thousand miles away from WWVB, and I think it’s pretty nifty that I could pick up the signal from such a long distance on my first attempt!

Based on this success, I designed Teewee, an active loopstick antenna named for (the popular name of) the similarly shaped Tetris block. Teewee consists of a small PCB that performs amplification and filtering, a hand-wound ferrite core, and a 3D-printed enclosure. While my initial experiment required an external power supply, Teewee is powered by HackRF Pro’s built-in bias tee.

Inspired by an older design, I used an instrumentation amplifier for Teewee’s first stage. The purpose of this is to isolate the magnetic field (which is seen by the amplifier as a differential signal) from the electric field (which is seen as a common-mode signal). Instrumentation amplifiers have high common-mode rejection, eliminating much of the electric field noise that likely originates locally.

My first test with Teewee was disappointing. I detected WWVB not at all, instead picking up pulses of broadband noise. After a frustrating couple of days, I decided to reproduce my original setup and found that it had the same poor result! The reason was that I had recently rearranged my lab and had placed my PC tower on my desktop, close to the antenna test area. While Teewee is designed to reject electric field interference, it is highly sensitive to magnetic interference, something my PC evidently produces quite a bit of. Fortunately, I was able to eliminate this near-field interference by moving the antenna just half a meter farther away from the PC.
After solving the near-field problem, I found that Teewee actually performed quite well. While my original setup was useful only during periods of favorable ionospheric propagation at night, I was able to pick up WWVB at any time of day with Teewee.
Observing the WWVB signal
A distinguishing characteristic of WWVB is that the very precise carrier frequency of 60 kHz turns off and back on once per second with varying pulse duration. With most receivers it looks like on-off keying (OOK), but it is actually amplitude-shift keying (ASK) where the “off” periods are 17 dB lower power than the “on” periods. At times when propagation is good, I can barely detect the signal during the “off” periods with Teewee.

Pulse width modulation (PWM) carries time of day and other status information in 60-second data frames. The falling edge of each pulse occurs at the start of each second. Once every ten seconds there is an extra-long “off” period. This pattern makes it easy to identify the signal when there is sufficient signal-to-noise ratio to observe the modulation.
Since 2012 the phase of each pulse carries a second data stream. The last time I experimented with WWVB was prior to 2012, so I hadn’t observed the phase modulation before. The phase modulation is binary phase-shift keying (BPSK) at one bit per second with the phase transition happening 0.1 seconds into the “off” period. Using a derived phase plot in inspectrum I was able to see the phase abruptly change from one pulse to the next.
In theory, the BPSK modulation makes it possible to implement a receiver capable of detecting a weaker signal than can be achieved with an ASK receiver, particularly once per hour when the BPSK stream carries an extended symbol sequence that lasts 6 minutes and includes a fixed 106-bit synchronization word. I think it would be interesting to try detecting this “medium mode” from farther away, maybe even on another continent.
When using WWVB as a frequency reference, the digital modulation can be ignored except that the detector (software, in my case) must be designed to tolerate BPSK.
Measuring Doppler shift with WWVB
Shortly after getting Teewee working, I traveled to British Columbia, so I decided to try picking up WWVB on my flight across Canada, hoping that I would be able to see the Doppler shift from the motion of the aircraft relative to the transmitter. I found that I was unable to detect the signal with the antenna at my seat in the aircraft but that I could pick it up by placing Teewee in a window, connected to a HackRF Pro by an SMA cable. I captured the signal from WWVB for a full hour while the aircraft headed west, starting from a point roughly north of the transmitter.

I analyzed the hour-long capture and found that the Doppler shift was, in fact, evident when plotting the received WWVB frequency over time. About halfway through the capture, the aircraft changed course, and this caused an abrupt change of frequency that clearly confirmed that I really was seeing the Doppler effect.

As further confirmation, I later downloaded ADSB flight data and used it to plot the expected Doppler shift. This correlated quite well with the WWVB observations. Apart from some blips due to interference, the primary discrepancy between the expected and observed Doppler shift was an offset of 15 mHz due to the HackRF Pro TCXO being 250 ppb slow. (This TCXO was better than average. I typically see frequency error of approximately 1 ppm.)

I had hoped to acquire an even longer capture on the return flight to Ontario, but there was too much interference, perhaps from avionics or from a jet engine. This was on a smaller aircraft, and I was seated at the front edge of the wing, adjacent to an engine.
Try it yourself
I’ve published the Teewee design for anyone who would like to build their own. Teewee is intended for use with HackRF Pro, but I’ve also had some limited success with HackRF One even though it has significantly worse 60 kHz performance than HackRF Pro.

