https://github.com/flipperzero-rs/flipperzero
Rust on the Flipper Zero
https://github.com/flipperzero-rs/flipperzero
embedded flipperzero rust rust-lang
Last synced: 9 months ago
JSON representation
Rust on the Flipper Zero
- Host: GitHub
- URL: https://github.com/flipperzero-rs/flipperzero
- Owner: flipperzero-rs
- License: mit
- Created: 2022-09-26T00:37:23.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-02-28T06:10:33.000Z (11 months ago)
- Last Synced: 2025-04-14T18:09:36.795Z (9 months ago)
- Topics: embedded, flipperzero, rust, rust-lang
- Language: Rust
- Homepage:
- Size: 1.75 MB
- Stars: 586
- Watchers: 11
- Forks: 44
- Open Issues: 25
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Rust for Flipper Zero 🐬❤️🦀
[](https://crates.io/crates/flipperzero)
[](https://github.com/flipperdevices/flipperzero-firmware/blob/1.2.0/targets/f7/api_symbols.csv)
[](https://docs.rs/flipperzero)
[](LICENSE)
This project allows writing Rust-based applications for the [Flipper Zero](https://flipperzero.one/).
It doesn't have any direct dependency on [`flipperzero-firmware`](https://github.com/flipperdevices/flipperzero-firmware) or toolchain,
so it can be used to build binaries with no external dependencies.
These crates only support the [`core`](https://doc.rust-lang.org/core/) and [`alloc`](https://doc.rust-lang.org/alloc/) crates.
The Rust `thumbv7em-none-eabihf` target currently only supports [`no_std`](https://rust-embedded.github.io/book/intro/no-std.html) development.
This means it's not possible to use anything in the [`std`](https://doc.rust-lang.org/std/) crate.
## SDK version
Currently supports SDK 79.2 ([flipperzero-firmware@1.2.0](https://github.com/flipperdevices/flipperzero-firmware/tree/1.2.0)).
The crate major version number will be updated after a bump in [API version](https://github.com/flipperdevices/flipperzero-firmware/blob/release/targets/f7/api_symbols.csv) in the Flipper Zero firmware.
| Crate version | API version |
| ------------- | ----------- |
| HEAD | 79.2 |
| 0.14.x | 79.2 |
| 0.13.x | 78.0 |
| 0.12.x | 73.0 |
| 0.11.x | 35.0 |
| 0.10.x | 28.2 |
| 0.9.x | 23.0 |
| 0.8.x | 20.0 |
| 0.7.x | 14.0 |
| 0.6.x | 11.2 |
| 0.5.x | 10.1 |
| 0.4.x | 7.5 |
| 0.3.x | 2.2 |
## Crates
- [`flipperzero`](https://crates.io/crates/flipperzero): High-level safe bindings
- [`flipperzero-alloc`](https://crates.io/crates/flipperzero-alloc): Custom [global allocator](https://doc.rust-lang.org/std/alloc/trait.GlobalAlloc.html) (required for [`alloc`](https://doc.rust-lang.org/alloc/))
- [`flipperzero-rt`](https://crates.io/crates/flipperzero-rt): Runtime support (including [panic handler](https://docs.rs/flipperzero-rt/latest/flipperzero_rt/panic_handler/) and [entry point](https://docs.rs/flipperzero-rt/latest/flipperzero_rt/macro.entry.html) helper)
- [`flipperzero-sys`](https://crates.io/crates/flipperzero-sys): Low-level bindings to Flipper Zero API (unsafe)
## Initial setup
1. Install [`rustup`](https://rust-lang.github.io/rustup/) by following the instructions on [`rustup.rs`](https://rustup.rs/).
2. Use `rustup` to install the `thumbv7em-none-eabihf` target:
```
rustup target add thumbv7em-none-eabihf
```
## Writing an application
The Flipper Zero supports installing [externally built applications on the SD card](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/AppsOnSDCard.md).
See [`flipperzero-template`](https://github.com/flipperzero-rs/flipperzero-template)🚀 to help you get started.
## License
Licensed under the MIT License. See LICENSE for details.