mark ChaosKey as out of production
[web/altusmetrum] / ChaosKey / index.mdwn
1 [[!meta title="ChaosKey"]]
2 # ChaosKey
3
4 This is a hardware True Random Number Generator that attaches via USB.
5
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.
11
12 ## Version 1.0 ##
13
14 ChaosKey is now out of production, but some units may still be available through our
15 European distributor
16 [vikings](https://store.vikings.net/chaoskey).
17
18 <a href="v1.0/chaoskey-bare.jpg"><img src="v1.0/chaoskey-bare-thumb.jpg"></a>
19
20 <a href="v1.0/chaoskey-boxed.jpg"><img src="v1.0/chaoskey-boxed-thumb.jpg"></a>
21
22 ### Reflashing Firmware ###
23
24 To reflash the system firmware on ChaosKey, you first need to get the
25 device into 'bootloader mode'. To do this, you must power-up ChaosKey
26 with a jumper between GND and the Boot Loader Select pin.
27
28 Open up ChaosKey by prying the case apart. There's no glue or screws,
29 so a thin tool or fingernail should suffice to split the case into two
30 pieces. Once you've opened it up, you'll find the inside that looks
31 much like this:
32
33 <img src="chaoskey-connector.svg">
34
35 Connect a wire between the two red holes in the debug connector and
36 then plug it in to your computer. It will appear as a USB modem device
37 called AltosFlash with USB ID fffe:000a.
38
39 Use the 'ao-usbload' program, which is part of the
40 [AltOS repository](https://altusmetrum.org/AltOS/)
41 and is packaged for Debian in the 'altos' package:
42
43     $ ao-usbload chaoskey-v1.0-*.elf
44
45 ### Version 1.0 Hardware ###
46
47  * [STM32F042](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1823?icmp=stm32f0x2-line_pron_pr_jan2014&sc=stm32f0x2-pr) System-on-Chip
48     * ARM Cortex-M0 MCU
49     * 32k Flash
50     * 6k RAM
51     * USB 2.0 Full Speed
52     * Crystal-less operation
53  * 20V noise source
54     * AP3015A boost regulator
55     * back-to-back 3904 transistor noise
56  * [OPA356](http://www.ti.com/product/opa356) op amp
57     * 200MHz GBP
58
59 Here's a circuit diagram of the noise source:
60
61 <img src="v1.0/noise-source.svg">
62
63 ### Version 1.0 Bits ###
64
65 Source code for the firmware, flash loader and a utility to pull raw
66 bits from the noise source are available here:
67
68 [AltOS Git Repository](http://git.gag.com/?p=fw/altos;a=summary)
69
70 [ChaosKey Firmware version 1.6.7](v1.0/chaoskey-v1.0-1.6.7.elf)
71
72 [ChaosKey Boot Loader version 1.6.7](v1.0/chaoskey-v1.0-altos-flash-1.6.7.elf)
73
74 Hardware designs using [gEDA](http://www.geda-project.org/) are
75 available here:
76
77 [ChaosKey Hardware Design Files](http://git.gag.com/?p=hw/chaoskey;a=summary)
78
79
80 ## Version 0.3 ##
81
82 This one uses the better noise source coupled with an op amp that
83 provides 2MHz of bandwidth at a gain of 100, offering linear frequency
84 response at a million samples per second.
85
86 A photo of prototype version 0.3:
87
88 <a href="v0.3/chaoskey-v0.3.jpg"> <img src="v0.3/chaoskey-v0.3-thumb.jpg"></a>
89
90 Here's a circuit diagram of the noise source:
91
92 <img src="v0.3/noise-source.svg">
93
94 Version 0.3 uses the same hardware design as version 1.0, except that
95 it uses a QFP package version of the processor instead of the QFN used
96 in 1.0, and hence needs a larger circuit board.
97
98 ## Version 0.2 ##
99
100 This version uses a better noise source, but the single transistor amp
101 designed to get from the 20mV noise source to a digital value doesn't
102 provide enough bandwidth, so the resulting signal seen by the CPU has
103 poor frequency response.
104
105 Here's a photo of prototype version 0.2:
106
107 <a href="v0.2/chaoskey-v0.2.jpg"> <img src="v0.2/chaoskey-v0.2-thumb.jpg"></a>
108
109 ### Version 0.2 Hardware ###
110
111  * [STM32F042](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1823?icmp=stm32f0x2-line_pron_pr_jan2014&sc=stm32f0x2-pr) System-on-Chip
112     * ARM Cortex-M0 MCU
113     * 32k Flash
114     * 6k RAM
115     * USB 2.0
116     * Crystal-less operation
117  * 20V noise source
118     * AP3015A boost regulator
119     * back-to-back 3904 transistor noise
120
121 ## Version 0.1 ##
122
123 These are photos of prototype version 0.1:
124
125 <a href="v0.1/chaoskey-v0.1-top.jpg"> <img src="v0.1/chaoskey-v0.1-top-thumb.jpg"></a>
126 <a href="v0.1/chaoskey-v0.1-bottom.jpg"> <img src="v0.1/chaoskey-v0.1-bottom-thumb.jpg"></a>
127
128 ### Version 0.1 Hardware ###
129
130  * [NXP LPC11U14](http://www.nxp.com/products/microcontrollers/cortex_m0_m0/LPC11U14FHI33.html) System-on-Chip
131         * ARM Cortex-M0 MCU
132         * 32k Flash
133         * 6k RAM
134         * USB 2.0
135         * 8 12-bit analog inputs
136         * I2C, SPI, async serial
137         * digital I/O
138  * ZXRE1004 zener diode noise source
139  * MCP6L92 dual op-amp
140
141 ## Software ##
142
143 * Firmware Features
144         * [AltOS](../AltOS/) is written mostly in C with some ARM assembler
145 * Tools Used
146         * [gEDA](http://www.gpleda.org/) for schematic capture and PCB layout
147         * [GCC](http://gcc.gnu.org/) compiler and source debugger
148 * Licenses
149         * The hardware is licensed under the [TAPR](http://www.tapr.org) [Open Hardware License](http://www.tapr.org/ohl.html)
150         * The software is licensed [GPL version 2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)