summaryrefslogtreecommitdiff
path: root/ChaosKey/index.mdwn
blob: 7f235ee5794da5c1871e0928f7b7ff96e7aa871c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
[[!meta title="ChaosKey"]]
# ChaosKey

This is a hardware True Random Number Generator that attaches via USB.

The Linux Kernel, starting with version 4.1, includes source for this
driver. It should be built by default in your distribution. If your
using Linux + KVM to host other Linux instances, read the
[VirtualMachine](VirtualMachine.html) page to see how you can configure the guests to share
the host entropy source.

## Version 1.0 ##

1.0 is the first production version of ChaosKey, now available for sale 
in single units and packs of 10 and 25 units at
[Garbee and Garbee](http://shop.gag.com/random.html) and
[vikings](https://store.vikings.net/accessories/chaoskey).

<a href="v1.0/chaoskey-bare.jpg"><img src="v1.0/chaoskey-bare-thumb.jpg"></a>

<a href="v1.0/chaoskey-boxed.jpg"><img src="v1.0/chaoskey-boxed-thumb.jpg"></a>

### Version 1.0 Hardware ###

 * [STM32F042](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1823?icmp=stm32f0x2-line_pron_pr_jan2014&sc=stm32f0x2-pr) System-on-Chip
    * ARM Cortex-M0 MCU
    * 32k Flash
    * 6k RAM
    * USB 2.0 Full Speed
    * Crystal-less operation
 * 20V noise source
    * AP3015A boost regulator
    * back-to-back 3904 transistor noise
 * [OPA356](http://www.ti.com/product/opa356) op amp
    * 200MHz GBP

Here's a circuit diagram of the noise source:

<img src="v1.0/noise-source.svg">

### Version 1.0 Bits ###

Source code for the firmware, flash loader and a utility to pull raw
bits from the noise source are available here:

[AltOS Git Repository](http://git.gag.com/?p=fw/altos;a=summary)

[ChaosKey Firmware version 1.6.7](v1.0/chaoskey-v1.0-1.6.7.elf)

[ChaosKey Boot Loader version 1.6.7](v1.0/chaoskey-v1.0-altos-flash-1.6.7.elf)

Hardware designs using [gEDA](http://www.geda-project.org/) are
available here:

[ChaosKey Hardware Design Files](http://git.gag.com/?p=hw/chaoskey;a=summary)


## Version 0.3 ##

This one uses the better noise source coupled with an op amp that
provides 2MHz of bandwidth at a gain of 100, offering linear frequency
response at a million samples per second.

A photo of prototype version 0.3:

<a href="v0.3/chaoskey-v0.3.jpg"> <img src="v0.3/chaoskey-v0.3-thumb.jpg"></a>

Here's a circuit diagram of the noise source:

<img src="v0.3/noise-source.svg">

Version 0.3 uses the same hardware design as version 1.0, except that
it uses a QFP package version of the processor instead of the QFN used
in 1.0, and hence needs a larger circuit board.

## Version 0.2 ##

This version uses a better noise source, but the single transistor amp
designed to get from the 20mV noise source to a digital value doesn't
provide enough bandwidth, so the resulting signal seen by the CPU has
poor frequency response.

Here's a photo of prototype version 0.2:

<a href="v0.2/chaoskey-v0.2.jpg"> <img src="v0.2/chaoskey-v0.2-thumb.jpg"></a>

### Version 0.2 Hardware ###

 * [STM32F042](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1823?icmp=stm32f0x2-line_pron_pr_jan2014&sc=stm32f0x2-pr) System-on-Chip
    * ARM Cortex-M0 MCU
    * 32k Flash
    * 6k RAM
    * USB 2.0
    * Crystal-less operation
 * 20V noise source
    * AP3015A boost regulator
    * back-to-back 3904 transistor noise

## Version 0.1 ##

These are photos of prototype version 0.1:

<a href="v0.1/chaoskey-v0.1-top.jpg"> <img src="v0.1/chaoskey-v0.1-top-thumb.jpg"></a>
<a href="v0.1/chaoskey-v0.1-bottom.jpg"> <img src="v0.1/chaoskey-v0.1-bottom-thumb.jpg"></a>

### Version 0.1 Hardware ###

 * [NXP LPC11U14](http://www.nxp.com/products/microcontrollers/cortex_m0_m0/LPC11U14FHI33.html) System-on-Chip
	* ARM Cortex-M0 MCU
	* 32k Flash
	* 6k RAM
	* USB 2.0
	* 8 12-bit analog inputs
	* I2C, SPI, async serial
	* digital I/O
 * ZXRE1004 zener diode noise source
 * MCP6L92 dual op-amp

## Software ##

* Firmware Features
	* [AltOS](../AltOS/) is written mostly in C with some ARM assembler
* Tools Used
	* [gEDA](http://www.gpleda.org/) for schematic capture and PCB layout
	* [GCC](http://gcc.gnu.org/) compiler and source debugger
* Licenses
	* The hardware is licensed under the [TAPR](http://www.tapr.org) [Open Hardware License](http://www.tapr.org/ohl.html)
	* The software is licensed [GPL version 2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)