TrueRNG V3 and TrueRNGpro Install Guide

The TrueRNG Hardware Random Number Generator (HWRNG) connects via USB as a Virtual Com Port. works with Windows and Linux operating systems on multiple platforms such as x86, x64, and ARM (RPI3, RPI4, Odroid, etc.). TrueRNG is also known to work with MAC OSX as well with limited testing.

Be sure to check out the Frequently Asked Questions forum page and don’t hesitate to contact us if you run into problems.

This guide covers installation for Windows and Linux. With drivers installed TrueRNG is enumerated as a CDC serial device in Windows and shows up as a COM port. You can access the data stream with a simple terminal application such as RealTerm but you may find that RealTerm struggles to keep up with the data. The intended use in Windows is for you to write your own code in your favorite language such as Python and C++.

In Linux, TrueRNG uses the USB CDC driver (automatically works in most modern linux systems) and shows up as a character device in /dev (i.e. /dev/ttyACM0 or similar).  Using the udev provided rules the device is mounted as /dev/TrueRNG. Just as with Windows you can write your own programs to read directly from TrueRNG or you can install rng-tools as described below to feed the kernels entropy pool.. Then you can use /dev/random for your custom application.

Windows Installation

  1. Download the Windows Driver (TrueRNG V3 ZIP) or Windows Driver (TrueRNGpro Zip)
  2. Unzip the driver files into a directory
  3. Right-click the TrueRNG.inf file and select Install
  4. Plug in TrueRNG and it should show up as a Standard COM port

Ubuntu Linux Installation

  1. Download the udev rules (from github)
  2. Place udev rules in udev/rules.d folder (this is /etc/udev/rules.d/ under ubuntu)
    cp 99-TrueRNG.rules /etc/udev/rules.d/
  3. Reload udev
    udevadm control --reload-rules
  4. Plug in TrueRNG USB Hardware RNG
  5. Verify /dev/TrueRNG device appears by typing
     ls -l /dev/TrueRNG

Installing rng-tools on Ubuntu (optional)

  1. Install rng-tools using apt-get (ubuntu) or yum (redhat)
    sudo apt-get install rng-tools
  2. Modify /etc/default/rng-tools (ubuntu) or /etc/whatever (RedHat) and make sure the HWRNGDEVICE points to /dev/hwrng (eg. HRNGDEVICE=/dev/TrueRNG)
    nano /etc/default/rng-tools
    # Configuration for the rng-tools initscript
    # $Id: rng-tools.default,v 2008-06-10 19:51:37 hmh Exp $
    # This is a POSIX shell fragment
    # Set to the input source for random data, leave undefined
    # for the initscript to attempt auto-detection. Set to /dev/null
    # for the viapadlock and tpm drivers.
    # Additional options to send to rngd. See the rngd(8) manpage for
    # more information. Do not specify -r/--rng-device here, use
    # HRNGDEVICE for that instead.
    #RNGDOPTIONS="--hrng=intelfwh --fill-watermark=90% --feed-interval=1"
    #RNGDOPTIONS="--hrng=viakernel --fill-watermark=90% --feed-interval=1"
    #RNGDOPTIONS="--hrng=viapadlock --fill-watermark=90% --feed-interval=1"
    #RNGDOPTIONS="--hrng=tpm --fill-watermark=90% --feed-interval=1"
  3. Make sure rng-tools will autostart
    sudo update-rc.d rng-tools enable
  4. Verify rng-tools service is running using top and cat your syslog for rng-tools debug info.
    cat /var/log/syslog

Installing Dieharder on Ubuntu (optional)

  1. Install Dieharder using apt-get (ubuntu) or yum (redhat)
    sudo apt-get install dieharder

Installing ent on Ubuntu (optional)

  1. Install ent using apt-get (ubuntu) or yum (redhat)
    sudo apt-get install ent