Skip to content

11. Open Source Hardware - From Fibers to Fabric

Open Source Hardware - From Fibers to Fabric

Research and Ideation

Making open source hardware is a task I never in my life thought I’d tackle and I especially didn’t think I would enjoy it so much.

In the lab, before the week even began, we had many conversations about what hardware we would like to create or which existing hardware we would like to make open source, giving it a new life spam.

Considering factors like how many days we have to accomplish this task, re-use and re-purpose at the back of our minds and looking at the already existing hardware in the lab we concluded to make one of the older 3D printers that was no longer in use, not just open source but functioning a little differently.

Inspiration

MIT researchers have created a beautiful origami technology.

Another inspiration is Fabricademy Alumni's final Project

Saskia Helinska

Re-purposing a 3D Printer

The 3D printer that we have in the lab, which we could make open-source was MakeBot Replicator 2, collecting dust on one of the shelves in the Fab Lab Dilijan. My task this week was to work on flashing the firmware.

Firmware? I think this was the first time I was even hearing this term. I’d heard of hardware, I’d heard of software but I was clueless on what firmware was.

Firmware, as my quick research concluded, was kind of like a software, but not exactly. It is the ‘microcode’ that is embedded in the motherboard (the hardware). It is what dictates the functions of your hardware, allowing the functions to work as they should. While softwares have regular updates and bug fixes, firmwares may have updates but not at all as often, if at all in their lifespam. They are usually stored in a “Non Volatile Memory”, meaning that they do not lose the information even after power is removed. To change a hardware’s firmware, you will need to physically change the memory chip. Often these chips are not designed to be changed at all.

“Flashing” is another way to reprogram the chip. Now, I was instructed with the task of understanding how I can flash the firmware of Replicator 2 and to find open source firmware that would work with the 3D machine we were tackling.

After extensive research, reading reddit and github threads, watching youtube videos and asking chat GPT I concluded that we have three main options. Each option presented itself with their positive and negative aspects and it was time to discuss it with the team.

From 3D printer to 2D heater?

Our aim was to alter the 3D printer in a way and change the nozzle in a way that, when given a Gcode, it applied heat to two layers of vinyl sheets, ‘printing’ designs for soft robotics experiments. This would mean that we wouldn’t need to use the vinyl cutter, the laser cutter (for the inner parchment paper) and iron or hot press (if available). It would be faster, it would be more sustainable and we would be re-purposing an old 3D printer, which otherwise would not be used.

Now before I go into the details of the open source firmwares, I would like to tell you a little about the MakerBot Replicator 2.

MakerBot Replicator 2

Photo by Svetlana Khachatryan

Produced in 2012, the MakerBot Replicator 2 is a single head 3D printer, using PLA filament. With the release of this product MakerBot became a proprietary product offering company, saying their farewells to being open source. Terrible idea if you ask me. It claims to be user friendly and I believe 13 years ago it was, in comparison to other products available in the market. However, to generate a GCode, you would need to work with Maker Bot Desktop software and the format that it recognises is .x3g. Softwares like OrcaSlicer, CuraSlicer or PrusaSlicer do not export in this format, which means that you are tied to this software if you wish to use this printer. Their new generation printers also use a different format (makerbot) and the MakerBot software that you have access to through a browser, also does not export in the x3g format.

We did manage to install the MakerBot Desktop software and export a design Lilit Barseghyan had made for testing purposes in the x3g format. However, for a reason we still have not yet understood, the Replicator 2 would choose a file from the inserted SD card to print with its own volition, completely disregarding our choices - making our choice to make it open source more valid! The desktop software is also not as well equipped as the OrcaSlicer.

Back to the hardware, it was important to see the motherboard- to understand which firmware could be used to flash it and how. It uses Mightyboard Rev H.

Open Source Firmwares

After some research I understood that our three options were

  • Sailfish

  • Klipper

  • Marlin

Sailfish is the obvious, easy choice and has been successfully used many times to flash the firmware of the Replicator 2. However, Sailfish has not been updated by the developers for many years now, which means there are no bug fixes. Moreover, Sailfish uses the .x3g format as well, which limits the slicer option. Trying to install Sailfish to understand the flashing process better was also unsuccessful, as I use a macbook with the most recent macOS and I would need windows or a much older macOS system.

GitHub Thread

Klipper and Marlin are both advanced open source firmwares, offering extensive customization options. However, flashing the firmware using Klipper or Marlin was a complicated task. We would need to actually alter the mightyboard, use Raspberry Pi if using Klipper.

GitHub Thread

General Comparison

Firmware Difficulty to Install Printer Support Level Performance Level Feature Set Quality Best For
Sailfish Easy to Medium Fully supported High performance Strong feature set Users who want the best, most stable version of the original Replicator 2
Klipper Very difficult / Advanced Not officially supported Extremely high Extremely rich features Tinkerers who want maximum speed, tuning, and a modern UI
Marlin Hard No official MightyBoard support Moderate performance Good feature set Modders replacing the electronics or rebuilding the printer

Pros and Cons

Firmware Hardware Requirements Software Requirements Skill Level Needed Notes
Sailfish - Replicator 2 with MightyBoard Rev H
- USB cable
- Computer (Windows/macOS)
- ReplicatorG Sailfish Edition or MakerWare/FlashPrint
- MightyBoard USB drivers
Beginner to Intermediate Easiest option; no hardware mods needed; LCD and buttons fully supported
Klipper - Replicator 2
- Raspberry Pi (3B+ or 4 recommended)
- microSD card
- USB cable
- MainsailOS/FluiddOS or Raspberry Pi OS
- Klipper, Moonraker, Web UI
- Custom printer.cfg
Advanced / Expert LCD unsupported; requires pin mapping; highest performance but most complex setup
Marlin - Replicator 2
- (Recommended) Replacement control board (SKR, Duet, etc.)
- Marlin source code
- PlatformIO or Arduino IDE
- Custom pin & hardware configuration files
Advanced (Firmware Development Level) Not supported on MightyBoard without deep code changes; best if replacing electronics

Cost Comparison

Firmware Path Typical Additional Cost* What You’re Paying For / What’s Included
Sailfish $0–$20 Most likely nothing extra — uses existing MightyBoard, USB, PC or laptop; maybe small cost for a USB cable or driver CD if missing
Klipper ~$35–$60 A Raspberry Pi (~$35–$50) + microSD card & power supply (or extras) needed to run Klipper/host — uses existing printer electronics
Marlin (stock MightyBoard) High Risk/Variable — often not practical You’d need to create custom firmware for MightyBoard — time cost only; but no guarantee of full functionality (so potentially $0 but no working printer)
Marlin (with new 32-bit board) ~$40–$100+ Cost of a replacement 32-bit controller board (e.g. 32-bit SKR/Duet-type board) — requires rewiring / mods

With all the pros and cons of all three firmwares, I initially concluded that it would be ideal to flash the firmware with Klipper. Our Replicator 2 Mightyboard Rev H gives us the possibility of using Klipper with Raspberry Pi connected to the Mightyboard (if done correctly according to many threads I read).

Klipper

There are many different sources, youtube videos and Github pages that thoroughly explain how to flash Klipper on almost ANY 3D printer. I especially was keen on using Klipper, because I wanted to be free of using the x3g format. However, flashing with Klipper would include processes like installing Klipper on a Raspberry Pi, which in turn would connect to the Mightyboard and you would need Mainsail or Fluidd software interfaces (both created for Klipper) to run this whole act.

Raspberry Pi is a single green circuit board, the size of a credit card that is actually like a whole computer.

Once Raspberry Pi is installed, the Klipper is installed on the Raspberry Pi and the Raspberry Pi is connected to the Mightyboard of the Replicator 2, then the command comes from the Raspberry Pi (or technically from the software that you use to give the commands to Raspberry Pi). If all these processes are done correctly, then the Mightybord does what is commanded by the Raspberry Pi and the whole hardware actually becomes open-source. Sounds simple enough, right?

It's really not THAT complicated, if you have the time to sit and do all the steps, carefully and correctly (especially as a first timer, you don't want to flash it and fail). However, time is usually not our friend while working on projects at Fabricademy.

As a team, we decided to use Sailfish. Given the limited time we had and what our goal was with the MakerBot Sailfish seemed like the obvious answer.

Sailfish

Flashing Sailfish Using ReplicatorG

Step One

If you are using the latest version of MacOS, borrow a friends laptop that has windows or a much older version of MacOS (the last update from Sailfish was in 2017).

Download and Install ReplicatorG 40r34

Step Two

Turn on the Replicator 2 and connect to your computer using a USB cable.

Step Three

Select the machine type - Replicator 2

Machine → Machine Type → MakerBot Replicator 2 (Sailfish)

Step Four

Upgrade Firmware Mode

Machine → Upload New Firmware → (A) Select Board →

Click Next → (B) Select Firmware Version

Select Sailfish 7.7

Step Five

Select the serial port - Make sure that your computer and Replicator 2 are properly connected.

Step Six

When ready, and with all fingers crossed Click the upload button to begin uploading the firmware

And if you are lucky like us then you will have had uploaded the firmware successfully.

Step Seven

Back to the Replicator 2, on the screen you have to reset to default

Utilities → Reset to Defaults

Exporting from SVG to X3G

The flashing of the firmware using Sailfish and ReplicatorG was as simple as all the research had concluded. However, the difficulty was generating a GCode from an SVG file, which then in turn we could convert to x3g format. Let me refrase that, which then would actually 'print' what was intended. This part took the longest and it was the hardest. Each to their own, I took a path of installing GPX, which initially woud work on PrusaSlicer and export two files every time - one .gcode file and another .x3g file.

Installing GPX

The fastest way to do this was through Terminal in MacOS

Step One

Open Terminal in your macOS paste the code and press ENTER

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Step Two

brew install gpx
To check if it has worked correctly
/opt/homebrew/bin/gpx -?
If GPX is installed correctly, you will see a help text.

Step Three

Manually test if the GPX is working correctly by generating a .gcode file on the desktop then run this code

/opt/homebrew/bin/gpx -p -m r2 ~/Desktop/file.gcode
If it is working correctly, then you will have generated the same file in .x3g format.

PrusaSlicer and how I failed.. at first

To 'trick' PrusaSlicer to generate .x3g format I did the following steps.

Step One

On the top bar there is Configuration → Configuration Assistant

You need to create a MakerBot compatible printer and this is where you do it.

Step Two

In the Configuration Assistant → Custom Printer → Custom Printer Setup

Give your printer a name that you like!

Step Three Choose your Firmware Type - Sailfish (MakerBot)

Step Four

By clicking Next you should set the bed size

x: 285
y:153

z: 155

Nozzle temperature: 170C (keep in mind that we are building a machine that will heat up two vynils and we do not want to melt them)

The bed temperature can stay empty or 0C as Replicator 2 bed does not heat up.

Click Finish and you have yourself a custom printer!

Step Five

In Print Settings → Output Options use this code

/opt/homebrew/bin/gpx -p -m r2

In Printer → Custom G-code you need to edit the

Start Gcode

; --- Replicator 2 / Sailfish start ---
M73 P0 ; enable build progress
M103 ; extruder off
G21 ; set units to millimeters
G162 X Y F3000 ; home XY to max endstops
G161 Z F1200 ; home Z to min endstop
G92 X0 Y0 Z0 ; zero the axes
G1 Z5 F1200 ; lift nozzle
G1 X-3 Y13 F3000 ; move to front-left corner
M73 P1 ; progress 1%
; --- heating handled by GPX ---
Note: Please note that there is another comment regarding the Start Gcode further down in the documentation.

End Gcode

; --- Replicator 2 / Sailfish end ---
M104 S0 ; extruder off
M73 P100 ; show 100% progress on display
G1 Z150 F1000 ; raise Z to safe height (optional)
G162 X Y F3000 ; home XY to max endstops
M18 ; disable all motors
; --- end ---

Make sure you save after entering the codes by clicking on the flopy disk button on the top

Ideally now when you export a .gcode, there should be two files exported automatically one with .gcode and the other .x3g

I tried many different codes for the Print Settings → Output Options, many of them gave an error and some didn't give an error but didn't create an .x3g file.

I worked on this for hours and failed! In the end, as our time is limited, I gave up and just created a shortcut which would very easily convert .gcode files to .x3g format.

GPX Shortcut

This is for Mac users

Step One

Open Shortcuts App and click on the + button to add a shortcut.

Rename it to whatever you prefer. I named mine Gcode → X3G

Step Two

On the right click on the ⓘ button and select Use as Quick Action and Finder

Step Three

Next to the ⓘ button there is a folder button. Click on that and in the search tab search shell. Click on Run Shell Script

Paste this code

/opt/homebrew/bin/gpx -p -m r2 "$1" "${1%.*}.x3g"
Select:

Shell → zsh

Input → Shortcut Input

Pass Input → as augmented

Leave Run as Administrator unchecked

Step Four

Now that the shortcut is created, you can check if it works by Right Click on any .gcode file → Quick Actions → Gcode→x3g

And you should have yourself an .x3g file

It all worked but I didn't give up this challenge. No one wants to do two actions for a one action job. After even more research I found this thread In a Prusa Forum:

And decided to do it as is in the thread.

Creating a gpx.sh wrapper

And un-failing

Step One

Open Terminal on your mac and run this code

mkdir -p ~/bin
Press Enter and then run the following code

nano ~/bin/gpx.sh

Step Two

In nano paste this code

#!/bin/bash

# $1 = temp G-code file that PrusaSlicer generated
# SLIC3R_PP_OUTPUT_NAME = final G-code path in your chosen folder
# We just change the extension to .x3g

OUTPUT="${SLIC3R_PP_OUTPUT_NAME%.*}.x3g"

/opt/homebrew/bin/gpx -p -m r2 "$1" "$OUTPUT"
Then press ctrl+O (write out) then Enter, then ctrl+X (exit)

Step Three

Back in Terminal enter this code

chmod 775 ~/bin/gpx.sh
and press Enter

Step Four

Now back in PrusaSlicer, in your created printer go to Print Settings → Output Options and enter a new code

/Users/yourusername/bin/gpx.sh

Please fill in your username as is in your Mac in the username line after Users/

Now my Prusa Slicer finally exports both the .gcode and .x3g!

Exporting .x3g however is not enough. Making sure that the .x3g file actually prints what we intend it to is the harder part. We made on average 15 exports of .x3g files a day for three days, to understand what the Replicator 2 understands with the perimeters we give. There are a few main factors to consider :

  • nozzle heat (170C was our golden middle)

  • bed z axes and the pressure that the nozzle will apply (this is mainly done manually on the MakerBot). Flashing with sailfish has a few cons and one is that you can no longer use Leveling the Build Plate in Utilities.

  • current position - or the lack of it- experimenting with perimeter settings to generate .gcodes that don't start 'printing' mid air. The plate showed the design in the middle of the bed on PrusaSlicer, yet the Replicator 2 started the design mid air.

Expectations vs Reality

Our biggest problem was that the machine started "printing" not on the bed but way before the edge of the x and y axes even began. After many experiments, I managed to correct this error by editing the Start G-code.

; --- Replicator 2 / Sailfish start (vinyl) ---
M73 P0                 ; enable build progress display

; Heat nozzle (vinyl welding)
M104 S170 T0           ; set nozzle to 170C
M109 S170 T0           ; wait for nozzle to reach 170C

G21                    ; units = millimeters
G90                    ; absolute positioning

; Homing
G162 X Y F3000         ; home X/Y to MAX endstops (Replicator 2 style)
G161 Z F1200           ; home Z to MIN endstop

G92 X0 Y0 Z0           ; set current position as 0,0,0

; Move up and into a safe area inside the bed
G1 Z5 F1200            ; lift nozzle a bit
G1 X210 Y170 F3000       ; move farther inside the build area (50mm in X+Y)

M73 P1                 ; update progress
; --- end of start G-code ---

Notice the X and Y = X210, Y170. This allowed the nozzle to start heating the vinyl inside the bed. It is easy to change these two parimeters in the settings Printer → Custom G-code.

As a result, I was able to heat a couple of my original design within the borders of the bed!

Results

The problem with this design was that it was too small in comparison to the nozzle size (0.4mm) and some of the lines touched each other, blocking the air from passing. But not to worry, Lilit Barseghyan had already made a design that we could test out.

Re-Creating a nozzle

For heating two vinyls together we needed the nozzle to change a little. It would be ideal to have a nozzle that was like a ball pen, however, we didn't have enough time to create something like this. What we did instead, and it worked better than we could have hoped for, was making the tip of the nozzle we did have, round and smooth.

At the Fab Lab Dilijan, we have an open source hardware Metal Man, created by Fab Academy Alumnis Mkhitar Evoyan and Zhirayr Ghukasyan. Mkhitar Evoyan kindly showed us how to use the Metal Man.

It was a very simple process. We put the nozzle of the 3D printer in the 3 Jaw chuck spindle and turned it on with medium speed. While the spindle turned the nozzle, we held a sanding tool for sanding metal against the nozzle head, curving it as it turned.

We also used a finer sandpaper to make it nice and smooth!

And voila

Bill of Materials (BOM)

# Item Quantity Cost Source / Comment
1 MakerBot Replicator 2 (used, like new) 1 0 USD FLA surplus / already available
2 SD card 2–4 GB (formatted FAT16) 1 0 USD Available at FLA
3 Heat-Transfer Vinyl ~200–300 A4 sheets 0.5–0.8 USD per sheet Used scraps
4 Double-sided tape or painter’s tape 1 roll 2–4 USD To fix HTV sheet to the bare glass/PEI bed
5 0,4 printing nozle 1 0 USD

Tital Cost: ~ 5 USD

PrusaSlicer Settings

Print Settings → Layers and Perimeters

Layer Height

Setting Value
Layer height 0.2 mm
First layer height 0.2 mm

Vertical Shells

Setting Value
Perimeters 1 (minimum)
Spiral vase Off

Horizontal Shells

Setting Top Bottom
Solid layers 0 0
Minimum shell thickness 0 mm 0 mm

Quality (Slower Slicing)

Setting Value
Extra perimeters if needed Off
Extra perimeters on overhangs (Experimental) Off
Ensure vertical shell thickness Disabled
Avoid crossing curled overhangs (Experimental) Off
Avoid crossing perimeters On
Avoid crossing perimeters – Max detour length 0 mm / %
Detect thin walls On
Thick bridges Off
Detect bridging perimeters Off

Advanced

Seam

Setting Value
Seam position Nearest
Seam gap distance 0%
Staggered inner seams Off

Scarf Joints

Setting Value
Scarf joint placement Nowhere
Scarf joint only on smooth perimeters On
Scarf start height — (disabled)
Scarf joint around entire perimeter — (disabled)
Scarf joint length 20 mm (disabled)
Max scarf joint segment length 1 mm (disabled)
Scarf joint on inner perimeters Off
Setting Value
External perimeters first On
Fill gaps On
Perimeter generator Classic

Fuzzy Skin (Experimental)

Setting Value
Fuzzy Skin None
Fuzzy skin thickness 0.3 mm
Fuzzy skin point distance 0.8 mm

Only One Perimeter

Setting Value
Single perimeter on top surfaces Disabled
Only one perimeter on first layer On

Print Settings → Infill

Infill Settings

Setting Value
Fill density 0%
Fill pattern Stars
Length of the infill anchor 600%
Maximum length of the infill anchor 50 mm or %
Top fill pattern Monotonic
Bottom fill pattern Monotonic

Ironing

Setting Value
Enable ironing Off
Ironing type All top surfaces
Flow rate 15%
Spacing between ironing passes 0.1 mm

Reducing Printing Time

Setting Value
Automatic infill combination Off
Automatic infill combination – Max layer height 100%
Combine infill every 1 layer

Advanced

Setting Value
Solid infill every 0 layers
Fill angle 45°
Solid infill threshold area 70 mm²
Bridging angle
Only retract when crossing perimeters Off
Infill before perimeters Off

Skirt and Brim

Skirt

Setting Value
Loops (minimum) 0
Distance from object 6 mm
Skirt height 1 layer
Draft shield Disabled
Minimal filament extrusion length 0 mm

Brim

Setting Value
Brim type No brim
Brim width 0 mm
Brim separation gap 0 mm

Support Material

Setting Value
Generate support material Off
Auto-generated supports On
Overhang threshold
Enforce support for first 0 layers
First layer density 90%
First layer expansion 3 mm

Raft

Setting Value
Raft layers 0
Raft contact Z distance 0.1 mm
Raft expansion 1.5 mm

Support Options

Setting Value
Style Grid
Top contact Z distance 0.2 mm (detachable)
Bottom contact Z distance Same as top
Pattern Rectilinear
With sheath On
Pattern spacing 2.5 mm
Pattern angle
Closing radius 2 mm
Top interface layers 3 (heavy)
Bottom interface layers Same as top
Interface pattern Rectilinear
Interface spacing 0 mm
Interface loops 0
Support on build plate only Off
XY separation 50%
Don’t support bridges On
Sync with object layers Off

Organic Supports

Setting Value
Maximum branch angle 40°
Preferred branch angle 25°
Branch diameter 2 mm
Branch diameter angle
Branch diameter (double walls) 3 mm
Tip diameter 0.8 mm
Branch distance 1 mm
Branch density 15%

Speed

Print Moves

Setting Value
Perimeters 2 mm/s
Small perimeters 2 mm/s
External perimeters 2 mm/s
Infill 80 mm/s
Solid infill 20 mm/s
Top solid infill 15 mm/s
Support material 2 mm/s
Support interface 100%
Bridges 60 mm/s
Over bridges 0
Gap fill 2 mm/s
Ironing 15 mm/s

Dynamic Overhang Speed

Setting Value
Enable dynamic overhang Off
Speed 0% overlap 15 mm/s
Speed 25% overlap 15 mm/s
Speed 50% overlap 20 mm/s
Speed 75% overlap 25 mm/s

Non-Print Moves

Setting Value
Travel 60 mm/s
Z travel 8 mm/s

Modifiers

Setting Value
First layer speed 2 mm/s
First layer solid infill 0
First layer over raft interface 30 mm/s

Acceleration

Acceleration Control

Setting Value
External perimeters 0 mm/s²
Perimeters 0 mm/s²
Top solid infill 0 mm/s²
Solid infill 0 mm/s²
Infill 0 mm/s²
Bridge 0 mm/s²
First layer 0 mm/s²
First object layer over raft 0 mm/s²
Wipe tower 0 mm/s²
Travel 700 mm/s²
Short-distance travel accel 300 mm/s²
Default 300 mm/s²

Auto Speed

Setting Value
Max print speed 2 mm/s
Max volumetric speed 0 mm³/s

Pressure Equilizer

Setting Value
Max volumetric slope + 0
Max volumetric slope – 0

Extrusion Width

Setting Value
Default 0.45
First layer 0.42
Perimeters 0.45
External perimeters 0.45
Infill 0.45
Solid infill 0.45
Top solid infill 0.4
Support material 0.35
Auto width calc Off

Overlap

Setting Value
Infill/perimeter overlap 0%

Flow

Setting Value
Bridge flow ratio 1

Slicing

Setting Value
Slice gap closing radius 0.049 mm
Slicing mode Regular
Slice resolution 0
G-code resolution 0.0125 mm
Arc fitting Disabled
XY size compensation 0
Elephant foot compensation 0

Arachne

Setting Value
Transition threshold angle 10°
Filter margin 25%
Transition length 100%
Distribution count 1
Min perimeter width 85%
Min feature size 25%

Output Options

Sequential Printing

Setting Value
Complete individual objects Off

Other

Setting Value
G-code substitutions (none)

Post- Processing Script

/Users/yourusername/bin/gpx.sh

Printer Settings

Size & Coordinates

Setting Value
Bed shape Rectangular (285 × 153 mm, origin 0,0)
Max print height 155 mm
Z offset 0 mm

Capabilities

Setting Value
Extruders 1
Single Extruder Multi-Material Off

Firmware

Setting Value
G-code flavor Sailfish (MakerBot)
G-code thumbnails Off
Supports stealth mode On
Supports remaining times Off
Supports binary G-code Off

Advanced

Setting Value
Use relative E distances Off
Use firmware retraction Off
Use volumetric E Off
Enable variable layer height On
Prefer clockwise movements Off

Sequential Printing Limits

Setting Value
Radius 20 mm
Height 20 mm

Custom G-Code

Start G-Code

; --- Replicator 2 / Sailfish start (vinyl) ---
M73 P0                     ; enable build progress display

; Heat nozzle (vinyl welding)
M104 S170 T0               ; set nozzle to 170C
M109 S170 T0               ; wait for nozzle to reach 170C

G21                        ; units = millimeters
G90                        ; absolute positioning

; Homing
G162 X Y F3000             ; home X/Y to MAX endstops (Replicator 2 style)
G161 Z F1200               ; home Z to MIN endstop

G92 X0 Y0 Z0               ; set current position as 0,0,0

; Move up and into a safe area inside the bed
G1 Z5 F1200                ; lift nozzle a bit
G1 X210 Y170 F3000         ; move farther inside the build area (50mm in X+Y)

M73 P1                     ; update progress
; --- end of start G-code ---
Start G-code Options

Setting Value
Emit temperature commands automatically On

End G-Code

; --- Replicator 2 / Sailfish end (vinyl) ---
M73 P100                   ; show 100% progress

; Turn off heaters
M104 S0 T0                 ; nozzle off

; Lift a bit from the part
G91                        ; relative moves
G1 Z10 F1000               ; go up 10 mm
G90                        ; back to absolute

; Park the head safely inside the bed
G1 X10 Y10 F6000           ; move near front-left corner

; Optionally home XY instead of parking:
; G162 X Y F3000           ; home X/Y to max endstops

M18                        ; disable all motors
; --- end ---

Extruder

Extruder Settings

Setting Value
Nozzle diameter 0.4 mm
Max volumetric speed 0 mm³/s
Extrusion multiplier 1
Filament diameter 1.75 mm
Min layer height 0.07 mm
Max layer height 0.3 mm

Retraction

Setting Value
Length 0.5 mm
Lift Z 0 mm
Wipe while retracting Off
Unretract extra length 0 mm
Minimum travel distance 0 mm
Retract on layer change Off
Retract before wipe Off

Retraction (tool change)

(Disabled due to single extruder)

Setting Value
Retraction length 0
Extra length 0
Lift Z 0
Restart distance 0

Other Extruder Settings

Setting Value
Nozzle temperature 170 °C
First layer temperature 170 °C
Diameter 0.4 mm
Extruder offset X: 0 mm, Y: 0 mm
Compatible printers All compatible