What firmware should I run on an old Ultimaker 1.5.7?

Totally unrelated to MPCNC, but the diversity of experts here along with a super helpful attitude makes me think it’s worth a shot. I have an old laser/cnc/3d printer that’s using an Ultimaker 1.5.7 board under the covers. My primary use case is laser, but I’d like to use it with the latest software (e.g. Inkscape or LaserGRBL) and something tells me I’m going to hit issues since the board is 8yrs old so I’m trying to get something relatively recent on it. The current firmware is a modified Repetier-Firmware.

Is there a modern firmware option that I can load on this machine? In a way, it’s kind of like an MPCNC - a flexible motion platform

I haven’t looked hard, but it looks a lot like the ramps. There is a vanilla Marlin configuration for it:

It looks like the board is ultimaker.

I think you would be headed on a pretty good head start if you used V1CNC_Ramps from MarlinBuilder releases. Then change the board to Ultimaker.

You will need to enable the laser pwm features after that. But Estlcam and lightburn can generate gcode for Marlin CNC machines.

1 Like

Is there a way to back up the current firmware? What do you mean when you say “change the board to ultimaker”? What should I do with the github link? Or maybe that’s how I change the board. Any instructions you can point me to?

Can I just flash with XLoader like I did with my v1 RAMBO?

Thanks for the quick reply!

Not that I know of. But the manufacturer should have copies of the RepRap firmware available somewhere (I thought I was open source).

There is a line in the configuration.h file with the board type. The Ramps version says something like BOARD_RAMPS. You need it to say something like BOARD_ULTIMAKER.

That link is to the configuration files to take the normal, vanilla Marlin release (like 2.0.9.2) and convert it to something you can compile and flash on your board, and probably install in the ultimaker printer. It will be useful to you, because it is a good reference configuration. If something isn’t working, you can compare to that and see what is different.

This is definitely going to be a learning experience. You will have to look up instructions on configuring Marlin. If you haven’t done it before, it is daunting. But it is easier than it looks, and it is rewarding.

That worked because we compiled to a firmware.hex first. In a unique configuration like yours, you need to make changes to the configuration and then compile the code to make a firmware.hex. Once you have that, you can use Xloader. But if you go to all the trouble to compile your own firmware, platformio has an upload button to flash it at the end of the compile process.

It sounds like you haven’t done this kind of thing before (programming for arduinos, or configuring Marlin). I can tell you it is a good skill to have. It is rewarding to know you can make changes and repair things yourself. It will give you a lot more options in future purchases. But there is a pretty significant amount of things you will need to think about and learn. There will be a lot of trial and error. I am 95% sure you will come out the other side with it working, but it totally depends on your grit and interest in learning.

1 Like

Thanks for the detailed reply. Lots of good info to go research. I’m an Arduino hobbyist so I’m somewhat familiar with those concepts. I’ve never done much with customizations/compiling 3D/CNC firmware. You mentioned Marlin, before I go down that rabbit hole. Are there any other firmware options I should consider?

Marlin is probably the most common firmware for 3D printing. and runs on the greatest selection of boards.

If you’re using it exclusively for laser, you might be able to get GRBL running on it, however, it may be kind of “out there” in terms of support.

For a modern firmware, Marlin is probably your best choice, particularly if you’re multi-purposing your machine. (At least for the board you have.)

For “backing up the firmware” the last 3D printer I bought, came with Marlin on it, but did not include the configuration.ini file, so I had no idea what parameters it was set for. I “backed up” the firmware by replacing the control board with another similar model, and then I messed with the replacement board until I got good results. Considering that RAMPS based boards are relatively cheap, I thought it was a reasonable option. (Maybe $30 CAD, I think…) This is another option. Buy an inexpensive board, particularly if you have polulo style drivers, and install your firmware on it, and while you’re tuning/tweaking, you still have the option to just swap the original board back in and run.

Made some progress. Figured out how to backup the firmware and EEPROM so feeling safe to start experimenting. I also found a dump of the EEPROM settings which I think has some of the info I need for configuring Marlin. I think Extr.1 refers to the stepper for the hotend. I have zero interest in using this as a 3D printer so I’m tempted to ignore and not bother finding the appropriate values to update.

<Repetier-Firmware-EEPROM>
	<epr pos="75" type="2" value="115200">Baudrate</epr>
	<epr pos="129" type="3" value="0.000">Filament printed</epr>
	<epr pos="125" type="2" value="0">Printer active</epr>
	<epr pos="79" type="2" value="0">Max. inactive time</epr>
	<epr pos="83" type="2" value="60000">Stop stepper after inactivity</epr>
	<epr pos="3" type="3" value="160.0000">X-axis steps per mm</epr>
	<epr pos="7" type="3" value="160.0000">Y-axis steps per mm</epr>
	<epr pos="11" type="3" value="320.0000">Z-axis steps per mm</epr>
	<epr pos="15" type="3" value="40.000">X-axis max. feedrate</epr>
	<epr pos="19" type="3" value="40.000">Y-axis max. feedrate</epr>
	<epr pos="23" type="3" value="20.000">Z-axis max. feedrate</epr>
	<epr pos="27" type="3" value="25.000">X-axis homing feedrate</epr>
	<epr pos="31" type="3" value="25.000">Y-axis homing feedrate</epr>
	<epr pos="35" type="3" value="10.000">Z-axis homing feedrate</epr>
	<epr pos="39" type="3" value="5.000">Max. jerk</epr>
	<epr pos="47" type="3" value="0.300">Max. Z-jerk</epr>
	<epr pos="133" type="3" value="0.000">X home pos</epr>
	<epr pos="137" type="3" value="0.000">Y home pos</epr>
	<epr pos="141" type="3" value="0.000">Z home pos</epr>
	<epr pos="145" type="3" value="165.000">X max length</epr>
	<epr pos="149" type="3" value="165.000">Y max length</epr>
	<epr pos="153" type="3" value="165.000">Z max length</epr>
	<epr pos="51" type="3" value="100.000">X-axis acceleration</epr>
	<epr pos="55" type="3" value="100.000">Y-axis acceleration</epr>
	<epr pos="59" type="3" value="25.000">Z-axis acceleration</epr>
	<epr pos="63" type="3" value="150.000">X-axis travel acceleration</epr>
	<epr pos="67" type="3" value="150.000">Y-axis travel acceleration</epr>
	<epr pos="71" type="3" value="100.000">Z-axis travel acceleration</epr>
	<epr pos="880" type="0" value="0">Autolevel active (1/0)</epr>
	<epr pos="200" type="3" value="100.000">Extr.1 steps per mm</epr>
	<epr pos="204" type="3" value="100.000">Extr.1 max. feedrate</epr>
	<epr pos="208" type="3" value="20.000">Extr.1 start feedrate</epr>
	<epr pos="212" type="3" value="10000.000">Extr.1 acceleration</epr>
	<epr pos="216" type="0" value="3">Extr.1 heat manager</epr>
	<epr pos="217" type="0" value="255">Extr.1 PID drive max</epr>
	<epr pos="245" type="0" value="70">Extr.1 PID drive min</epr>
	<epr pos="218" type="3" value="4.0000">Extr.1 PID P-gain/dead-time</epr>
	<epr pos="222" type="3" value="0.5000">Extr.1 PID I-gain</epr>
	<epr pos="226" type="3" value="15.0000">Extr.1 PID D-gain</epr>
	<epr pos="230" type="0" value="255">Extr.1 PID max value</epr>
	<epr pos="231" type="2" value="0">Extr.1 X-offset</epr>
	<epr pos="235" type="2" value="0">Extr.1 Y-offset</epr>
	<epr pos="239" type="1" value="1">Extr.1 temp. stabilize time</epr>
	<epr pos="250" type="1" value="140">Extr.1 temp. for retraction when heating</epr>
	<epr pos="252" type="1" value="30">Extr.1 distance to retract when heating</epr>
	<epr pos="254" type="0" value="255">Extr.1 extruder cooler speed</epr>
</Repetier-Firmware-EEPROM>

After some tinkering, I was able to map most of the EEPROM info into Marlin’s configuration.h. Here’s a file comparison of the most recent v1 build vs my edits: V1CNC_Ramps-2.0.9.2 Modified For Boxzy - Diff Checker. Beyond mapping info from Repitier’'s EEPROM, I’m not sure what other data I need to supply. Does this look relatively “complete”? What’s the risk of building and trying to deploy this?

I was able to map most of the EEPROM values, but I gave up trying to map some of the values needed for 3D printing. I’ll never use that machine for 3D printer so seems safe to skip it.

<Repetier-Firmware-EEPROM>
    <epr pos="75" type="2" value="115200">Baudrate</epr> - Done
    <epr pos="129" type="3" value="0.000">Filament printed</epr> - Not Found
    <epr pos="125" type="2" value="0">Printer active</epr> - Not Found
    <epr pos="79" type="2" value="0">Max. inactive time</epr> - Not Found
    <epr pos="83" type="2" value="60000">Stop stepper after inactivity</epr> - Left at Marlin default of 1200
    <epr pos="3" type="3" value="160.0000">X-axis steps per mm</epr> - Done
    <epr pos="7" type="3" value="160.0000">Y-axis steps per mm</epr> - Done
    <epr pos="11" type="3" value="320.0000">Z-axis steps per mm</epr> - Done
    <epr pos="15" type="3" value="40.000">X-axis max. feedrate</epr> - Done
    <epr pos="19" type="3" value="40.000">Y-axis max. feedrate</epr> - Done
    <epr pos="23" type="3" value="20.000">Z-axis max. feedrate</epr> - Done
    <epr pos="27" type="3" value="25.000">X-axis homing feedrate</epr> - Done
    <epr pos="31" type="3" value="25.000">Y-axis homing feedrate</epr> - Done
    <epr pos="35" type="3" value="10.000">Z-axis homing feedrate</epr> - Done
    <epr pos="39" type="3" value="5.000">Max. jerk</epr> - Done
    <epr pos="47" type="3" value="0.300">Max. Z-jerk</epr> - Done
    <epr pos="133" type="3" value="0.000">X home pos</epr> - Not Found
    <epr pos="137" type="3" value="0.000">Y home pos</epr> - Not Found
    <epr pos="141" type="3" value="0.000">Z home pos</epr> - Not Found
    <epr pos="145" type="3" value="165.000">X max length</epr> - Done
    <epr pos="149" type="3" value="165.000">Y max length</epr> - Done
    <epr pos="153" type="3" value="165.000">Z max length</epr> - Done
    <epr pos="51" type="3" value="100.000">X-axis acceleration</epr> - Done
    <epr pos="55" type="3" value="100.000">Y-axis acceleration</epr> - Done
    <epr pos="59" type="3" value="25.000">Z-axis acceleration</epr> - Done
    <epr pos="63" type="3" value="150.000">X-axis travel acceleration</epr> - Done
    <epr pos="67" type="3" value="150.000">Y-axis travel acceleration</epr> - Done
    <epr pos="71" type="3" value="100.000">Z-axis travel acceleration</epr> - Same as X,Y
    <epr pos="880" type="0" value="0">Autolevel active (1/0)</epr> - Left Leveling options commented out
    <epr pos="200" type="3" value="100.000">Extr.1 steps per mm</epr> - Done
    <epr pos="204" type="3" value="100.000">Extr.1 max. feedrate</epr> - Done
    <epr pos="208" type="3" value="20.000">Extr.1 start feedrate</epr> - Not Found
    <epr pos="212" type="3" value="10000.000">Extr.1 acceleration</epr> - Done
    <epr pos="216" type="0" value="3">Extr.1 heat manager</epr> - https://www.repetier.com/dead-time-control/
    <epr pos="217" type="0" value="255">Extr.1 PID drive max</epr>
    <epr pos="245" type="0" value="70">Extr.1 PID drive min</epr>
    <epr pos="218" type="3" value="4.0000">Extr.1 PID P-gain/dead-time</epr>
    <epr pos="222" type="3" value="0.5000">Extr.1 PID I-gain</epr>
    <epr pos="226" type="3" value="15.0000">Extr.1 PID D-gain</epr>
    <epr pos="230" type="0" value="255">Extr.1 PID max value</epr>
    <epr pos="231" type="2" value="0">Extr.1 X-offset</epr>
    <epr pos="235" type="2" value="0">Extr.1 Y-offset</epr>
    <epr pos="239" type="1" value="1">Extr.1 temp. stabilize time</epr>
    <epr pos="250" type="1" value="140">Extr.1 temp. for retraction when heating</epr>
    <epr pos="252" type="1" value="30">Extr.1 distance to retract when heating</epr>
    <epr pos="254" type="0" value="255">Extr.1 extruder cooler speed</epr>
</Repetier-Firmware-EEPROM>