diff --git a/README.md b/README.md index 86239c3..236ccdc 100644 --- a/README.md +++ b/README.md @@ -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=] ``` +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] ```