Browse Learn topics

Learn/GcodePilot/Connection & firmware

Firmware Flashing & Updates

Updated v2.4.3

At a glance

  • Flash a factory-blank ESP32 or ESP32-S3 over USB from inside JetCad3 — no esptool, no drivers, no Python
  • Five builds: No Radio (recommended, full feature set), WiFi/WebUI, Bluetooth, and both ESP32-S3 variants
  • Chip-family guard refuses to write an S3 image to an ESP32, and every image is checksum-verified before it's written
  • Newer firmware arrives without a JetCad3 update — the dialog checks, downloads, and verifies it for you
  • Revert to the firmware your copy of JetCad3 shipped with at any time, instantly and offline
  • Install from a file for shop computers with no internet connection

JetCad3 ships its own FluidNC fork and can write it to a controller over USB with no external tools — no esptool, no Python, no vendor utility. It works on a factory-blank board, because the ESP32's built-in boot loader is always reachable, so you can provision a brand-new controller from the same app you cut with. Open it from Machine Config → Connection → Flash FluidNC firmware, or from the connection badge menu on a machine that's already talking.

Run this fork if you're on FluidNC. It's required for firmware-native jogging and for plasma work (g-code controlled AVTHC), on top of stock FluidNC's feature set.

Picking the right build

Five images ship with every copy of JetCad3:

  • ESP32 — No radio (recommended). No WiFi or Bluetooth stack, so the most free flash and RAM and the least interference. The complete GcodePilot feature set, including firmware-native jogging.
  • ESP32-S3 — No radio (recommended for S3 boards). The same, for S3 controllers with native USB.
  • ESP32 — WiFi and ESP32-S3 — WiFi. WiFi with the built-in web interface. Jogging falls back to host-streamed motion.
  • ESP32 — Bluetooth. Bluetooth serial instead of WiFi, for phone or pendant control.

Match the build to the chip on your board. If you pick wrong, the flasher refuses — it identifies the chip through the boot loader first and will not write an ESP32-S3 image to an ESP32 or vice versa.

Flashing

Pick the port and the variant, then Erase & Flash. If the board is currently connected in GcodePilot, JetCad3 releases the port first — the flasher and the connection can't share it. Progress runs in the dialog; when it finishes, the board reboots straight into the new firmware.

Flashing erases the whole chip, which resets the controller to defaults. Reconnect afterwards and push the machine's configuration back to the board — see Firmware Settings for the config.yaml sync. Nothing on your machine profile is lost; it just has to be sent again.

Keeping firmware current

Firmware used to be pinned to whatever your copy of JetCad3 shipped with, so a firmware-only fix couldn't reach your machine until the next JetCad3 release — however small the fix.

Now the dialog checks for a newer build each time you open it and tells you what it finds. What's new shows what changed before you commit to anything, and Download & install fetches it, checks it, and puts it in place in a few seconds. Then flash the controller as usual.

The check runs quietly in the background and never blocks you. If the computer is offline or behind a firewall it says so and steps out of the way — you can still flash the firmware you already have, and the dialog always states plainly which one that is.

Going back, and going offline

The firmware that shipped with your copy of JetCad3 is never overwritten. A downloaded build is kept alongside it, so Revert to the version shipped with JetCad3 puts you back on known-good firmware immediately, with nothing to download and no internet needed.

For a shop computer with no network at all, Install from file… takes the same firmware bundle from a USB stick or folder with exactly the same checks — download it once on a connected computer and carry it over.

What gets verified

Every image is checked against its published fingerprint before it is allowed anywhere near your install, and checked again on its way to the board. If anything is off — a half-finished download, a damaged file, a bundle missing one of the five variants — the update is refused outright and the firmware you already had is left exactly as it was. There is no state where a bad download leaves you unable to flash.