Skip to main content

2 posts tagged with "firmware"

View All Tags

Day 22: Flashing EchoKit from the Command Line | The First 30 Days with EchoKit

· 5 min read

Yesterday, we covered how to flash EchoKit firmware using the ESP Launchpad web tool. It's simple, browser-based, and works great for most people.

But if you're a developer — or if you've ever had the web flasher fail on you — you might want something more direct.

Today is about flashing EchoKit from the command line.

This approach is faster, gives you more control, and works even in situations where the browser-based tool might struggle. Plus, it feels more... natural for anyone comfortable with a terminal.

Why Flash from the Command Line?

The ESP Launchpad web tool is fantastic for getting started. It removes all friction: no toolchains, no dependencies, just click and flash.

But the command line approach has some real advantages:

  • Speed: Once set up, flashing is significantly faster
  • Reliability: Some USB configurations or systems don't play nicely with the web flasher — the CLI tool often works where the browser fails
  • Automation: If you're flashing multiple devices or setting up a fleet, CLI is scriptable
  • Developer experience: If you're already in the terminal, why leave it?

Best of all? The setup is straightforward if you have Rust installed.

Prerequisites: Rust Toolchain

The espflash tool we'll use is built in Rust. If you already have Rust installed, you can skip this step.

If not, installing Rust is quick:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

This will install Rust, Cargo, and the standard toolchain. Once it's done, restart your terminal or run:

source $HOME/.cargo/env

Install espflash

With Rust ready, install the flashing tools:

cargo install cargo-espflash espflash ldproxy

This will:

  • Install espflash — the actual flashing utility
  • Install cargo-espflash — a cargo helper for building and flashing
  • Install ldproxy — a linker proxy needed for some ESP32 builds

The compilation might take a few minutes. Once it's complete, you'll have the espflash command available globally.

Flashing EchoKit DIY

To flash EchoKit DIY from the command line, follow these steps:

Step 1: Download the Firmware

curl -L -o echokit https://echokit.dev/firmware/echokit_boards

Step 2: Connect Your Device

Use a USB cable to connect your computer to the USB-C port labeled OTG on your EchoKit DIY.

Your computer may prompt you to accept or trust the USB device — accept it.

Step 3: Flash the Firmware

With the device connected, run:

espflash flash --monitor --flash-size 16mb echokit

The flags are:

  • --flash-size 16mb: Sets the flash size for EchoKit DIY
  • --monitor: Keeps the connection open after flashing so you can see the serial output
  • echokit: The firmware file you downloaded

espflash will detect your serial port and ask you to select it if multiple ports are available. Once flashing completes, you'll see the device boot up in the terminal, and the screen will display the QR code.

Flashing EchoKit Box

Flashing EchoKit Box from the command line follows the same process, with just a couple of differences.

Step 1: Download the Firmware

For EchoKit Box, use the Box firmware binary:

curl -L -o echokit https://echokit.dev/firmware/echokit_box

Step 2: Connect Your Device

Use a USB cable to connect your computer to the USB-C port labeled SLAVE on your EchoKit Box.

Your computer may prompt you to accept or trust the USB device — accept it.

Step 3: Flash the Firmware

The command is identical to the DIY version:

espflash flash --monitor --flash-size 16mb echokit

espflash will detect your EchoKit Box, flash the firmware, and monitor the serial output. When it's done, the device will reboot and display the QR code on screen.

Troubleshooting

If something doesn't work, here are a few things to try:

  • Try the other USB port: On EchoKit DIY, if flashing fails on the OTG port, try the TTL port instead. Sometimes the USB data connection behaves differently on each port.
  • Force a reset: If the device isn't detected, press the RST button to reset it, then immediately run the flash command again.
  • Check USB permissions: On Linux, you might need to add your user to the dialout group or adjust udev rules for USB serial devices.

Both Approaches Have a Place

After yesterday's browser-based flashing and today's CLI approach, you now have two ways to keep your EchoKit firmware up to date:

  • ESP Launchpad (browser): Great for beginners, quick updates, or when you're already in a GUI
  • espflash (CLI): Faster, more reliable in tricky environments, and perfect for developers

Neither is "better" — they're different tools for different situations.

The important thing is that you're comfortable updating your firmware. EchoKit is an active, evolving project. New features land regularly. Being able to flash confidently — whether via browser or terminal — means you can stay current with the latest improvements.


Want to get your own EchoKit device and start building?

Join the EchoKit Discord to share your setup and see what others are building with their voice AI agents.

Day 21: Flashing EchoKit DIY and EchoKit Box from the Browser | The First 30 Days with EchoKit

· 3 min read

Over the last 20 days, we’ve been building EchoKit step by step — from voice pipelines and local models to MCP tools and personalities.

Today, I want to focus on something more foundational:

firmware.

In this post, we’ll walk through how to flash EchoKit firmware using the ESP Launchpad web tool. This approach is direct, dependency-free, and works entirely from the browser.

Want to learn to flash via the command line? We will talk about it tomorrow.

EchoKit Firmware Is Open Source — and Always Moving

EchoKit’s firmware is fully open source. The code is public, changes are visible, and improvements land continuously. Bugs are fixed in the open, and new capabilities are added incrementally.

Because of this, the firmware repository doesn’t stand still. As EchoKit evolves, the firmware evolves with it — whether that’s protocol adjustments, performance improvements, new device capabilities, or better defaults.

This means EchoKit is not a “flash once and forget” system.

You should expect to refresh the firmware from time to time. More importantly, you should feel comfortable doing so.


Flashing with ESP Launchpad

ESP Launchpad allows you to flash prebuilt EchoKit firmware directly from a browser, with no local toolchains or dependencies to install.

You can open the ESP Launchpad page here, which is preconfigured with EchoKit firmware profiles:

https://espressif.github.io/esp-launchpad/?flashConfigURL=https://echokit.dev/firmware/echokit.toml

The flashing process is exactly the same for EchoKit Box and EchoKit DIY. The only difference is which firmware profile you select.

EchoKit Box

To flash EchoKit Box, open the flashing page, connect the device to your computer via USB, select EchoKit Box, and click Flash button.

The flashing process takes a few minutes. Once it completes successfully, the page will prompt you to reset the device. After rebooting, you’ll see the QR code screen, which indicates the firmware is ready. That’s it.

EchoKit DIY

EchoKit DIY uses the exact same flashing flow.

The only difference is the firmware profile you choose. On the same flashing page, connect your DIY device via USB, select EchoKit DIY, and click Flash button.

Everything else is identical: the flashing takes a few minutes, you reset the device when prompted, and the QR code appears after reboot.

Once flashing is complete, move on to the next step: connecting the EchoKit server and your device so EchoKit can talk to you.

Why Firmware Refreshing Is Important

Many products try to hide firmware updates as much as possible.

EchoKit does the opposite.

EchoKit is an open system. You’re encouraged to explore it, modify it, and keep it up to date. Firmware updates are a normal part of the workflow, not an exception.

Using a browser-based flasher removes most of the friction. There are no toolchains to install, no OS-specific instructions, and no dependency management. This makes firmware updates accessible even to non-programmers.