Peering Into a Running Brain: SDRAM Refresh Analyzed from Userspace

Over on the Cloudflare blog, [Marek] found himself wondering about computer memory, as we all sometimes do. Specifically, he pondered if he could detect the refresh of his SDRAM from within a running program. We’re probably not ruining the surprise by telling you that the answer is yes — with a little more than 100 lines of C and help from our old friend the Fast Fourier Transform (FFT), [Marek] was able to detect SDRAM refresh cycles every 7818.6 ns, lining right up with the expected result.

The “D” in SDRAM stands for dynamic, meaning that unless periodically refreshed by reading and writing, data in the memory will decay. In this kind of memory, each bit is stored as a charge on a tiny capacitor. Given enough time (which varies with ambient temperature), this charge can leak away to neighboring silicon, turning all the 1s to 0s, and destroying the data. To combat this process, the memory controller periodically issues a refresh command which reads the data before it decays, then writes the data back to fully charge the capacitors again. Done often enough, this will preserve the memory contents indefinitely. SDRAM is relatively inexpensive and available in large capacity compared to the alternatives, but the drawback is that the CPU can’t access the portion of memory being refreshed, so execution gets delayed a little whenever a memory access and refresh cycle collide.

Chasing the Correct Hiccup

[Marek] figured that he could detect this “hiccup,” as he calls it, by running some memory accesses and recording the current time in a tight loop. Of course, the cache on modern CPUs would mean that for a small amount of data, the SDRAM would never be accessed, so he flushes the cache each time. The source code, which is available on GitHub, outputs the time taken by each iteration of the inner loop. In his case, the loop typically takes around 140 ns.

Hurray! The first frequency spike is indeed what we were looking for, and indeed does correlate with the refresh times.

The other spikes at 256kHz, 384kHz, 512kHz and so on, are multiplies of our base frequency of 128kHz called harmonics. These are a side effect of performing FFT on something like a square wave and totally expected.

As [Marek] notes, the raw data doesn’t reveal too much. After all, there are a lot of things that can cause little delays in a modern multitasking operating system, resulting in very noisy data. Even thresholding and resampling the data doesn’t bring refresh hiccups to the fore. To detect the SDRAM refresh cycles, he turned to the FFT, an efficient algorithm for computing the discrete Fourier transform, which excels at revealing periodicity. A few lines of python produced the desired result: a plot of the frequency spectrum of the lengthened loop iterations. Zooming in, he found the first frequency spike at 127.9 kHz, corresponding to the SDRAMs refresh period of 7.81 us, along with a number of other spikes representing harmonics of this fundamental frequency. To facilitate others’ experiments, [Marek] has created a command line version of the tool you can run on your own machine.

If this technique seems familiar, it may be because it’s similar the the Rowhammer attack we covered back in 2015, which can actually change data in SDRAM on vulnerable machines by rapidly accessing adjacent rows. As [Marek] points out, the fact that you can make these kinds of measurements from a userspace program can have profound security implications, as we saw with the meltdown and spectre attacks. We have to wonder what other vulnerabilities are lying inside our machines waiting to be discovered.

Thanks to [anfractuosity] for the tip!

SDR Is At the Heart of This Soup-Can Doppler Radar Set

Want to explore the world of radar but feel daunted by the mysteries of radio frequency electronics? Be daunted no more and abstract the RF complexities away with this tutorial on software-defined radar.

Taking inspiration from our own [Gregory L. Charvat], whose many radar projects have graced our pages before, [Luigi Freitas]’ plunge into radar is spare on the budgetary side but rich in learning opportunities. The front end of the radar set is almost entirely contained in a LimeSDR Mini, a software-defined radio that can both transmit and receive. The only additional components are a pair of soup can antennas and a cheap LNA for the receive side. The rest of the system runs on GNU Radio Companion running on a Raspberry Pi; the whole thing is powered by a USB battery pack and lives in a plastic tote. [Luigi] has the radar set up for the 2.4-GHz ISM band, and the video below shows it being calibrated with vehicles passing by at known speeds.

True, the LimeSDR isn’t exactly cheap, but it does a lot for the price and lowers a major barrier to getting into the radar field. And [Luigi] did a great job of documenting his work and making his code available, which will help too. Continue reading “SDR Is At the Heart of This Soup-Can Doppler Radar Set”

Big Mouth Billy Bass Channels Miley Cyrus

Here’s a Big Mouth Billy Bass with extra lip thanks to Alexa. If you’re not already familiar, Big Mouth Billy Bass is the shockingly popular singing animatronic fish designed to look like a trophy fish mounted to hang on your wall. In its stock condition, Billy uses a motion sensor to break into song whenever someone walks by. It’s limited to a few songs, unless you like to hack things — in which case it’s a bunch of usable parts wrapped in a humorous fish! Hackaday’s own [Bob Baddeley] combined the fish with an Amazon Echo Dot, connecting the two with an ATtiny84, and having Billy speak for Alexa.

[Bob] had a few problems to solve, including making Billy’s mouth move when there was audio playing, detecting when the Echo was on, moving the motors and playing the audio. After a bit of research and a lot of tweaking, a Fast Fourier Transform algorithm designed for the ATtiny was used was used to get the mouth moving. The mouth didn’t move a lot because of the design of the fish, and [Bob] modified it a bit, but there was only so much he could do.

It’s all well and good for the fish to lie there and sing, but [Bob] wanted Billy to move when Alexa was listening, and in order the detect this, the best bet was to watch for the Dot’s light to turn on. He tried a couple of things but decided that the simplest method was probably the best and ended up just taping a photo-resistor over the LED. Now Billy turns to look at you when you ask Alexa a question.

With a few modifications to the Dot’s enclosure, everything now fits inside the original mounting plaque and, after some holes were drilled so the Dot could hear, working. Billy has gone from just a few songs to an enormous entire library of songs to sing!

We’ve seen Alexa combined with Big Mouth Billy Bass before, but just demos and never an excellent guide like [Bob’s].  The nice thing about this guide is that once you’ve hacked the hardware, it’s a breeze to add new functionality using Alexa skills.

Continue reading “Big Mouth Billy Bass Channels Miley Cyrus”

The Tachometer Inside Your Smartphone

It’s the latest in instrumentation for the well-appointed shop — an acoustically coupled fast Fourier transform tachometer. Sounds expensive, but it’s really just using a smartphone spectrum analyzer app to indirectly measure tool speeds. And it looks like it could be incredibly handy.

Normally, non-contact tachometers are optically coupled, using photoreceptors to measure light flashing off of a shaft or a tool. But that requires a clear view of the machine, often putting hands far too close to the danger zone. [Matthias Wandel]’s method doesn’t require line of sight because it relies on a cheap spectrum analyzer app to listen to a machine’s sound. The software displays peaks at various frequencies, and with a little analysis and some simple math, the shaft speed of the machine can be determined. [Matthias] explains how to exclude harmonics, where to find power line hum, isolating commutator artifacts, and how to do all the calculations. You’ll need to know a little about your tooling to get the right RPM, and obviously you’ll be limited by the audio frequency response of your phone or tablet. But we think this is a great tip.

[Matthias] is no stranger to shop innovations and putting technology to work in simple but elegant ways. We wonder if spectrum analysis could be used to find harmonics and help with his vibration damping solution for a contractor table saw.

Continue reading “The Tachometer Inside Your Smartphone”

Making a Cheap Radar Unit Awesome

[JBeale] squeezed every last drop of performance from a $5 Doppler radar module, and the secrets of that success are half hardware, half firmware, and all hack.

On the hardware side, the first prototype radar horn was made out of cardboard with aluminum foil taped around it. With the concept proven, [JBeale] made a second horn out of thin copper-clad sheets, but reports that the performance is just about the same. The other hardware hack was simply to tack a wire on the radar module’s analog output and add a simple op-amp gain stage, which extended the sensing range well beyond the ten feet or so that these things are usually used for.

With all that signal coming in, [JBeale] separates out the noise by taking an FFT of the Doppler frequency-shift signal. Figuring that people walk around 2.2 miles per hour, [JBeale] focuses on the corresponding 70 Hz frequency bin and finds that the radar will detect people out to 80 feet. Wow!

This trick of taking an el-cheapo radar unit and amplifying the signal to do something useful isn’t new to Hackaday. [Mathieu] did it with the very same HB-100 unit way back in 2013, and then again with a more modern CDM324 model. But [JBeale]’s hacked horn and clever backend processing push out the limits of what you can expect to do with these cheap units. Kudos.

[via PJRC]

Listen To Your Fermentation To Monitor Its Progress

If you are a wine, beer, or cider maker, you’ll know the ritual of checking for fermentation. As the yeast does its work of turning sugar into alcohol, carbon dioxide bubbles froth on the surface of your developing brew, and if your fermentation container has an airlock, large bubbles pass through the water within it on a regular basis. Your ears become attuned to the regular “Plop… plop… plop” sound they make, and from their interval you can tell what stage you have reached.

[Chris] automated this listening for fermentation bubbles, placing a microphone next to his airlock and detecting amplitude spikes through two techniques: one using an FFT algorithm and the other a bandpass filter. Both techniques yielded similar graphs for fermentation activity over time.

He has a few ideas for improvement, but notes that his system is vulnerable to external noises. There is also an admission that using light to detect bubbles might be a more practical solution as we have shown you more than once with other projects, but as with so many projects on these pages, it is the joy of the tech as much as the practicality that matters.

Voice at 700 Bits Per Second

All other things being equal, signals with wider bandwidth can carry more information. Sometimes that information is data, but sometimes it is frequency. AM radio stations (traditionally) used about 30 kHz of bandwidth, while FM stations consume nearly 200 kHz. Analog video signals used to take up even more space. However, your brain is a great signal processor. To understand speech, you don’t need very high fidelity reproduction.

Radio operators have made use of that fact for years. Traditional shortwave broadcasts eat up about 10kHz of bandwidth, but by stripping off the carrier and one sideband, you can squeeze the voice into about 3 kHz and it still is intelligible. Typical voice codecs (that is, something that converts speech to digital data and back) use anywhere from about 6 kbps to 64 kbps.

[David Rowe] wants to change that. He’s working on a codec for ham radio use that can compress voice to 700 bits per second. He is trying to keep the sound quality similar to his existing 1,300 bit per second codec and you can hear sound samples from both in his post. You’ll notice the voices sound almost like old-fashioned speech synthesis, but it is intelligible.

Continue reading “Voice at 700 Bits Per Second”