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) and
17 [vikings](https://store.vikings.net/accessories/chaoskey).
19 <a href="v1.0/chaoskey-bare.jpg"><img src="v1.0/chaoskey-bare-thumb.jpg"></a>
21 <a href="v1.0/chaoskey-boxed.jpg"><img src="v1.0/chaoskey-boxed-thumb.jpg"></a>
23 ### Version 1.0 Hardware ###
25 * [STM32F042](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1823?icmp=stm32f0x2-line_pron_pr_jan2014&sc=stm32f0x2-pr) System-on-Chip
30 * Crystal-less operation
32 * AP3015A boost regulator
33 * back-to-back 3904 transistor noise
34 * [OPA356](http://www.ti.com/product/opa356) op amp
37 Here's a circuit diagram of the noise source:
39 <img src="v1.0/noise-source.svg">
41 ### Version 1.0 Bits ###
43 Source code for the firmware, flash loader and a utility to pull raw
44 bits from the noise source are available here:
46 [AltOS Git Repository](http://git.gag.com/?p=fw/altos;a=summary)
48 [ChaosKey Firmware version 1.6.7](v1.0/chaoskey-v1.0-1.6.7.elf)
50 [ChaosKey Boot Loader version 1.6.7](v1.0/chaoskey-v1.0-altos-flash-1.6.7.elf)
52 Hardware designs using [gEDA](http://www.geda-project.org/) are
55 [ChaosKey Hardware Design Files](http://git.gag.com/?p=hw/chaoskey;a=summary)
60 This one uses the better noise source coupled with an op amp that
61 provides 2MHz of bandwidth at a gain of 100, offering linear frequency
62 response at a million samples per second.
64 A photo of prototype version 0.3:
66 <a href="v0.3/chaoskey-v0.3.jpg"> <img src="v0.3/chaoskey-v0.3-thumb.jpg"></a>
68 Here's a circuit diagram of the noise source:
70 <img src="v0.3/noise-source.svg">
72 Version 0.3 uses the same hardware design as version 1.0, except that
73 it uses a QFP package version of the processor instead of the QFN used
74 in 1.0, and hence needs a larger circuit board.
78 This version uses a better noise source, but the single transistor amp
79 designed to get from the 20mV noise source to a digital value doesn't
80 provide enough bandwidth, so the resulting signal seen by the CPU has
81 poor frequency response.
83 Here's a photo of prototype version 0.2:
85 <a href="v0.2/chaoskey-v0.2.jpg"> <img src="v0.2/chaoskey-v0.2-thumb.jpg"></a>
87 ### Version 0.2 Hardware ###
89 * [STM32F042](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1823?icmp=stm32f0x2-line_pron_pr_jan2014&sc=stm32f0x2-pr) System-on-Chip
94 * Crystal-less operation
96 * AP3015A boost regulator
97 * back-to-back 3904 transistor noise
101 These are photos of prototype version 0.1:
103 <a href="v0.1/chaoskey-v0.1-top.jpg"> <img src="v0.1/chaoskey-v0.1-top-thumb.jpg"></a>
104 <a href="v0.1/chaoskey-v0.1-bottom.jpg"> <img src="v0.1/chaoskey-v0.1-bottom-thumb.jpg"></a>
106 ### Version 0.1 Hardware ###
108 * [NXP LPC11U14](http://www.nxp.com/products/microcontrollers/cortex_m0_m0/LPC11U14FHI33.html) System-on-Chip
113 * 8 12-bit analog inputs
114 * I2C, SPI, async serial
116 * ZXRE1004 zener diode noise source
117 * MCP6L92 dual op-amp
122 * [AltOS](../AltOS/) is written mostly in C with some ARM assembler
124 * [gEDA](http://www.gpleda.org/) for schematic capture and PCB layout
125 * [GCC](http://gcc.gnu.org/) compiler and source debugger
127 * The hardware is licensed under the [TAPR](http://www.tapr.org) [Open Hardware License](http://www.tapr.org/ohl.html)
128 * The software is licensed [GPL version 2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)