Skip to content

Firmware flashing fails over CAN #836

@dkomeza

Description

@dkomeza

Summary

When using VESC Tool to flash firmware over a TCP bridge that forwards messages to the CAN bus, the firmware upload appears to complete successfully, but the new firmware is not applied — the old firmware still runs after reboot.

Setup

  • Host: VESC Tool (release 6.05)
  • Bridge: repo ESP32-S3 running a TCP server that :
    • Accepts incoming UART-formatted packets over TCP
    • Extracts data from the packets
    • Forwards inner command over CAN to correct ID - I've copied the code from the vesc and vesc-tool.
    • Wraps CAN responses back into uart packets
  • Target: VESC 6 (via CAN) running firmware 6.05

What works:

  • Reading motor/app config over CAN
  • Live data
  • Writing/applying config

What doesn't work:

  • Flashing new firmware via CAN over TCP
  • VESC Tool shows flashing as successful, but on reboot, firmware version remains unchanged
  • USB flashing works fine

Observations

  • All CAN commands are forwarded correctly
  • All chunks appear to be sent
  • The VESC reboots, but doesn't apply the firmware, no LED status codes

Repro Steps

  1. Connect VESC Tool to the bridge via TCP
  2. Select target ID
  3. Flash firmware from VESC Tool
  4. Wait for reboot — firmware version doesn't change

Ask

Could you clarify:

  • Any required response format or timing for firmware flashing over CAN except the commands sent from the VESC_TOOL?
  • What minimal sequence is required to guarantee flashing is committed?

Thanks for your work — everything else over CAN works perfectly!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions