Total: $0.00

For US orders: if you place your order by the last day of the shop's reopening on Friday, December 15, there's a good chance that package will arrive on, or before, December 24. Orders will be shipped in week 50. The FSF appreciates your understanding if orders are delayed; your financial support and purchases make an incredible difference for free software at this critical time.

Watch our new tour video of the FSF shop!

NeuG USB True Random Number Generator


FST-01SZ is a tiny USB 32-bit computer based on a free (as in freedom) hardware design. NeuG is an implementation of a true random number generator (TRNG) for GD32F103 MCU. A very small amount of assembly is required to use this product - here is an instructional video: https://media.libreplanet.org/u/libreplanet/m/random-number-generator-as...

In this product, a standalone USB version of NeuG is installed, together with a USB Mass Storage Class device implementation named Fraucheky. It uses the thread library Chopstx. NeuG, Fraucheky, and Chopstx are licensed under the GNU GPLv3. Source code and hardware design are on the accompanying microSD.

Please note: the FST-01SZ has different MCU from the prior model. Firmware should be build with
'--target=FST-01SZ' option - see the Note from Niibe below.

Links to more information:
* https://www.gniibe.org/memo/development/fst-01/distributing-fst-01sz.html
* https://www.gniibe.org/memo/development/fst-01/fst-01-revision-sz.html
* https://www.fsf.org/blogs/gnu-press/neug-trng.

NeuG version 1.0.7:
* https://www.fsij.org/gnuk/neug_version1_0_7.html

Note from NeuG Inventor Niibe:

This model uses _different_ MCU than FST-01 and FST-01G. Thus, we need a
warning (or a prominent message) for possible users who want to use it
by updating firmware (or installing their own firmware).

The hardware design itself is mostly same (from hardware design point of
view), but, when you build its firmware (NeuG or Gnuk) by yourself, for
FST-01SZ, the configure script requires an option:


instead of




Target of FST_01 is the default, meaning, when there is no --target
option, configure script selects FST_01 as target.

FST_01 (underscore instead of hyphen) means, it's for FST-01 device.
It's underscore, instead of hyphen, because of internal programming
thing. (I admit, it's confusing. sorry about that)

Technically speaking, firmware built with an option --target=FST_01 (or
default) can be installed and run on FST-01G. Or vice a versa.

IMPORTANT: However, for FST-01SZ, firmware built with an option
--target=FST_01 (FST_01G, or default) _cannot_ run on FST-01SZ. It
should be specifically selected as FST-01SZ. When a user will install
firmware build for FST-01 or FST-01G on to FST-01SZ, the device will be

"Bricked" means that it will be not functional at all. Hardware-wise,
it won't break the device ifself. It is possible to repair the device,
but it requires another equipment (JTAG programmer, specifically).