TrueRNG Install Guide

The TrueRNG USB Hardware Random Number Generator can be used for a variety of application where unpredictable random numbers are required. Game developers may want to use it to enhance game play. For example they could seed their Game Maps, Artificial Intelligence (AI) Algorithms, or randomize the level of difficulty of opponents.  Data Scientist or Data Analytics might use TrueRNG for commercial process modeling simulations or to simply characterize the randomness of the random numbers themselves. Finally, Network Security (NetSec) and IT professionals use TrueRNG in Linux servers all over the world. In this case TrueRNG is used to keep the kernels entropy pool replenished to ensure fast and secure cryptography operations such as those that would be used for key generation, SSH, SSL, GPG and more.

The point I’m getting at here is that TrueRNG can be used on multiple platforms for multiple purposes and applications. However, the hardware is very simple to understand. The communication interface is a simple USB serial port device. You can open up the port using just about any decent terminal application, turn on DTR (Data Transmit Read), and read out bytes.


Windows Installaltion

  1. Download the Windows Driver (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 (zip)
    wget http://ubld.it/wp-content/uploads/2014/02/TrueRNG-Linux-udev-rules.tar.gz
  2. Extract and place udev rules in udev/rules.d folder (this is /etc/udev/rules.d/ under ubuntu)
    tar -zxvf TrueRNG-Linux-udev-rules.tar.gz -C /etc/udev/rules.d/
  3. Plug in TrueRNG USB Hardware RNG
  4. 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 1.1.2.5 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.
    #HRNGDEVICE=/dev/hwrng
    #HRNGDEVICE=/dev/null
    HRNGDEVICE=/dev/TrueRNG
    
    # 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.
    top
    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