Updated README.md

This commit is contained in:
Mickey Malone
2021-02-14 14:11:04 -06:00
parent dfed974be8
commit cdce85171f

View File

@@ -1,12 +1,12 @@
# Raspberry Pi Pico Random Number Generator
A basic random number generator that generates numbers from the onboard DAC of the Raspberry Pi Pico. The project used the Raspberry Pi Pico USB dev_lowlevel as a starting point. The RNG is not meant to be FIPS 140-2 compliant by a long shot. This is not meant to by used in a production system as a TRNG. Maybe one day the next gen Pico's will include an onboard crypto module.
A basic random number generator that generates numbers from enviromental noise with the onboard DAC of the Raspberry Pi Pico. The project uses the Raspberry Pi Pico USB dev_lowlevel as a starting point. The RNG is not meant to be FIPS 140-2 compliant by any means. This is not meant to by used in a production system as a TRNG. Maybe one day the next gen Pico's will include an onboard crypto module.
## Project Goals
* Raspberry Pi Pico firmware generates random numbers as a USB Endpoint
* Linux Kernel Module (aka driver) provides random numbers to the Kernel
* Driver can transmit random numbers on demand to the system and/or user processes via a character device
* Raspberry Pi Pico firmware generates random numbers as a USB Endpoint.
* Linux Kernel Module (aka driver) provides random numbers to the Kernel.
* Driver can transmit random numbers on demand to the system and/or user processes via a character device.
### Prerequisites
@@ -34,6 +34,8 @@ make
### Install
The driver can be installed from the build directory using the traditional insmod command.
```bash
# Assumes CWD is 'build/'
# debug will enable debug log level
@@ -41,13 +43,21 @@ make
sudo insmod driver/pico_rng.ko [debug=1] [timeout=<msec timeout>]
```
The Pico firmware is installed thorugh the normal process as outlined in the Raspberry Pi Pico Development Documentation.
* Unplug the Pico from the host.
* Plug the Pico into the host while holding the 'boot' button.
* Mount the Pico ```sudo mount /dev/sdb1 /mnt```. Note /dev/sdb1 could be different you. Use ```sudo dmesg``` to find out what device the Pico shows up as on your system.
* Copy the uf2 file to the Pico ```sudo cp firmware/pico_rng.uf2 /mnt```.
* Umount the pico ```sudo umount /mnt```.
### Testing
You can test Pico RNG firmware with the [pico_rng_test.py](firmware/pico_rng_test.py) script.
```bash
# Running with --performance will measure the devices' KB/s.
# if the kernel module is inserted, then the test tool will use /dev/pico_rng otherwise python's libusb implementation will be used.
# if the kernel module has been installed, then the test tool will use /dev/pico_rng otherwise python's libusb implementation will be used.
sudo firmware/pico_rng_test.py [--performance]
```