https://github.com/second-state/echokit_box
ESP32 firmware for the EchoKit voice device
https://github.com/second-state/echokit_box
ai esp32 rust voice
Last synced: 2 months ago
JSON representation
ESP32 firmware for the EchoKit voice device
- Host: GitHub
- URL: https://github.com/second-state/echokit_box
- Owner: second-state
- License: gpl-3.0
- Created: 2025-07-08T06:26:42.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-09-20T09:54:44.000Z (3 months ago)
- Last Synced: 2025-09-20T11:42:11.102Z (3 months ago)
- Topics: ai, esp32, rust, voice
- Language: Rust
- Homepage: https://echokit.dev/
- Size: 8.36 MB
- Stars: 64
- Watchers: 0
- Forks: 67
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Setup the EchoKit device
## Buttons on the device
The `RST` button is to restart the system. On the EchoKit devkit, it is labeled as `rst` on the main ESP32 board.
The `K0` button is the main action button for the application. On the EchoKit devkit, it is the single button to the left of the LCD screen on the extension board.
> The `boot` button on the ESP32 board is the SAME as the `K0` button.
## Quick start
Flash the `echokit.bin` device image using the web-based [ESP Launchpad](https://espressif.github.io/esp-launchpad/?flashConfigURL=https://echokit.dev/firmware/echokit.toml) tool.
## Install espflash
Assume that you [installed the Rust compiler](https://www.rust-lang.org/tools/install) on your computer.
```
cargo install cargo-espflash espflash ldproxy
```
## Build the firmware
Get a pre-compiled binary version of the firmware. The firmware binary file is `echokit`.
```
curl -L -o echokit https://echokit.dev/firmware/echokit-boards
```
To build the `echokit` firmware file from source, you need to make sure that you install the [OS-specific dependencies](https://docs.espressif.com/projects/rust/book/installation/std-requirements.html) and then [ESP toolchain for Rust](https://docs.espressif.com/projects/rust/book/installation/riscv-and-xtensa.html). You can then build from the source and find the binary firmware in `target/xtensa-esp32s3-espidf/release/`.
```
cargo build --release
```
Optional: Build the device image.
```
espflash save-image --chip esp32s3 --merge --flash-size 16mb target/xtensa-esp32s3-espidf/release/echokit echokit.bin
```
Alternative firmware
If you have the fully integrared box device, you can use the following command to download a pre-built binary.
```
curl -L -o echokit https://echokit.dev/firmware/echokit-box
```
To build it from the Rust source code.
```
cargo build --no-default-features --features box
```
## Flash the firmware
Connect to your computer to the EchoKit device USB port labeled `TTL`. Allow the computer to accept connection from the device when prompted.
> On many devices, there are two USB ports, but only the `SLAVE` port can take commands from another computer. You must connect to that `SLAVE` USB port. The detected USB serial port should be `JTAG`. IT CANNOT be `USB Single`.
```
espflash flash --monitor --flash-size 16mb echokit
```
The response is as follows.
```
[2025-04-28T16:51:43Z INFO ] Detected 2 serial ports
[2025-04-28T16:51:43Z INFO ] Ports which match a known common dev board are highlighted
[2025-04-28T16:51:43Z INFO ] Please select a port
✔ Remember this serial port for future use? · no
[2025-04-28T16:52:00Z INFO ] Serial port: '/dev/cu.usbmodem2101'
[2025-04-28T16:52:00Z INFO ] Connecting...
[2025-04-28T16:52:00Z INFO ] Using flash stub
Chip type: esp32s3 (revision v0.2)
Crystal frequency: 40 MHz
Flash size: 8MB
Features: WiFi, BLE
... ...
I (705) boot: Loaded app from partition at offset 0x10000
I (705) boot: Disabling RNG early entropy source...
I (716) cpu_start: Multicore app
```
> If you have problem with flashing, try press down the `RST` button and, at the same time, press and release the `boot` (or `K0`) button. The device should enter into a special mode and be ready for flashing.
## Reset the device
Reset the device (simulate the RST button or power up).
```
espflash reset
```
Delete the existing firmware if needed.
```
espflash erase-flash
```
## Next steps
You will need to configure and start up an [EchoKit server](https://github.com/second-state/echokit_server), and then configure your device to connect to the server in order for the EchoKit device to be fully functional.