Skip to content
Rust board support crate for the Solo security key
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.cargo basics Jan 5, 2019
src Implement Leds, with example Mar 15, 2019
.gitattributes Add reference material Mar 9, 2019
memory-solo.x Improve Makefile, adding Nucleo target board Mar 9, 2019
openocd.gdb Implement Leds, with example Mar 15, 2019

License License Crates


This is a (WIP!) Rust board support package for the open source Solo security key.

This key consists of:

  • an STM32L432KC microcontroller
  • either a USB-A or USB-C connector
  • a clicky dome button
  • 3 LEDs
  • an NCP114 voltage regulator
  • and various resistors, capacitors, and Zener diodes

One specialty is that it has a custom USB bootloader, allowing easy updates. To use it, FLASH ORIGIN in memory.x needs to be set to 0x800_5000 instead of the conventional 0x800_0000. Alternatively, the ST DFU bootloader can be used. Additionally, serial TX/RX and all SWD pins (SWDIO, SWCLK, SWO) are kind of broken out.


You need stable Rust 2018 edition, for details see the embedded book, in short:

curl -sSf | sh
rustup target add thumbv7em-none-eabihf
cargo install cargo-binutils
rustup component add llvm-tools-preview

To build blinky, run make blinky. You end up with a blinky.hex file.

To flash it to your Solo Hacker:

  • insert Solo and boot to Solo bootloader by pressing the button for ~2 seconds (it starts to blink)
  • setup Solotool and make sure you can flash the original solo.hex
  • run tools/ /path/to/blinky.hex
  • watch the green LED blink 🎉


Licensed under either of

at your option.


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

You can’t perform that action at this time.