1 [[!meta title="ChaosKey"]]
4 This is a hardware True Random Number Generator that attaches via USB.
6 The Linux Kernel, starting with version 4.1, includes source for this
7 driver. It should be built by default in your distribution. If your
8 using Linux + KVM to host other Linux instances, read the
9 [VirtualMachine](VirtualMachine.html) page to see how you can configure the guests to share
10 the host entropy source.
14 1.0 is the first production version of ChaosKey, now available for sale
15 in single units and packs of 10 and 25 units at
16 [Garbee and Garbee](http://shop.gag.com/random.html).
18 <a href="v1.0/chaoskey-bare.jpg"><img src="v1.0/chaoskey-bare-thumb.jpg"></a>
20 <a href="v1.0/chaoskey-boxed.jpg"><img src="v1.0/chaoskey-boxed-thumb.jpg"></a>
22 ### Version 1.0 Hardware ###
24 * [STM32F042](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1823?icmp=stm32f0x2-line_pron_pr_jan2014&sc=stm32f0x2-pr) System-on-Chip
29 * Crystal-less operation
31 * AP3015A boost regulator
32 * back-to-back 3904 transistor noise
33 * [OPA356](http://www.ti.com/product/opa356) op amp
36 Here's a circuit diagram of the noise source:
38 <img src="v1.0/noise-source.svg">
40 ### Version 1.0 Bits ###
42 Source code for the firmware, flash loader and a utility to pull raw
43 bits from the noise source are available here:
45 [AltOS Git Repository](http://git.gag.com/?p=fw/altos;a=summary)
47 [ChaosKey Firmware version 1.6.7](v1.0/chaoskey-v1.0-1.6.7.elf)
49 [ChaosKey Boot Loader version 1.6.7](v1.0/chaoskey-v1.0-altos-flash-1.6.7.elf)
51 Hardware designs using [gEDA](http://www.geda-project.org/) are
54 [ChaosKey Hardware Design Files](http://git.gag.com/?p=hw/chaoskey;a=summary)
59 This one uses the better noise source coupled with an op amp that
60 provides 2MHz of bandwidth at a gain of 100, offering linear frequency
61 response at a million samples per second.
63 A photo of prototype version 0.3:
65 <a href="v0.3/chaoskey-v0.3.jpg"> <img src="v0.3/chaoskey-v0.3-thumb.jpg"></a>
67 Here's a circuit diagram of the noise source:
69 <img src="v0.3/noise-source.svg">
71 Version 0.3 uses the same hardware design as version 1.0, except that
72 it uses a QFP package version of the processor instead of the QFN used
73 in 1.0, and hence needs a larger circuit board.
77 This version uses a better noise source, but the single transistor amp
78 designed to get from the 20mV noise source to a digital value doesn't
79 provide enough bandwidth, so the resulting signal seen by the CPU has
80 poor frequency response.
82 Here's a photo of prototype version 0.2:
84 <a href="v0.2/chaoskey-v0.2.jpg"> <img src="v0.2/chaoskey-v0.2-thumb.jpg"></a>
86 ### Version 0.2 Hardware ###
88 * [STM32F042](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1823?icmp=stm32f0x2-line_pron_pr_jan2014&sc=stm32f0x2-pr) System-on-Chip
93 * Crystal-less operation
95 * AP3015A boost regulator
96 * back-to-back 3904 transistor noise
100 These are photos of prototype version 0.1:
102 <a href="v0.1/chaoskey-v0.1-top.jpg"> <img src="v0.1/chaoskey-v0.1-top-thumb.jpg"></a>
103 <a href="v0.1/chaoskey-v0.1-bottom.jpg"> <img src="v0.1/chaoskey-v0.1-bottom-thumb.jpg"></a>
105 ### Version 0.1 Hardware ###
107 * [NXP LPC11U14](http://www.nxp.com/products/microcontrollers/cortex_m0_m0/LPC11U14FHI33.html) System-on-Chip
112 * 8 12-bit analog inputs
113 * I2C, SPI, async serial
115 * ZXRE1004 zener diode noise source
116 * MCP6L92 dual op-amp
121 * [AltOS](../AltOS/) is written mostly in C with some ARM assembler
123 * [gEDA](http://www.gpleda.org/) for schematic capture and PCB layout
124 * [GCC](http://gcc.gnu.org/) compiler and source debugger
126 * The hardware is licensed under the [TAPR](http://www.tapr.org) [Open Hardware License](http://www.tapr.org/ohl.html)
127 * The software is licensed [GPL version 2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)