cargo install ldproxy # Required for std development
espup install
```
This will install the relevant Espressif Rust, LLVM, and GCC tools, as well as generating an activation script in `~/export-esp.sh`.
If you want to use this toolchain by default, you may want to add `source ~/export-esp.sh` to your `.profile`.
#### Connecting and Flashing the MCU
Once the development board (or serial console) is connected to the computer via USB, the example project may be flashed with:
```sh
cargo run
```
This compiles the project and shells out automatically to `espflash` to flash and establish a serial console connection to the board.
In my case, it identified the correct device automatically. However in some cases, the device exposed to the file system may
have restrictive permissions applied, which will cause an error to the effect of:
```
[2025-09-06T05:46:02Z INFO ] Serial port: '/dev/<DEVICENAME>'
[2025-09-06T05:46:02Z INFO ] Connecting...
Error: × Failed to open serial port /dev/<DEVICENAME>
╰─▶ Error while connecting to device
```
Granting read/write permissions to all users, should be sufficient to resolve the above issue (note that this is required each time the device is physically reconnected):
The port will be saved to `espflash_ports.toml`. For further information, refer to the [`espflash` documentation](https://github.com/esp-rs/espflash/blob/1daf446a0a553d23309e77c8781679ca25fc007a/espflash/README.md).
When successful, `espflash` will identify the connected MCU and its specifications.
```
[2025-09-06T05:47:07Z INFO ] Serial port: '/dev/ttyACM0'