M2 Getting Started

This page is a guide to taking your freshly assembled or freshly unpacked, if you purchased an assembled machine, M2 from a pretty contraption on your desk, through setting up any needed Windows drivers, installing Pronterface, and starting your first print.

If you assembled your M2, perform another check that all electronics connections match http://makergear.wikidot.com/m2-electronics, and that they are all secure.


To begin this guide, an overview of the way your M2 works is in order. If you would like to skip the theory, and just get to setup, go to driver installation

All communication between your computer and M2 is done in a program called Pronterface or Printrun (available at https://github.com/kliment/Printrun, or http://koti.kapsi.fi/~kliment/printrun/ for a precompiled version). The way that the two communicate is with a protocol called "g-code." G-code is simply a set of commands that the firmware, running on RAMBo, can understand and execute. When you tell the printer to heat the nozzle to 180*C in Pronterface, Pronterface sends the command "M104 S180." The firmware receives this command, and executes it: it checks the temperature of the nozzle, and applies heat until the real world temperature matches the requested temperature. In the command "M104 S180", "M104" is the command, and "S180" is the parameter - in this case a temperature in degrees Celsius.

Another common command is "G1." "G1" is the general motor movement command. Sending "G1" with an axis code and number will move that axis to that point: "G1 X10" will move the X axis to where the firmware thinks 10mm is; "G1 X20 Y15" will move X to 20mm, and Y to 15mm.

A better understanding, and a practical use, of g-code will be covered in the Pronterface section.


The motherboard that powers the M2 is an Arduino-compatible board called RAMBo. This board acts, and can be communicated with, just like an Arduino. RAMBo boards shipped by MakerGear after October 3, 2012 have a white sticker on the power input connector. If your M2 does not have a white sticker on the power input connector, it is an Arduino device. The following section covers installation for these different devices by operating system.


For all operating systems (Windows, Mac and Linux), you will need a program to communicate with the printer. This guide uses the free and open source option, Printrun, available at https://github.com/kliment/Printrun . There are precompiled versions available at http://koti.kapsi.fi/~kliment/printrun/.

While there are other options, both FOSS (Repetier-Host, etc.) and proprietary (the excellent Creator by Simplify3D, more information at http://www.makergear.com/products/creator), this guide will provide instructions for Printrun/pronterface.

The default temperature settings in Printrun/Pronterface are incorrect for the M2. Please use the temperatures included with your printer.

Windows Installation

RAMBo Driver Download

Download and unzip the driver mapping INF file from the RepRap site here.

Arduino Driver Download

You need to install the Arduino IDE from http://arduino.cc/en/Main/Software to acquire the correct driver files.


Windows does not automatically understand when a USB device needs to be mapped to a USB-to-Serial interface. Windows contains native support for USB-to-Serial in the usbser.sys driver. We just need to get Windows to map the M2 to that driver.

  1. Power on your M2 by plugging the 6-position black power connector to the rear of the RAMBo board, and plugging in the two power supplies.
  2. Plug the USB cable's squarish side into the RAMBo USB port, then the flat side into a USB port on your Windows computer.
  3. Windows will spin for a bit trying to find and install a driver, then decide that it cannot install it.
  4. Click Start, then type "Device Manager" and press Enter. This brings up the Windows Device Manager. Alternately this can be accessed in Windows 7 by right-clicking My Computer, Properties; Device Manager is in the list on the left side. In XP, right-click My Computer, Properties; Device Manager is under the Advanced tab.
  5. In Device Manager, you will be shown a list of all devices connected to your computer, including the logical structure of the computer's internal components. The section we are interested in is usually "Other Devices." Under that heading you should have an "Unrecognized Device." If you do not, check under "Universal Serial Bus controllers."
  6. To confirm that your Unrecognized Device is your M2, disconnect the USB cable and watch Device Manager. If the Unrecognized Device disappears, reconnect the USB cable and proceed.
  7. Right click the Unrecognized Device and click "Update Driver Software." Then click "Browse my Computer for driver software," and on the next page browse to the folder on your computer where you extracted the INF file from the RepRap site (for RAMBo), or the Arduino IDE under e.g. arduino-1.0.1\drivers, and click Next. Windows should then select the correct driver. For the older Arduino device, if Windows asks you which driver to install, select "Arduino Mega 2560 R3."
  8. In Device Manager, your Unrecognized Device should have now changed into an "Arduino Mega 2560 R3" or "RAMBo 3D Printer Electronics Board", with a COM port after it, under the "Ports" heading. Make note of which COM port it is installed as (COM3 is common), we will need that information shortly.

Mac Installation

MacOS contains the right kernel support for converting the RAMBo USB interface to a serial format. When you power up the M2 and first plug in the M2 USB cable, your Mac will bring up a window asking you to set up the phone number for the serial device; this window can be closed, except to note the proper device identifier (e.g. /dev/cu.usbmodem621 or similar). This device ID will be used in Macpronterface below.


Now that your computer can communicate with M2, it is time to begin doing so. Download and extract Printrun (Windows) or Macpronterface (Mac) if you have not done so already. Once extracted, run pronterface.exe inside \dist. You will see a window nearly identical to the one in the image below, sans annotations.

Name Function Notes
COM Port (or Port) Selects the COM port to connect to Clicking Port will refresh the dropdown list of active COM ports. For Mac, use the device ID noted previously, e.g. /dev/cu.usbmodemXXX
COM Speed Selects COM port communication speed Default of 115200 works with M2
Connect Connects to printer, once port and speed are selected
Monitor Printer Enables constant temperature reporting Click/check to enable, recommend enabling
Print controls Controls print commands Covered below
Manual motor controls Manual control of X, Y and Z axes Covered below
Heater Controls Manual control of nozzle and bed temperature Select a temperature from the dropdown menu, or type in a custom temperature, and click Set to set the temperature.
Extruder controls Extrude and retract filament Will not work if nozzle temperature is below 170*C; top number is distance to extrude or retract, bottom number is speed to move at.
Communication log Log of all messages to and from the printer Any errors, issues or warnings will appear here; if something is amiss, check the log first.
G-code entry Manual entry of G-code to send to the printer Covered below
Custom button creator Create custom UI buttons Covered below
Unlabeled buttons Custom buttons, covered below

As this is probably your first time connecting to your M2, you should confirm that all subsystems are working correctly. Once you have selected your previously noted COM port, and set the speed to 115200, click Connect. The communication LEDs on RAMBo should flash, and several lines of messages should scroll in the Communication log.

You are now connected to your M2.

Motor check


Now that you are connected, you can begin testing everything - start first with the X, Y and Z motors, by clicking the -X 10 button. The X axis, including the extruder and hotend, should move 10mm to the left, when looking at the front of the machine. Clicking -Y 10 should move the build platform 10mm towards the rear of the machine. -Z 10 should move the platform up, towards the nozzle, 10mm. (If these seem counter-intuitive, remember that all measurements are made in reference to the nozzle - so -Z moves the platform up, but from the nozzle's point of view, the nozzle is moving Down towards the bed; Y is similarly inverted.) The image on the right has the axis directions labeled.

If any of the motors move in the wrong direction, or any command moves the wrong motor, make note of the issue, and follow the instructions in http://makergear.wikidot.com/m2-electronics to flip the connector. To summarize here - disconnect in Pronterface, remove ALL power input and USB connections from RAMBo, and then physically flip the connector for the motor you need to change the direction of. If two motors are swapped, swap the connectors for those two motors. If the Z motor does not move correctly, by either vibrating or making loud grinding noises, but without moving, make sure that the extruder motor is plugged into E0, and that the connector going from the harness to the Z motor is full connected.

Now that the X, Y and Z axes are moving correctly, you can check the extruder motor ("E" axis). To do so, reconnect power and USB, and reconnect to the printer in Pronterface. In the G-code entry box in the bottom right corner, send the command "M302". This tells the printer to allow movement of the extruder motor, when the hotend is not at printing temperature. Now click on the Extrude button, in the Extruder Controls section. Extrude should cause the drive gear inside the filament drive to move clockwise. Retract should move the drive gear counter-clockwise. If the directions are reversed, follow the motor connector flipping process from before - disconnect, power down, flip, etc.

Endstop check

Once you have confirmed that all axes respond correctly, it is time to check the endstops. First activate each endstop by hand, by pressing on the silver lever until it clicks. If any of the endstops cause the printer to reset, you have the endstop connector flipped where it connects to RAMBo. To flip the endstop connector, you do not need to power down, but it is still a good idea. If all three endstops seem to work fine, you can then confirm that by homing the axes. Start by manually moving the extruder all the way to the right of the X axis. Then, with your finger on, but not pressing, the X endstop lever, press Home X in Pronterface. Once the extruder has started moving, press and hold the X endstop lever. The extruder should stop moving. If it does not stop, press the white Reset button on the front of RAMBo (you may need a pen or similar if your fingers are not small enough to access it) or quickly remove the USB cable from the front of RAMBo. Now confirm that you have the correct endstop connector plugged into the correct socket - X to X-MIN, Y to Y-MIN and Z to Z-MIN. If everything appears correct, but still does not work, contact support.

Once the X endstop is responding correctly, check the Y and Z endstops in a similar manner - start with the bed all the way forward, and Home Y. Press and hold the Y endstop lever. Then, with the Z stage all the way down, press Home Z, and press and hold the Z endstop lever. Once the Z endstop responds correctly, you'll need to check the levelness of the bed, and then activation point of the endstop.

Bed leveling

To level the bed, first raise the Z stage up until the bed is ~1mm from the nozzle, and lock it in place by commanding Z+.1 in Pronterface. Then, by hand, move the bed forward and back while observing the distance between the nozzle and bed. Return the bed to the middle of its travel, and move the extruder left and right, again observing the distance between nozzle and bed. If either distance has a variance of a mm or more, start the leveling process by fully tightening all three bed leveling screws, that extend through the steel Spider Mounting Plate into the anodized aluminum Spider. Move the nozzle and bed so that the nozzle is in the center of the bed, and bring the entire Y stage up until the nozzle is ~.5mm away from the bed. Again check the distance between nozzle and bed as the bed moves forward and back, and the extruder moves left and right. Find the highest side, and then the highest corner of the bed. Bring the Y stage up so that it is ~.2mm from the highest corner.

The easiest way to understand how the M2's bed leveling system works, is to think of two see-saws. One see-saw's height is controlled on each side by the front and back bed leveling screws, and has the third bed leveling screw as its "fulcrum" (the line or point that the see-saw rotates around). The second see-saw's height is controlled by the unpaired third bed leveling screw, and has the two (front and back) bed leveling screws as its fulcrum. Changing any one screw changes the distance between the nozzle and bed across the whole bed. The easiest way to isolate and control this change is to first level the front to back travel, and then level the left to right travel.

If the highest corner is on the right half of the bed, you first will need to loosen the front and back screws until they are both above the third screw. Then find the highest corner again, and move the nozzle to the opposite Y side (if the highest corner is the front left corner, move the nozzle to the rear left corner, or vice versa), and bring that corner to the same distance from the nozzle as the first corner. Go back and forth between those two corners until the nozzle is the same distance from the bed during the whole movement. Once it is, move the nozzle to the center of the bed, and repeat the process using the single bed leveling screw, until the nozzle is the same distance from the bed during the complete left-right movement. Check that the bed is level across the entire travel, front-back on the left, center and right, and that all corners are level as well.

If you wish to be truly precise, you can redo the bed leveling process from your current, more level starting point. Use a folded over piece of paper as a gauge. Find the highest corner, and level all other corners to that one, confirming with your gauge. This may be overkill, however - one can visually level the bed to within .2mm across the whole surface, with a bit of practice.

Z endstop activation point/home distance

To set the Z endstop activation distance, first raise the bed, by hand, to the point where the Z endstop clicks (the red LED will also turn on). If the nozzle is more than ~.5mm away from the bed, you will need to use a 7mm wrench to adjust the trigger bolt. If the nozzle is less than .5mm away from the bed, you should be able to adjust the endstop position by hand. First lock the bed in position by pressing Z-.1 (the .1 is VERY important - if you command it to move -10mm, the motor WILL try to move the solid glass build surface through the equally solid brass nozzle. This is a bad thing, though if it happens accidentally, should not be damaging.) Then use the Z +.1 and -.1 commands to move the bed so that it is .1-.25mm away from the nozzle (a folded over piece of paper is a very good way to gauge this distance). Once the nozzle is in the correct location, rotate the Z endstop holder so that the lever just barely activates at the current position.

Once you have it set, check by Homing Z in Pronterface. If the nozzle is .1-.25mm from the bed in the center, you can continue. If it is not, repeat the above process.

Fan Check

If all endstops are working correctly, you can now check the final few things. First you'll want to confirm that your Bed fan is connected correctly. To control the Bed fan, you will use the g-code command "M106 S*", where * is a number between 0 and 255. The approximate power applied to the fan is (*/255)%. Most 50mm fans will not start below S240, sometimes higher, so to begin, send the command "M106 S255". The 50mm Bed fan should start spinning. If it does not, check first that the two pin connector from the fan to the harness is plugged in correctly - black to black, red to red. Also check that it is connected to the plug for the bed fan, and not the filament drive fan - this can be tested by sending the command "M106 S0"; if the 40mm filament drive fan turns off, you have the connectors swapped.

Heater Check

Now check that both of your heaters work, starting with the bed. First enable "Monitor Printer" by checking the box at the top of the Pronterface window. In the Heater Controls section, open the dropdown menu for the Bed, select "60 (PLA)" and click Set. The Bed or "B:" temperature should start slowly rising. If the nozzle or "T:" temperature starts to rise, you have the thermistor connectors swapped at RAMBo - the Nozzle Thermistor needs to be connected to T0, the Bed Thermistor to T2. Turn the Bed "Off", disconnect, remove power and USB, and swap the thermistor cables.

Now check the Nozzle heater, by setting the Heater to "185 (PLA)" in the dropdown menu. The temperature should start rising quickly within 5 seconds. The temperature should rise to 185*C in under two minutes, and, after a small overshoot, should stabilize and stay within 5 degrees of 185.

Test extrude


If your M2 has a V3b hot-end, use 215C for the PLA included with your machine. If you have a V3 hot-end you should use 195C for PLA.

If you have already installed the filament spool holder, filament guide arm, filament guide tube and the spool of filament itself, you can now perform your first test extrude. Feed the filament up through the hole in the filament guide arm, through the filament guide tube, and over to the filament drive. If the end of your filament has any bends or kinks in it, cut the first several inches off, preferably at a sharp angle. Feed the filament into the hole in the top of the filament drive, return to Pronterface, and set your nozzle temperature if you have not already. For the V3 style hotend, 195*C is good for PLA; V3b style uses 215*C for PLA. Then click Extrude. The extruder drive gear should move and grab the filament. Press Extrude two or three more times; if the filament continues to feed smoothly, click Extrude 5-10 times; continue until filament starts to come out of the nozzle smoothly.

First Print

Now that all subsystems have checked out, you can begin your first print. Heat the Bed back up to 60*C; once it has reached 60*C, set the nozzle to 195*C (or, again, 215*C for PLA on the V3b). Once both are up to temp, click SD, then SD Print. Select a file from the window that pops up (/m2demos/bracelet.g is a good choice, as it is a quick print), and click Print. The printer will then start printing the file, first by Homing the X and Y axes, then the Z axis. It will then move the nozzle off the bed to the right, extrude some filament, and scrape it off by moving back to the front left corner. It will home all three axes again, then move to the center of the bed and begin printing.

Congratulations - this is your first print X)