Skip to main content

Firmware Flashing

Here you can find all program files and source code links related to the Otto DIY robot.

Source Code Repositories

ESP32+AI Version Source Code

  • GitHub Repository: Xiaozhi ESP32 AI Robot Source Code
  • Features: Includes all features such as Wi-Fi connection, voice recognition, AI dialogue
  • For: Users interested in development and customization

Original Arduino Source Code

Firmware Downloads

ESP32+AI Version Firmware

VersionRelease DateFeature DescriptionDownload Link
v2.0.4-22025-11-17Added WeChat Mini Program control/calibration/customization features2.0.4-2
v2.0.42025-10-31Updated to Xiaozhi 2.0.4 with added fixed actions and AI custom programmed actions, see MCP tools in User Manual for details2.0.4
v1.4.42025-6-13Added initial position calibration, "Dialogue: calibrate left foot to 10 degrees/-10 degrees"1.4.4
v1.4.32025-6-13fix(ota): Fixed OTA upgrade crash bug1.4.3
v1.4.22025-6-51. Code standardization
2. Fixed theme switching bug
1.4.2
v1.4.02025-6-51. Updated to Xiaozhi 1.7.0
2. MCP protocol control robot actions
3. GIF expressions inherit lcdDisplay, Otto-specific theme
1.4.0
v1.3.12025-5-271. Added task priority to prevent listening state action slowdown
2. Action task resident, no detach to solve "jerking" bug, but increases power consumption
3. Home restoration 500
1.3.1
v1.22025-4-26Added arm function code1.2
v1.12025-4-23Updated to Xiaozhi 1.6.0, fixed sudden "paralysis" bug1.1
v1.02025-4-9Initial version with basic movement and voice control features1.0

Download the latest firmware, compatible with all circuit board versions

WeChat Mini Program

Version v2.0.4-2 supports robot control, calibration, and customization through WeChat Mini Program. Scan the QR code below to use:

WeChat Mini Program QR Code

WeChat Mini Program QR Code

Flashing Tools

  • ESP32 Flash Download Tool: Download Link
    • For Windows systems
  • ESPTool (Command Line): pip install esptool
    • For Linux, macOS, and Windows

Merge Firmware Command

If you need to merge firmware yourself, use the following command:

esptool.py --chip esp32s3 merge_bin -o merged-flash.bin --flash_mode dio --flash_size 16MB 0x0 build/bootloader/bootloader.bin 0x100000 build/xiaozhi.bin 0x8000 build/partition_table/partition-table.bin 0xd000 build/ota_data_initial.bin 0x10000 build/srmodels/srmodels.bin

Flashing Guide

Make sure the battery is installed before flashing!!!!!!!!
  1. Download the latest firmware file (.bin)
  2. Download and install the flashing tool
  3. Connect Otto to computer via USB (Note: If ESP32 is being flashed for the first time, you need to hold the BOOT button before turning on the switch!!!!!!!!)
  4. Launch the flashing tool and select the correct COM port
  5. Set flashing parameters as follows:
    • Baud Rate: 921600
    • Flash Address: 0x0
    • Select the downloaded firmware file
  6. Click "Start" to flash
  7. After flashing is complete, restart the board!!!!!!!!

download1

Figure 1: Select ESP32S3, serial port

download2

Figure 2: Select program, COM, start download

FAQ

  1. What to do if flashing fails?

    • Check USB connection
    • Hold the BOOT button on the board while flashing
    • Try reducing baud rate to 115200
  2. Firmware compatibility issues?

    • Confirm you are using the recommended ESP32 model
    • Check if peripheral hardware matches the reference design

Acknowledgments to the Following Open Source Projects: