Forge-X on the Adventurer 5M: how to ditch FlashMaker and run Klipper anyway

Forge-X is an open firmware mod that runs real Klipper on the Flashforge Adventurer 5M and 5M Pro, with Moonraker, Fluidd, Mainsail, and a lighter screen. It gets you out from under FlashMaker and FlashForge's one-button calibration. Here's the whole process, including the calibration you have to redo after flashing.

The Flashforge Adventurer 5M is a solid little printer. The software around it is the weak part. Stock, you're locked to FlashMaker and FlashForge's own Orca, the screen is sluggish, and every calibration is one big opaque button you trust without seeing how it got there.

Forge-X fixes that. It's an open firmware mod that runs real Klipper on the 5M and 5M Pro, with Moonraker, Fluidd, Mainsail, a lightweight replacement screen, and fixes for the E0011 and E0017 errors that plague the stock setup. Everything is FOSS, everything is readable, and you get actual control over the machine instead of the handful of toggles FlashForge lets you touch.

One thing up front. This voids your warranty and you can brick the printer if you're sloppy. It's recoverable, but recovery sometimes means serial cables or soldering. Don't do this on a machine you can't afford to break. After any install you have to recalibrate the bed mesh and Z offset before printing, because the mod can reset parameters and printing without that is how you scrape the nozzle into the plate.

If that hasn't scared you off, here's the whole process.

What you need

Step 1: flash it

Grab the latest release from the DrA1ex/ff5m releases page on GitHub. The release page hands you a ready-named file for your machine, so no manual renaming. Pick the Adventurer5M image for the base 5M or the Adventurer5MPro image for the Pro, do not unpack it, and drop it on the root of a FAT32 USB drive.

Power the printer off, plug the drive in, power it on. It installs itself and shows a finished message on screen. Eject the drive and reboot. It boots into Forge-X now.

Worth bookmarking while you're here: the project README, the install guide, the calibration guide, the slicing guide, and the FAQ.

Step 2: get it on the network and update it

On the stock screen, join your Wi-Fi. That's your one comfortable window to do it, because the stock screen has the easiest network setup. While you're there, toggle your camera on from the stock screen if you've got one, so the mod's lighter camera path is actually visible. Find the printer's IP in your router, and set a static reservation for it so it doesn't wander later. Then open one of the two web interfaces. Forge-X ships both Fluidd and Mainsail, and the choice is mostly taste. Fluidd at http://<printer-ip>/fluidd/ is lighter and a touch simpler. Mainsail at http://<printer-ip>/mainsail/ is denser, with more tuning panels and richer print history. I run Fluidd, but everything here works in either one. From here on you live in the browser.

Worth a quick word on the two, since the docs bounce between them. Both are Klipper web interfaces that talk to Moonraker under the hood, so they expose the same macros (START_PRINT, SET_MOD, the calibration commands). Fluidd is the lighter front end, easier on a small screen and a little friendlier. Mainsail packs in more: a beefier G-code viewer, per-axis presets, and a better look at config. Neither is wrong. If you come from stock OrcaSlicer and just want to click start, Fluidd. If you want to babysit the machine and inspect histories, Mainsail. The commands in this post are identical on both, so pick one and stick with it.

Go to Configuration, Software Update, and update everything. The mod updates over the air, though only within the same major version. Minor jumps are OTA, major jumps need a USB reflash (which keeps your settings).

Step 3: set the things I'd set on day one

Not all of these are required. A few of them I consider near mandatory, two are optional. Run these in the console in Fluidd or Mainsail.

There's also a whole set of parameters you can browse with LIST_MOD_PARAMS and read individually with GET_MOD PARAM=name. That's the actual manual, better than anything FlashForge gives you.

Step 4: calibrate

The mod keeps the same calibration macros but expects you to run them yourself instead of one stock button. All of these are in the Calibration section of Fluidd or Mainsail, or the console. NEW_SAVE_CONFIG after each one, or it doesn't stick.

  1. Bed leveling screws: BED_LEVEL_SCREWS_TUNE EXTRUDER_TEMP=130 BED_TEMP=60. This one is physical, and it's optional. Skip it unless your bed is actually unlevel. It probes each corner, tells you which screw under the bed to turn and by how much, and you repeat until it's happy. If your first layer comes out flat and even already, you don't need it.
  2. Bed mesh: AUTO_FULL_BED_LEVEL EXTRUDER_TEMP=220 BED_TEMP=60. This builds a height map of the plate so the nozzle knows where the surface is across the whole print. It's the one you don't skip. Here's the gotcha that bit me. The metal plate expands when hot, so take the mesh at the temperature you actually print at. Mesh it at 80 and print at 60 and you'll chase phantom drift all night. Save it under PROFILE=auto if you're on the Feather screen, PROFILE=MESH_DATA if you kept the stock screen. If the probe keeps brushing the plate during meshing, revisit the mesh offset from step 3 and bring it up to 0.3 or 0.4 mm instead of fighting the geometry.
  3. PID: PID_TUNE_BED TEMPERATURE=60 and PID_TUNE_EXTRUDER TEMPERATURE=220. This tunes the heater feedback so the bed and nozzle hold their target temperatures without overshooting or wandering. Run the bed one at your print's bed temp and the hotend one at the nozzle temp. Do it whenever the machine's temperature behavior starts feeling off.
  4. Shaper: ZSHAPER. This tunes the input shaper, which smooths out the toolhead's stops so it doesn't ring and echo through the frame after fast moves. If you've ever seen ghosting or ringing in a print, this is what fixes it. The plots it generates show up in Fluidd or Mainsail.
  5. NEW_SAVE_CONFIG after each one.

The Z offset is the one that makes people nervous, and reasonably. On the Feather screen it's manual, which means you're the one dialing it. The trick is to approach from the safe side. Too high just means the filament doesn't stick, which costs you a test print. Too low scrapes the bed. So start a touch high and lower in small steps.

Rather than print bare squares and eyeball them, print this Z-offset calibration print designed for exactly this. It gives you a grid you can read first-layer quality off of directly. Look at the first layer, then nudge in 0.05mm steps with SET_GCODE_OFFSET Z=0.05 or Z=-0.05 until it lays down flat and even, then save it with SET_GCODE_OFFSET Z=<value>, then load_zoffset and NEW_SAVE_CONFIG. A healthy offset lands somewhere around -0.3 to +0.3mm. If you need a full millimetre, something else is wrong and you should fix the baseline, not bury it in a big offset.

Step 5: make OrcaSlicer talk to it

OrcaSlicer used to be the FlashForge path. It's still the right slicer, you just point it at Moonraker instead of FlashForge's cloud. You also don't need the FlashForge-branded Orca build. The vanilla OrcaSlicer from the OrcaSlicer site is the same app and talks to Forge-X the exact same way, so use whichever builds you prefer.

Start G-code (keep START_PRINT on one line, or it breaks):

START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]
M190 S[bed_temperature_initial_layer_single]
M104 S[nozzle_temperature_initial_layer]

If you switch to the Feather screen, drop the M190 and M104 lines and keep only the START_PRINT line. That's the whole Feather start block:

START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]

End G-code:

END_PRINT

There's one more Orca thing worth doing. Forge-X has MD5 checking on G-code files to catch corrupted uploads, which is a real cause of AD5M print failures. The check is on by default in the mod (check_md5), but it only helps if your sliced files actually carry a checksum, so you wire in the repo's addMD5 post-processing script.

Setup: download the script from the repo root (addMD5.sh for Linux/macOS, addMD5.bat for Windows). On Linux/macOS make it executable first with chmod +x ./addMD5.sh (and on macOS clear the quarantine with xattr -d com.apple.quarantine ./addMD5.sh if Finder blocks it). Then in OrcaSlicer open Print Profile, go to Other, find the Post-Processing Scripts field, and point it at the full path to the script. Save the profile. From then on every G-code you slice gets its checksum appended automatically, and the printer cancels prints whose checksum doesn't match.

The one gotcha: the script path has to have no spaces in it, or your shell mangles the call and you get an error. Drop it somewhere like ~/bin/addMD5.sh, not ~/My 3D Files/scripts/.

The Feather screen, if you want it

Forge-X ships with a couple of replacement screens because the stock one eats RAM. Feather is a minimal readout, display only, about 2MB instead of the stock screen's 10 to 15. If you switch to Feather you give up touch control and manage everything from Fluidd or Mainsail in the browser, which is how you're working anyway. Switch with SET_MOD PARAM="display" VALUE="FEATHER" while the printer is idle. Guppy is the other option if you want on-screen pause and resume.

When something goes wrong

The uninstall path is real and it works. Flash the uninstall image to take the mod off cleanly, or the factory image for a total reset. If the printer won't boot at all, the recovery image exists, start with the dry run version. The repo docs cover all of it, and the FAQ is genuinely useful.

Should you bother

If you're happy with FlashMaker and the one-button calibration and you never want to read a Klipper log in your life, stop the warranty anxiety and don't install this. The stock machine works.

I wanted control over how the thing actually behaves, and I wanted to stop being confined to the software FlashForge chose for me. Forge-X is the answer if that itch sounds familiar. The calibration is more hands-on than stock, but it's also more honest about what it's doing, and once you've set it up, the printer is more reliable day to day because you know why it behaves the way it does. And it's open source, which is the whole point of owning a hobby printer in the first place.