The MicroRNG is a hardware true random number generator module for embedded systems. It connects to microcontrollers, microprocessors, and single-board computers through a mikroBUS socket using an SPI or 2-wire UART interface, and needs no host operating system. The MicroRNG is designed to comply with NIST SP 800-90B, “Recommendation for the Entropy Sources Used for Random Bit Generation”, and generates random numbers at up to 1 Mbps in SPI mode and up to 1.5 Mbps in UART mode.

Getting started

Quick start guides are available for the most common host platforms:

How it works

The MicroRNG operates in either SPI or 2-wire UART mode, selected with the JP Mode switch on the board. When the device is powered on or restarted, the JP Mode switch setting determines which interface is used.

Typical connection in SPI mode:
Connecting the MicroRNG in SPI mode

Typical connection in 2-wire UART mode:
Connecting the MicroRNG in 2-wire UART mode

The MicroRNG generates random numbers from the electrical noise produced by the avalanche breakdown effect in Zener diodes, using two independent noise sources. The noise from each source is separately amplified, filtered, and converted into digital values. The random bytes from both sources are combined and processed on the device with a Linear Corrector using a 0.5 compression rate, a technique proposed by P. Lacharme (“Post-Processing Functions for a Biased Physical Random Number Generator”, FSE 2008, LNCS vol. 5086, pp. 334-342, Springer-Verlag, 2008). Alternatively, in 2-wire UART mode, the raw random bytes can be processed on the device with one of the following hashing methods: SHA1, SHA2, SHA512, or HMAC160.

As soon as the MicroRNG is powered on or the RST signal is asserted, it runs start-up health tests and becomes ready in less than 700 milliseconds. If the start-up health tests detect an error, the LED Status indicator blinks several times and the Status byte is updated with an error code.

Quality checking

The MicroRNG embeds diagnostics and monitoring features that validate its internal noise sources and components in real time. It maintains an internal status, referred to as the Status byte in the technical specification, which can be retrieved through the device API to check the health of the generator. The Repetition Count and Adaptive Proportion tests (NIST SP 800-90B) are also implemented.

Tech specs

Data sheet

True random byte download speed 1 Mbps in SPI mode, up to 1.5 Mbps in UART mode
Power supply 3.3 V
Maximum input high-level voltage 3.3 V
Power consumption Maximum 340 mW in normal operation and 125 mW in sleep mode
Weight 5 grams (0.1 oz)
Data connectivity and control interface SPI or 2-wire UART through a mikroBUS socket
Random noise source Two independent circuits based on the avalanche breakdown effect in reverse-biased Zener diodes
Post-processing algorithms available Linear Corrector (P. Lacharme), SHA1, SHA2, SHA512, and HMAC160
Embedded health check test (HCT) Frequency table inspection at device start-up
Implemented statistical tests Continuous Repetition Count and Adaptive Proportion tests
RoHS compliance All parts and materials are lead-free and RoHS compliant
Country of origin Designed and assembled in the USA

Use cases

The MicroRNG is suited to:

  • Entropy source for microcontroller and embedded projects, connected over SPI or 2-wire UART through a mikroBUS socket
  • Entropy source for a Raspberry Pi or other Linux-based single-board computer (see the quick start guides above)

Statistical tests

The MicroRNG passes the following statistical test suites: Diehard, NIST, Rngtest, Ent, and EA IID.

You can download sample test reports using the links below:

Warranty and returns

TectroLabs offers a one-year limited warranty within the United States covering defects in materials and workmanship; we will repair or replace, at our discretion, any device that fails because of such a defect.

A MicroRNG may be returned within 30 days of purchase for a full refund minus the credit card processing fee. The buyer pays for return shipping.