Cant use symlinks to reference current ChaosKey firmware
[web/altusmetrum] / ChaosKey / index.mdwn
1 # ChaosKey
2
3 This is a hardware True Random Number Generator that attaches via USB.
4
5 The Linux Kernel, starting with version 4.1, includes source for this
6 driver. It should be built by default in your distribution. If your
7 using Linux + KVM to host other Linux instances, read the
8 [VirtualMachine](VirtualMachine.html) page to see how you can configure the guests to share
9 the host entropy source.
10
11 ## Version 1.0 ##
12
13 1.0 is the first production version of ChaosKey, now available for sale 
14 in single units and packs of 10 and 25 units at
15 [Garbee and Garbee](http://shop.gag.com/random.html).
16
17 <a href="v1.0/chaoskey-bare.jpg"><img src="v1.0/chaoskey-bare-thumb.jpg"></a>
18
19 <a href="v1.0/chaoskey-boxed.jpg"><img src="v1.0/chaoskey-boxed-thumb.jpg"></a>
20
21 ### Version 1.0 Hardware ###
22
23  * [STM32F042](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1823?icmp=stm32f0x2-line_pron_pr_jan2014&sc=stm32f0x2-pr) System-on-Chip
24     * ARM Cortex-M0 MCU
25     * 32k Flash
26     * 6k RAM
27     * USB 2.0 Full Speed
28     * Crystal-less operation
29  * 20V noise source
30     * AP3015A boost regulator
31     * back-to-back 3904 transistor noise
32  * [OPA356](http://www.ti.com/product/opa356) op amp
33     * 200MHz GBP
34
35 Here's a circuit diagram of the noise source:
36
37 <img src="v1.0/noise-source.svg">
38
39 ### Version 1.0 Bits ###
40
41 Source code for the firmware, flash loader and a utility to pull raw
42 bits from the noise source are available here:
43
44 [AltOS Git Repository](http://git.gag.com/?p=fw/altos;a=summary)
45
46 [ChaosKey Firmware version 1.6.7](v1.0/chaoskey-v1.0-1.6.7.elf)
47
48 [ChaosKey Boot Loader version 1.6.7](v1.0/chaoskey-v1.0-altos-flash-1.6.7.elf)
49
50 Hardware designs using [gEDA](http://www.geda-project.org/) are
51 available here:
52
53 [ChaosKey Hardware Design Files](http://git.gag.com/?p=hw/chaoskey;a=summary)
54
55
56 ## Version 0.3 ##
57
58 This one uses the better noise source coupled with an op amp that
59 provides 2MHz of bandwidth at a gain of 100, offering linear frequency
60 response at a million samples per second.
61
62 A photo of prototype version 0.3:
63
64 <a href="v0.3/chaoskey-v0.3.jpg"> <img src="v0.3/chaoskey-v0.3-thumb.jpg"></a>
65
66 Here's a circuit diagram of the noise source:
67
68 <img src="v0.3/noise-source.svg">
69
70 Version 0.3 uses the same hardware design as version 1.0, except that
71 it uses a QFP package version of the processor instead of the QFN used
72 in 1.0, and hence needs a larger circuit board.
73
74 ## Version 0.2 ##
75
76 This version uses a better noise source, but the single transistor amp
77 designed to get from the 20mV noise source to a digital value doesn't
78 provide enough bandwidth, so the resulting signal seen by the CPU has
79 poor frequency response.
80
81 Here's a photo of prototype version 0.2:
82
83 <a href="v0.2/chaoskey-v0.2.jpg"> <img src="v0.2/chaoskey-v0.2-thumb.jpg"></a>
84
85 ### Version 0.2 Hardware ###
86
87  * [STM32F042](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1823?icmp=stm32f0x2-line_pron_pr_jan2014&sc=stm32f0x2-pr) System-on-Chip
88     * ARM Cortex-M0 MCU
89     * 32k Flash
90     * 6k RAM
91     * USB 2.0
92     * Crystal-less operation
93  * 20V noise source
94     * AP3015A boost regulator
95     * back-to-back 3904 transistor noise
96
97 ## Version 0.1 ##
98
99 These are photos of prototype version 0.1:
100
101 <a href="v0.1/chaoskey-v0.1-top.jpg"> <img src="v0.1/chaoskey-v0.1-top-thumb.jpg"></a>
102 <a href="v0.1/chaoskey-v0.1-bottom.jpg"> <img src="v0.1/chaoskey-v0.1-bottom-thumb.jpg"></a>
103
104 ### Version 0.1 Hardware ###
105
106  * [NXP LPC11U14](http://www.nxp.com/products/microcontrollers/cortex_m0_m0/LPC11U14FHI33.html) System-on-Chip
107         * ARM Cortex-M0 MCU
108         * 32k Flash
109         * 6k RAM
110         * USB 2.0
111         * 8 12-bit analog inputs
112         * I2C, SPI, async serial
113         * digital I/O
114  * ZXRE1004 zener diode noise source
115  * MCP6L92 dual op-amp
116
117 ## Software ##
118
119 * Firmware Features
120         * [AltOS](../AltOS/) is written mostly in C with some ARM assembler
121 * Tools Used
122         * [gEDA](http://www.gpleda.org/) for schematic capture and PCB layout
123         * [GCC](http://gcc.gnu.org/) compiler and source debugger
124 * Licenses
125         * The hardware is licensed under the [TAPR](http://www.tapr.org) [Open Hardware License](http://www.tapr.org/ohl.html)
126         * The software is licensed [GPL version 2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)