1. Got a question or need help troubleshooting? Post to the troubleshooting forum or Search the forums!

Solved +++++ FAQ R1/R1+ series printers +++++

Discussion in 'Troubleshooting' started by mark tomlinson, Nov 8, 2017.

Thread Status:
Not open for further replies.
  1. mark tomlinson

    mark tomlinson ༼ つ ◕_ ◕ ༽つ
    Staff Member

    Feb 21, 2013
    Likes Received:
    This thread will be used to host FAQ posts to address questions that are common to many.
    It will be locked and only edited by a moderator / admin to add entries

    You will be able to search this thread for specific items you are looking for assistance with.

    If you have things you want to see added here -- PM a moderator and we can make it happen.
    This will be a living document that will be updated/added to as needed.

    First there are three models of the 'R1' printer. Each is slightly different mechanically so you really need to know which one you have.

    1) The 'Beta' -- this is the original Robo printer from their 2013 kickstarter. Also some of the ones produced immediately after the kickstarter were this same model. It had 5/16 threaded rods w/couplers and no autoleveling. Also it had no bottom cover or fan under the printer. Came with a J-Head style (not all metal) hotend. Was limited to mostly PLA/ABS (some models did not have heated bed and would have been PLA only).
    2) The original 'R1' -- this was sold after the initial kickstarter so 2014 on (until the R1+). It has 8mm threaded rods w/couplers and autoleveling. Came with a bottom cover and a small fan to coll the RAMPS. Came stock with a hexagon all-metal hotend.
    3) The R1+ -- the last of the R1 series produced. Started sometime in early 2016 IIRC (may have been later 2015). It has integrated leadscrews and no couplers and autoleveling. Came with a bottom cover and a small fan to cool the RAMPS. Used a customized version of the RAMPS 1.4 (different connectors). Also uses the hexagon all-metal hotend

    Lastly remember a machine is as good as the knowledge and experience of the user. :)
    If yours is misbehaving we (the other printer users in this forum) can probably help you get it going.

    Good advice is to print spare parts for the machine when it is working. Almost all of the parts that are plastic can be printed (except for the case) and having a spare part if you have one break will get you running fast :)
    #1 mark tomlinson, Nov 8, 2017
    Last edited: Nov 8, 2018
  2. mark tomlinson

    mark tomlinson ༼ つ ◕_ ◕ ༽つ
    Staff Member

    Feb 21, 2013
    Likes Received:
    Z offset
    This is one of the classic all-time problems with a new printer or a new user.
    If your Z offset is not correctly set your first layer will either not be close enough to the bed
    and will fail because it is too sloppy (and may not adhere to the bed properly) or it will fail because the extruder is too close to the bed
    and not able to extrude enough filament. The filament must be pushed down into place, not "dropped". Many times we refer to the BED being 'level' when the correct term is not 'leveling' but 'tramming' (from the CNC/Mill side of the house).

    When correctly done your first layer should be similar to this one:


    If not you need to adjust the offset to correct it.

    This post will cover the way to correctly set your autoleveling Z offset on the Robo R1/R1+ series of printers.
    This assumes you are running one of the stock (Robo3D provided) versions of Marlin 1.0 (and not the newer 1.10)

    The Z offset for the autoleveler is distinct from a global Z offset that the slicer can apply.
    The global offset will affect all points, but the autoleveling offset will only affect the calculated
    level 'plane' that the firmware calculates as part of the autoleveing process.

    You should start by reviewing the first video in this post :


    it has an excellent overview of how to set this and what to expect if it is incorrect and
    how to troubleshoot autoleveling failures.

    On to the specifics.

    In order to get the autoleveling to run of the Robo R1 series, the G29 GCode must happen in the startup
    GCode initially run by the printer for a print that was sliced. The slicer should be adding this to
    the initial section of the GCode. You can confirm this by exporting or saving the sliced/generated GCode
    to a file and then opening it with Wordpad or the like. You should see something like this
    (this is a random sample):

    M106 S0;
    M104 S190 T0;
    M109 S190 T0;
    G92 E0;
    G1 E-1.0000 F1800;
    G1 Z0.180 F1002;
    ; layer 1, Z = 0.18

    Some slicers put a lot of comments (lines that start with ; and in the above example
    that text after the ; is the comment) in the beginning of the file. To see the actual
    initial GCode you need to scroll down to the first lines without this.

    So in this example there is nothing other than the initial HOME command (the G28) in there of
    interest. The rest is the actual beginning of the object to be printed (inlcuding setting bed and extruder
    temperatures, etc.)

    We need to get the correct code added. Ideally it will look something like this:

    M565 Z-1.0

    In reality as long as it :
    1) has the M565 command
    2) has the M565 after the LAST G28
    3) has the G29 after the M565

    it will work fine and use that offset as part of the autoleveling routine.
    If it IS correct and the first layer is NOT correct then all you need to do is to adjust the
    Z offset to match your printer. This is done by making a slight adjustment to the value on
    the M565 line and then running a small test print and watching the first layer. You want to
    adjust it up/down as needed until it looks like the first layer picture linked to above.

    Making the number a larger negative value like : M565 Z-1.1
    will cause the extruder to be higher / further off of the bed for the first layer

    Making the number a smaller negative value like : M565 Z-0.9
    will cause the extruder to be lower / closer to the bed.

    You DO NOT want this to be a positive number, that would attempt to put it below the bed.

    So how do you do this in your slicer?
    The exact process varies by each software (they can all be different) and if you do not see yours
    discussed below you will want to refer to the documentation for your software.

    Eash slicer has a way to specify some arbitrary GCode to be executed at the start of each print.
    We will now cover that for the following:


    From the main sscreen in MatterControl Select the Settings & Controls menu option.
    The right beside the "show help" scheck box change the Basic button to Advanced.
    On the left side look for "Custom G-Code" and select that.
    Then in the Start G-Code window you add the commands as shown:

    MatterControl Z offset.png

    Repetier Host
    With Repetier you need to access the printer settings dialog. Then the Scripts tab on that dialog as shown:

    Repetier Host.png

    Then add the commands to the Start Code script as shown
    Press OK/Apply when finished.

    With Simplify3D this setting is configured at the process level and will need to be added/edited
    for each process you create that is intended to be used with the Robo.
    In the left side of the Screen there is a windows labeled "Processes" pick the one you want to edit
    and double-click on it to bring up the process editor. Then Select the Scripts tab on that window as shown:

    Simplify3D Z offset.png

    Add the commands to the Starting Script tab as shown. Press OK to save the process when finished.

    Cura 15.x
    Select the Machine menu and then the Start/End-Gcode tab as shown:

    Cura 15.png

    Then the start.gcode in the upper window and add the commands to the lower window as shown above.

    Cura 2.x and 3.x
    These newer versions of Cura do not appear to directly allow customization of this via the GUI
    (the program itself) and require you to edit the configuration file for your machine.
    This is discussed here:


    and this one:


    There is also a good thread here on this board you can refer to with other Cura users.



    and for 2/3:

    #2 mark tomlinson, Nov 8, 2017
    Last edited: Jan 10, 2018
    Techie247x likes this.
  3. mark tomlinson

    mark tomlinson ༼ つ ◕_ ◕ ༽つ
    Staff Member

    Feb 21, 2013
    Likes Received:
    Heated bed will not heat/heated bed failure


    The symptoms for this are either the bed simply fails to heat (no errors, just stays at room temperature which is usually around 25c) or the heated bed temperature reads 0c and does not heat (this may be accompanied by an error about thermistor failure). We will discuss the these in order.

    Bed temperature seems normal, but it will not heat

    In this case it is almost always a failure of the RAMPS 1.4 control board in the printer. Specifically Q3 (a MOSFET, a type of transistor) that drives the heated bed power had died. This is not Robo specific … many other printers with RAMPS boards have seen this type of failure. The solution is two-fold.

    1. If you have a Robo Beta or a Robo R1 printer

    2. If you have an R1+ printer.

    In either case open the bottom cover and examine the connectors where the wires from the bed are landed on the RAMPS. Make sure there is no scorching/blackening of the wires or the connectors themselves as this indicates a loose wire or a damaged heater on the bed. Usually it is loose connection – retighten the connections for the wires to the bed. This is the generic R1 RAMPS, not the R1+ but the connectors should look this way and not show signs of distress on either board.

    Ramps + Sheilds.JPG


    If you have the R1 then you need to simply buy a generic RAMPS 1.4 card from where ever you like. They can be found on Amazon normally for as little as $15 (with stepper driver cards included) or as little as $10 (without stepper driver cards included). The stepper drivers are these little cards:

    Stepper drivers.jpg

    that mount onto the top of the RAMPS board. There will be 4 (5 if you have the R1+).

    For this problem these are not the issue so you can buy one with the drivers installed or without (and reuse your old ones). The difference in price is minimal I suggest getting new drivers to have spares.

    The offending transistor can be seen in the photo of the RAMPS board above it is the tall black/silver part next to the blue D9 connector.

    Replacement of the entire board is the best solution. You can also buy a kit on Amazon that has all of the electronics in the Robo (the Arduino, the Ramps, the stepper drivers and even an LCD controller) given the price of the components these kits are an excellent value and gives you a complete set of spare electronics.


    If you have an R1+ then life gets more interesting. That model had a slightly customized RAMPS board. The board is the same electrically, but the connectors were altered and relabeled. There are good details (with photos) and instructions on how to convert that to a normal RAMPS 1.4 in this thread:


    If you do not do the switch to a normal RAMPS board (which really just involved landing wires in different spots, nothing complicated) then you must try to get a replacement board from Robo directly. They are in/out of stock routinely and even when they are in stock, they are more expensive. We always suggest you take the time to just swap in a generic board. Also check the new Robo parts supplier: https://www.partsbuilt.com/robo-parts/

    Bed temperature out of whack/abnormal and/or thermistor error

    When the bed temperature reads 0c or a really high number (in the area of 350c) then the thermistor for the bed itself is damaged or the wiring to that thermistor is damaged (short circuit or open circuit).

    You should start by visually checking the wire from the RAMPS board all the way down to the bed and see if you can find issues with the connectors. If not then the thermistor itself is the culprit. If you look on this diagram the connection for the thermistor is labeled:

    RAMPS Wiring Robo.gif

    Make sure it is properly connected.

    If the thermistor is defective you need to replace it. This will require you to desolder the old one and solder a new one on to the wires. You will need to disconnect it from the RAMPOS and power everything down first. Be careful not to short the wires and to make sure that there is heatshrink material covering all of the bare wire up to the thermistor itself. The thermistors are standard EPCOS 100k thermistors (Marlin firmware type 1) and can be purchased from Amazon or other retailers.

    If you are forced to use other styles or you choose to use a different one, you need to match up the brand with the correct setting in the Marlin CONFIGURATION.H file and then compile and upload the changes to the printer.
    #3 mark tomlinson, Nov 8, 2017
    Last edited: Aug 3, 2019
  4. mark tomlinson

    mark tomlinson ༼ つ ◕_ ◕ ༽つ
    Staff Member

    Feb 21, 2013
    Likes Received:
    Someone made the analogy that the M999 error is akin to the "check engine" light in a car.
    It doesn't tell you what is wrong, just that "something" is wrong :)

    If you receive the M999 error during printing it is almost certainly due to the second error listed above (TEMP FALL).

    It is common to get this error during or right after the autoleveling 9-point check is completed.


    To prove this you need to search through the Gcode terminal in your printing software and look for that error. You will need to look through the entire terminal, not just what is showing on the window... it will probably have scrolled back by the time you look.

    You will almost always find the following error in the terminal (this is an example):

    <-ok T:209.1 /210.0 B:69.5 /70.0 T0:209.1 /210.0@:83 B@:127 [1364.140]
    ->N8746 G1 X95.66 Y111.21 E1197.88751*92 [1364.141]
    <-ok [1364.149]
    <<< lines deleted >>>
    ->N8759 G1 X98.88 Y113.18 E1198.03308*83 [1364.244]

    <-Error:Extruder switched off. Temperature fell too much during print! [1364.841]
    <-Error: Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting) [1364.905]
    <-Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting) [1365.046]
    <-ok [1365.459]
    ->N8760 G1 X99.35 Y112.92 E1198.05088*80 [1365.558]
    <-Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting) [1365.567]

    Notice how the only error that repeats is the non-informative M999 ... not the actual error.

    On the LCD you get the TEMP FALL ERROR and no logs to wade through...

    This problem is due to the temperature reported by the hotend thermistor fluctuating unexpectedly. You may not notice it on the program you are printing with even if you have the temperature displayed because the firmware is the one reporting this error and it will react before the software can.

    Why would the temperature fluctuate?

    There are two main reasons for this to happen.

    1. the thermistor is internally damaged or has a bad connection. You can trace the wiring to the thermistor back to the RAMPS and make sure it is good. If so then it is likey a damaged thermistor. Pay close attention to the quick-disconnect connectors near the hotend if you have an R1+ -- they can be giving you a poor connection or …

    2. There is too much air moving around the hotend or the PARTS cooling fan is direectly blowing on the hotend (and not the part you are printing). This is easy to check, turn off the PARTS fan(s) and see if the problem persists. You can print without the parts fan (quality will suffer) and if that eliminates the failure you need to redirect the parts FANS to correctly put air on the part and not on the nozzle. With the lower wattage heater cores used by some hotends this is more likely than you might surmise. The hexagon uses a 30w heater core, the E3D a 25w heater core. You can swap these for a larger 40w heater core (which is similar to what the Volcano and others use) without any real issues.
    In case (1) you need to replace the extruder thermistor. It is also in rare cases the heater core failing and not able to maintain temperature. In that case replace the heater core itself.
    #4 mark tomlinson, Nov 8, 2017
    Last edited: Sep 23, 2020
  5. mark tomlinson

    mark tomlinson ༼ つ ◕_ ◕ ༽つ
    Staff Member

    Feb 21, 2013
    Likes Received:
    Updating/changing the firmware
    While not technically difficult, changing and updating the firmware can be a bit off-putting for someone who is not familiar with it. In this section I will discuss in detail how to go about this from the source packages and Arduino compiler. Most changes to the Arduino source that affect the printer are done in one specific source file: CONFIGURATION.H

    1. Download the Arduino compiler for your machine (whichever versions matches your operating system). This is done via this link: https://www.arduino.cc/en/Main/Software At the time I was writing this the version is 1.8.5, use whichever is the current latest version.

    2. Install the software you just downloaded. It may prompt you for it to install the Arduino drivers as part of the installation, go ahead and let it do that.

    3. Download the firmware you want to install. For the R1 series (beta/R1/R1+) that is from this location:


      Note: It is VERY important that you get the correct version for YOUR printer. There are 3 different ones on that page. The BETA (original kickstarter machine) the R1 and the R1+ -- they all have different firmware and if you load the wrong one onto your printer it will not print correctly. The Z steps/mm are different for all of them. Make sure you know which printer you have.

    4. Extract the download firmware ZIP file somewhere. Where is not really important, just make a note of where you did extract the files to. A directory named for the version you are going to install is fine (i.e. c:\R1_Firmware_V3) the name is again is not important other than you knowing the location. I usually remove the spaces from the directory name to keep it simple.

    5. Run the Arduino IDE
      Arduino IDE.jpg
    6. Setup the options for your printer. The important bits are the TYPE of Arduino board and the COM port it is attached to:
      TOOLS menu → Board: → Arduino/Genuino or Mega 2560
      TOOLS menu → Processor → Arduino Mega 2560
      TOOLS menu → Port → COM 1/3/4/etc (whichever one matches your printer connection).

      To test that it is correct once you have it set go to the TOOLS → Get Board Info and it should display information about the arduino board. If it generates an error then you have likely chosen the incorrect COM port.

    7. Now open the firmware sketch. FILE → OPEN then browse to the folder where you extracted the firmware source code. Select the appropriate INO (project) file for example: ROBO3DR1PLUSV1.ino (if using the R1+ firmware)
      Arduino IDE and Project.jpg
    8. Now we need to compile it. Click the checkbox icon ion the toolbar to compile.
      In an ideal situation you will get no warnings or errors, just something like this:

      Sketch uses 131874 bytes (51%) of program storage space. Maximum is 253952 bytes.

      Global variables use 4772 bytes (58%) of dynamic memory, leaving 3420 bytes for local variables. Maximum is 8192 bytes.

      ***** However you may get a number of WARNING messages before that like so :

      C:\Users\markt\Documents\Arduino\libraries\U8glib\utility\u8g_rot.c:48:1: warning: initialization from incompatible pointer type
      u8g_dev_t u8g_dev_rot = { u8g_dev_rot_dummy_fn, NULL, NULL };

      C:\Users\markt\Documents\Arduino\libraries\U8glib\utility\u8g_rot.c:48:1: warning: (near initialization for 'u8g_dev_rot.dev_fn')

      these are NOT errors and can be ignored. **** You MAY get an actual ERROR like the following:

      exit status 1using typedef-name 'fpos_t' after 'struct'

      This is due to a change in the more recent arduino compilers older versions of the arduino compiler may not generate this error. It can be fixed by downloading the attached SDBASE.ZIP and extracting the two file source files included into the directory where you extracted the others and overwrite the two existing ones.

      Once you have done that you should be able to compile OK (you will still get warnings, but no errors).

    9. Now you need to upload the compiled firmware to the arduino. To do this click the RIGHT ARROW icon in the toolbar. It will compile again and upload the source to the arduino.

    10. That is it. Assuming no errors uploading you have successfully updated the firmware. If you DID get errors uploading then try again. If it will not upload without error then either the USB cable you are using is not working well or the Arduino board in the printer is misbehaving.

    Attached Files:

    #5 mark tomlinson, Nov 11, 2017
    Last edited: Dec 10, 2018
    Laura Kapp and Wesley Knapp like this.
  6. mark tomlinson

    mark tomlinson ༼ つ ◕_ ◕ ༽つ
    Staff Member

    Feb 21, 2013
    Likes Received:
    The difference between the BETA/R1/R1+ is minimal and they may even look identical (some of the early betas are NOT the same visually due to the different bed). The major difference is that the Z steps/mm is different between then all. So loading the wrong firmware means you will not get working prints as the height will be incorrect in the slicer when it calculates the steps needed.

    BETA had 5/16 threaded rods
    R1 has 8mm threaded rods
    R1+ has leadscrews. Here are the correct number for each:

    #define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,800,723.38} // default steps per unit for RoBo 3D R1+ (leadscrews)
    #define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,2560,723.38} // default steps per unit for RoBo 3D R1 (8mm threaded rods)
    #define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,2267.72,723.38} // default steps per unit for RoBo 3D R1 beta (5/16 inch threaded rods)
    #6 mark tomlinson, Feb 28, 2019
    Last edited: Dec 11, 2019
Thread Status:
Not open for further replies.

Share This Page