rustup
for esp-rs
espup
is a tool for installing and maintaining the required toolchains for
developing applications in Rust for Espressif SoC's.
To better understand what espup
installs, see Rust on ESP targets
chapter of The Rust on ESP Book
Before running or installing espup
, make sure that the following dependencies are installed.
- Ubuntu/Debian
sudo apt-get install -y git python3 python3-pip gcc build-essential curl pkg-config libudev-dev libtinfo5
libudev-dev
is only required when installingcargo-espflash
.python3
andpython3-pip
are only required when installing ESP-IDF.libtinfo5
is required by LLVM 15.
- Fedora
sudo dnf -y install git python3 python3-pip perl gcc systemd-devel ncurses-compat-libs
systemd-devel
is only required when installingcargo-espflash
.python3
andpython3-pip
are only required when installing ESP-IDF.perl
is required to build openssl-sysncurses-compat-libs
is required by LLVM 15.
- openSUSE Thumbleweed/Leap
sudo zypper install -y git gcc libudev-devel ninja python3 python3-pip make libncurses5
libudev-devel
is only required when installingcargo-espflash
.python3
andpython3-pip
are only required when installing ESP-IDF.libncurses5
is required by LLVM 15.
cargo install espup
It's also possible to use cargo-binstall or to directly download the pre-compiled release binaries:
curl -L https://github.com/esp-rs/espup/releases/latest/download/espup-aarch64-unknown-linux-gnu -o espup
chmod a+x espup
curl -L https://github.com/esp-rs/espup/releases/latest/download/espup-x86_64-unknown-linux-gnu -o espup
chmod a+x espup
curl -L https://github.com/esp-rs/espup/releases/latest/download/espup-aarch64-apple-darwin -o espup
chmod a+x espup
curl -L https://github.com/esp-rs/espup/releases/latest/download/espup-x86_64-apple-darwin -o espup
chmod a+x espup
Invoke-WebRequest 'https://github.com/esp-rs/espup/releases/latest/download/espup-x86_64-pc-windows-msvc.exe' -OutFile .\espup.exe
See Usage section for more details.
no_std
espup install # Unix . $HOME/export-esp.sh # Windows %USERPROFILE%\export-esp.ps1
std
: Installingesp-idf
viaespup
is not mandatory, asesp-idf-sys
already takes care of it, but has some benefits.espup install --esp-idf-version <ESP_IDF_VERSION> # Unix . $HOME/export-esp.sh # Windows %USERPROFILE%\export-esp.ps1
Warning
The generated export file, by default
export-esp
, needs to be sourced in every terminal before building an application.
espup uninstall
espup update
Usage: espup <COMMAND>
Commands:
install Installs esp-rs environment
uninstall Uninstalls esp-rs environment
update Updates Xtensa Rust toolchain
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help information
-V, --version Print version information
Note
Installation paths can be modified by setting the environment variables
CARGO_HOME
andRUSTUP_HOME
before running theinstall
command. Xtensa Rust toolchain will be installed under<rustup_home>/toolchains/esp
.
Usage: espup install [OPTIONS]
Options:
-d, --default-host <DEFAULT_HOST>
Target triple of the host
-e, --esp-idf-version <ESP_IDF_VERSION>
ESP-IDF version to install. If empty, no esp-idf is installed. Version format:
- `commit:<hash>`: Uses the commit `<hash>` of the `esp-idf` repository.
- `tag:<tag>`: Uses the tag `<tag>` of the `esp-idf` repository.
- `branch:<branch>`: Uses the branch `<branch>` of the `esp-idf` repository.
- `v<major>.<minor>` or `<major>.<minor>`: Uses the tag `v<major>.<minor>` of the `esp-idf` repository.
- `<branch>`: Uses the branch `<branch>` of the `esp-idf` repository.
When using this option, `ldproxy` crate will also be installed.
-f, --export-file <EXPORT_FILE>
Destination of the generated export file
-c, --extra-crates <EXTRA_CRATES>
Comma or space list of extra crates to install
-x, --llvm-version <LLVM_VERSION>
LLVM version
[default: 15]
[possible values: 15]
-l, --log-level <LOG_LEVEL>
Verbosity level of the logs
[default: info]
[possible values: debug, info, warn, error]
-n, --nightly-version <NIGHTLY_VERSION>
Nightly Rust toolchain version
[default: nightly]
-m, --profile-minimal
Minifies the installation
-t, --targets <TARGETS>
Comma or space separated list of targets [esp32,esp32s2,esp32s3,esp32c2,esp32c3,all]
[default: all]
-v, --toolchain-version <TOOLCHAIN_VERSION>
Xtensa Rust toolchain version
-h, --help
Print help information (use `-h` for a summary)
-V, --version
Print version information
Usage: espup uninstall [OPTIONS]
Options:
-l, --log-level <LOG_LEVEL> Verbosity level of the logs [default: info] [possible values: debug, info, warn, error]
-h, --help Print help information
-V, --version Print version information
Usage: espup update [OPTIONS]
Options:
-d, --default-host <DEFAULT_HOST>
Target triple of the host
-l, --log-level <LOG_LEVEL>
Verbosity level of the logs [default: info] [possible values: debug, info, warn, error]
-v, --toolchain-version <TOOLCHAIN_VERSION>
Xtensa Rust toolchain version
-h, --help
Print help information
-V, --version
Print version information
- If installing esp-idf in Windows, only
all
targets is allowed. - In Windows, when installing esp-idf fails with:
Solution: Use a python version between
ERROR: Could not find a version that satisfies the requirement windows-curses; sys_platform == "win32" (from esp-windows-curses) (from versions: none) ERROR: No matching distribution found for windows-curses; sys_platform == "win32" Traceback (most recent call last): File "<home_dir>/.espressif\esp-idf-ae062fbba3ded0aa\release-v4.4\tools\idf_tools.py", line 1973, in <module> main(sys.argv[1:]) File "<home_dir>/.espressif\esp-idf-ae062fbba3ded0aa\release-v4.4\tools\idf_tools.py", line 1969, in main action_func(args) File "<home_dir>/.espressif\esp-idf-ae062fbba3ded0aa\release-v4.4\tools\idf_tools.py", line 1619, in action_install_python_env subprocess.check_call(run_args, stdout=sys.stdout, stderr=sys.stderr, env=env_copy) File "C:\Python311\Lib\subprocess.py", line 413, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['<home_dir>/.espressif\\python_env\\idf4.4_py3.11_env\\Scripts\\python.exe', '-m', 'pip', 'install', '--no-warn-script-location', '-r', <home_dir>/.espressif\\esp-idf-ae062fbba3ded0aa\\release-v4.4\\requirements.txt', '--extra-index-url', 'https://dl.espressif.com/pypi']' returned non-zero exit status 1. Error: Could not install esp-idf
3.6
and3.10
as3.11
Python wheels are not yet released for Windows.
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.