This article is part of the Prusa XL Technical Series on INVESTEGATE.de
All guides assume that the Prusa XL Fundamentals are correct.
If not, start here:
Prusa XL Basics – Technical Fundamentals

Why I Built This Firmware
I am proud to introduce my first custom firmware release for the Original Prusa MK3.5 / MK3.5S.
The main reason I started working on this project was simple: the filament load and unload behavior always bothered me on my modified setup.
On a normal printer, this may not be a big issue. But with my Bondtech LGX Shortcut setup, the stock filament handling did not always feel ideal. I could work around it manually by using Move Axis to load or unload filament by hand. That works when the printer is idle.
But during a print, especially during an M600 filament change, that workaround is not really available.
In my case, this sometimes caused filament jams, failed filament changes and even failed prints when I could not unload or reload the filament properly. That was the point where I wanted better control directly from the printer firmware.
This v1.0 release is the first result of that work. It adds menu-based tuning options for filament load, unload and M600 behavior, especially for LGX / LGX Shortcut and similar third-party extruder setups. And it also adds M500 save feature via terminal of Octoprint or Pronterface
It is based on the official Prusa-Firmware-Buddy v6.5.3 – This firmware is unofficial. It is not made, approved or supported by Prusa Research or Bondtech.
Download
The v1.0 release is available on GitHub:
Important Warning
This is unofficial custom firmware.
Use it at your own risk.
Before flashing, save your current printer settings and calibration values. After flashing, verify all important settings and run a small test print before using the printer normally again.
At minimum, save the full M503 EEPROM output.
Appendix Seal and Custom Firmware Flashing
For MK3.5 / MK3.5S custom firmware flashing, the appendix seal on the xBuddy board must be broken first.
According to Prusa, breaking this seal does not void the printer warranty. However, unofficial custom firmware is still used at the user’s own risk, and Prusa does not take responsibility for damage caused by unknown or unverified custom firmware.
Official Prusa instructions: Flashing custom firmware
Installation Overview
The easiest way to transfer the firmware to the printer is via Prusa Connect.
USB flashing is also possible.
When the flashing process starts, the printer will show a warning that unsigned firmware was detected. Select Ignore to continue.
In my testing, previous calibration values were retained after flashing and also after downgrading again. Still, do not rely on that. Save your values first.
Recommended process:
- Save your current
M503output. - Save your Live-Z / First Layer Calibration value.
- Transfer the
.bbffirmware file to the printer. - Start the firmware update.
- Confirm the unsigned firmware warning with Ignore.
- After flashing, check
M503,M851. - Test and set filament load, unload distances in the experimental menu.
- Run a first layer check.
- Run a small test print.
Opening the Experimental Menu
On the printer:
- Open Settings.
- Press and hold Return.
- Keep holding until Experimental Settings opens.
Menu Color Coding
The custom Experimental menu uses color coding to separate different types of options:
- 🟧 Orange = custom options from this firmware mod
- 🟩 Green = Prusa developer options that can also appear when building stock firmware from source
- 🟥 Red = planned or future untested options, not used in v1.0
All orange options included in v1.0 were tested thoroughly on my own setup. No errors were found during testing.
Main Features
Extra Experimental Menu Entries
v1.0 adds several new entries to the Experimental menu:
- Print finish melody
- Probe X position
- Probe Y position
- Reset probe position
- Initial insert length
- Fast load length
- Unload length
- Unload cooling retract
- Unload ramming scale
- Reset load/unload
- Enable EEPROM save
- Reset M500 tuning
These options are mainly intended for advanced users and modified printer setups.
Direct M851 X/Y Controls
This firmware adds direct M851 X/Y controls in the printer menu.
These are direct M851 X/Y values, not relative offsets.
Stock Prusa default: (Reset defaults)
M851 X23.00 Y5.00
Bondtech LGX Shortcut target used by me:
M851 X23.00 Y12.00
Important:
M851 X23.00 Y12.00 Z<your Live-Z>
Do not copy another printer’s Z value. Your Live-Z must be calibrated on your own printer!
Load / Unload Tuning
This release adds adjustable values for filament handling:
- Initial insert length
- Fast load length
- &
- Unload length
- Unload cooling retract
- Unload ramming scale
These settings are useful for LGX / LGX Shortcut and similar third-party extruder setups where the stock filament handling may not fit perfectly.
Initial Insert Length
Controls the first slow insert / load-to-gears movement.
Used by:
- Dashboard autoload
- Menu → Filament → Load
- M600 filament change during print
Fast Load Length
Controls the later hot fast-load movement.
This remains separate from Initial insert length.
Unload Length
Controls the unload distance. 0 to 199mm
Unload Cooling Retract
Executed after ramming and before the remaining unload.
The duration is 5 seconds. The selected distance controls the retract speed.
Examples:
5 mm = approx. 1 mm/s
10 mm = approx. 2 mm/s
15 mm = approx. 3 mm/s
0 mm disables this step. Up to 20mm.
Unload Ramming Scale
Controls ramming behavior during unload.
Typical behavior:
0 % = ramming disabled
100 % = default Prusa Stock behavior
1-150 % = scaled ramming
The print-time filament change path now respects the custom filament handling values.
Persistent Storage via M500
This firmware adds support for persistent saving of the custom tuning values via M500.
That means the custom menu values can be saved permanently instead of being temporary runtime values only.
Screenshots






Recommended LGX / LGX Shortcut Values
Recommended starting values for my Bondtech LGX Shortcut setup:
Probe X position: 23
Probe Y position: 12
Initial insert length: 15 mm
Fast load length: 10 mm
Unload length: 45 mm
Unload ramming scale: 10 %
Unload cooling retract: 7 mm
Print finish melody: sure :D
Enable EEPROM save: user preference / advanced use
Prusa Stock Defaults
Default values:
Probe X position: 23
Probe Y position: 5
Initial insert length: 45 mm
Fast load length: 45 mm
Unload length: 45 mm
Unload ramming scale: 100 %
Unload cooling retract: 0 mm
Print finish melody: Off
Enable EEPROM save: Off
Test Status
All orange custom options included in v1.0 were tested thoroughly on my setup.
Tested before release:
- Firmware boots
- Menu structure works
- Load / unload works
- M600 filament change during print works
- Probe X/Y menu works
- M851 X/Y synchronization works
- M502 preserves M851 Z / Live-Z
- Print finish melody works as optional feature
mk3.5_release_bootbuild completed successfully- Final test prints completed successfully
No errors were found during testing of the orange custom mod options.
Hardware Limitation of My Testing
I only have a Bondtech LGX Shortcut setup.
That means I cannot properly test other extruders, hotends, heaters or thermistors myself.
Additional hardware support should be developed and tested together with users or developers who actually own that hardware.
This is especially important for heater and thermistor support. That area is safety-critical and must be handled carefully with correct temperature tables, limits, PID behavior and thermal runaway protection.
Not Included in v1.0
The following features are not included in v1.0:
- No Revo-specific support
- No heater / thermistor profiles
- No hotend temperature limit changes
- No extruder current menu
- No microstep switching menu
- No motion limit profile system
- No automatic extruder profile selection
v1.0 is intentionally focused on a smaller feature set that could be tested properly.
Planned Future Ideas
Possible future topics:
- Better third-party extruder profiles
- Possible hotend / thermistor support if tested on real hardware
- More motion / acceleration related controls
- Better UI grouping
- Red color for new untested experimental options until tested
These are ideas, not promises.
Future custom options that are added before full real-world validation should be marked clearly until they have been tested properly.
Reporting Issues and Feature Requests
If you report an issue or suggest a feature, please include as much information as possible.
Feature requests and suggestions can be submitted here on GitHub.
Additional developers and testers are welcome! 🙂


