RTL-SDR as a Hardware Random Number Generator with rtl_entropy

Over on his blog, Aaron Toponce has posted a tutorial that shows how to use the RTL-SDR app rtl_entropy.  This app uses the RTL-SDR to create random numbers from the atmospheric noise that it receives from the antenna. Aaron writes:

The theory behind the RNG is by taking advantage of atmospheric noise, which is caused by natural occurrences, such as weak galactic radiation from the center of our Milky Way Galaxy to the stronger local and remote lightning strikes. It’s estimated that roughly 40 lightning strikes are hitting the Earth every second, which equates to about 3.5 million strikes per 24 hour period. Interestingly enough, this provides a great deal of entropy for a random number generator.

In the post Aaron also shows how to put the rtl_entropy generated data through some standardized randomness tests, how to visualize the random output and also shows how to use rtl_entropy to generate 80-bit entropy passwords.

Visualizing the random noise output of rtl_entropy.
Visualizing the random noise output of rtl_entropy.
Notify of

Inline Feedbacks
View all comments

Sounds interesting, I wonder if they have generated 2GiB of data yet and run the full batch of dieharder tests on it yet. At 2.8 Mbps it should take less than 2 hours to generate the test data, as for testing it with dieharder, that might take a while.


I see the 512MiB test, but there is maybe one last test that needs 2GiB of data, maybe that is the result with the weak result. I’d have to look it up.

Aaron Toponce

I am the author of the blog. I can do a 2 GB file, or larger, and report back if you would like.

Aaron Toponce

So, I worked on this. Unfortunately, trying to build a 2 GB file seemed to be difficult. At exactly 1819714560 bytes, the file stopped growing. I don’t know why. So, I tested the 1.8 GB file I had, and the results came up as good as you could hope for:



Thanks, just found out that one test requires 512GB of data to run – wow dieharder is one hungry beast when it comes to chewing through data and time.
See: “Data needed by default parameters (bytes)”