Firmware Build and Flash

The firmware project is SOFTWARE/ESP32C3固件 and uses ESP-IDF. The current local project was built with ESP-IDF 5.5; use a compatible installed ESP-IDF environment.

cd SOFTWARE/ESP32C3固件
source "$HOME/esp/v5.5.2/esp-idf/export.sh"  # adjust to your ESP-IDF installation
idf.py build
idf.py -p /dev/ttyACM0 flash
idf.py -p /dev/ttyACM0 monitor

Replace /dev/ttyACM0 with the enumerated serial device. On Linux, serial permission failures usually require appropriate dialout membership and a new login session.

Configuration

main/imu_config.h selects:

  • sensor type, currently ICM-20948;

  • visualizer quaternion output;

  • Wi-Fi transport;

  • ICM-20948 data-ready interrupt trigger;

  • magnetometer usage and VQF timing behavior.

Configure Wi-Fi through idf.py menuconfig; do not commit sdkconfig files containing local credentials. The current UDP v2 packet includes sensor_time_us, captured at the sampling/VQF update path. See Protocol for packet and TCP clock-sync details.

Flashing Checklist

  1. Build before connecting a battery-powered node.

  2. Confirm the detected chip and flash size in the esptool.py log.

  3. After flashing, observe boot logs and verify that the device emits v2 (type=0x03) packets.

  4. Use a separate node ID for each physical device.

  5. Complete magnetometer and body calibration only after the node output is stable.