RepRap and ReplicatorG-5D

Some things are just no fun, and in a project driven by volunteers, these parts tend to be neglected. Making things user friendly doesn’t help yourself, because when you get to the point where you can improve it, the improvement is of no use to you any more. If you’re going to sell the machine, you’re going to do a bit more in making it user friendly. With a healthy bit of altruism and effects of peer recognition the problem is migitated to some extent. Especially if you look at projects like Ubuntu: lots of people are passionate to help make “Linux for Human Beings”. But in the RepRap project, the software isn’t as user friendly as it should be!

I’ve been tempted to work mostly on cutting edge work, experimenting with the Bowden cable, reversing the extruder, combatting backlash, working on the then-beta Mini-Mendel, different extruder designs and most recently, an entirely new machine: the Ultimaker. However, more recently I’m focusing in making things a bit easier to use. In effect I’ve made a ReplicatorG fork (which will be merge with the official version) that includes a RepRap 5D driver that talks nicely with 5D firmware. Because of the integration of the newer Skeinforge (currently 31) (which I had hacked into ReplicatorG-0019, too) you can have Skeinforge generate the E codes too. This means ReplicatorG is now fully usable for the RepRap. I’ve done some work on detecting temperature feedback and some other things, such as filtering out unwanted M-codes that will cause the firmware to throw up πŸ™‚
The 5D fork is temporarily, Adam Mayer will integrate the driver into the main branch. But I wanted to have some testing by others before it’s merged.

Release files are here:

Another thing I did: For new Windows installations, ReplicatorG and Skeinforge are going to become easier to install. I’ve figured out how to make it an EXE that is only dependent on the Python DLL which can be distributed along with it. This makes it stand-alone, so you don’t have to first install the Python programming language to be able to just do printing. Not everyone should have to do that. Installing the FTDI driver is enough of a head-ache. This is not included in the main release yet, as I need to automate the process of building the distribution some more, and it needs to be built from windows (read: in need to install Cygwin and SSHd).

My ReplicatorG branch also contains my progress bar patch. You’ll be able to see how far it is, also how many layers are filled, etc. The ETA of the ETA isn’t know yet, but I’ll add that at some point too.

I must be honest with you guys: I’m encouraged to do this now, because the Ultimaker is already so much easier to assemble, software has become the hardest part. I deliberately chose to base everything on the RepRap code and not fork things (merging changes upstream) any more than needed so that the whole community benefits from it and to prevent duplication of effort. It also helps me feel more responsible for making RepRap and Ultimaker easier. The Ultimaker electronics (will) use the RepRap firmware, so you’ll be able to use it in RepRap’s too.

Given that the community is already very big and doubling rapidly, the value of these incremental usability improvements is HUGE. So I hope this encourages you to do the same!!

You may also like...

26 Responses

  1. spacexula says:

    Wow Erik, amazingly good work. Thank you

  2. Andres says:

    yes. thanks much. I’ll try to check it out this evening when i get back from work, but i’ll definitely have some time with it this weekend.

    -on a lasercut darwin w/ wade’s geared stepper extruder.

  3. Len says:

    Fantastic work! It encourages me to have another attempt at using reprap firmware on my mendel.

  4. Sven H. says:

    I was thinking about doing this too, but you were faster. If you need help let me know.

  5. makerswamp says:

    Hi Erik,

    I downloaded your modified release, however how do I configure it for my mendel? I can’t seem to produce E codes.


  6. Erik says:

    Make a profile in the integrated skeinforge. You can then turn on generation of the E codes under the “Dimensions” tab in Skeinforge. Save this profile and try it again πŸ™‚
    Also, check your Baud rate and make sure acceleration is OFF (For now this is required… I’ll make this a software configurable parameter).

    • Makerswamp says:

      Hi Erik,

      I’m running into some strange behaviour. I’m using the RAMPS board and have changed the pin assignments in reprap firmware version 20101126.

      In order to get the job to run correctly I had to ignore ALL M codes. However My machine now stalls during a build. Any ideas?


    • Makerswamp says:

      Hi Erik.

      One other thing. Why / how do we turn off acceleration? My Mendel seems to use acceleration ok however my jobs hang part way through the build. It very rarely gets to the end of a build.


  7. makerswamp says:

    Ok, I’ve got the E codes now.

    A quick question, should the gcode output from this work with my mendel firmware (running on an arduino mega?) Is there a way to use the replicatorg firmware on the mega?

    Thanks in advance,


    • Erik says:

      This driver is for RepRap firmwares. The firmware by makerbot needs to be adapted to work on the mega.

  8. makerswamp says:

    Thanks for the clarification.

    When I run some gcode generated using the latest release from your website (printed using the reprap host software) the axis all home correctly, however no printing occurs.

    Do you also connect to the mendel using your version of replicatorg?

    • Erik says:

      Does your generated gcode contain e codes? If not, see my earlier comment about skeinforge. Makerbot uses M101 to turn on the extruder. This is fine for DC motor versions, but if you want a stepper based instruction, the E codes are required.

      • Erik says:

        Yes, it contains e-codes if you select Skeinforge 31 or later under “GCode” -> “Choose GCode generator” and have it turned on in “Dimensions” in your Skeinforge profile.

  9. Erik says:

    Also, try entering some manual entries with E codes to see which numbers cause an appropriate amount of movement. Just for debugging’s sake: try a gcode file from the Java host and compare the 2. Then we know more.

  10. Richard K says:

    Awesome work Erik! Thank you soo much for doing this. I have a makerbot and just figuring out the basics is enough of a headache. This is an excellent step forward for getting it into the mainstream.

    I am currently working on network enabling my makerbot so am sure that will help too… No more need to be tethered to the PC!!!

  11. rimb05 says:

    Hi Erik, great work! For some reason, though I can’t get your latest commit to work on my mendel. I’m using standard 0806 reprap firmware (gen3 electronics) with a pololu stepper extruder. What happens is I try to start the extruder from the control panel and it locks up replicatorg after a short while (I enter 255 PWM and 10 RPM and press forward). It seems like it’s running the motor very slowly after I do this (like one step every second), but replicatorg is hung…

    I also tried your earlier version (the one listed in this blog post), and it doesn’t lock up, but it also doesn’t control the stepper, either.

    Any ideas?


  12. Cdriko says:

    Hello .end thanks a lot for your fork πŸ˜‰

    I try your version of replicatorg with FiveD_on_adruino firmware :
    with arduino 168 and 328 (try both)

    and use your feature-5d-Support version.

    I’ve this message in replicatorg :
    [10:31:19] Loading machine: nOOdle_5D
    [10:31:19] Loading simulator.
    [10:31:19] Loading driver: replicatorg.drivers.RepRap5DDriver
    [10:31:19] Initializing Serial.
    [10:31:20] Start
    [10:31:20] Unknown: Start
    [10:31:20] ok
    [10:31:20] Ready.

    but the machine seems to be disconnected (I can’t open the control panel etc..)

    do you have an idea about that ?

  13. rimb05 says:


    I managed to get a little further. For some reason, the motor RPM is scaled way down. So, if I go to the control panel and type in: 255PWM, 1000 RPM, the motor works. (using 255/20 made the control panel hang) But:

    1. I still can’t build anything. After I press Build, it just sits there. Tracing the code, it seems that the source iterator is empty.

    2. The control panel is very slow. For example, pressing start and stop on the motor takes a few seconds for the motor to react. Same with the temperature display.


  14. Erik says:

    First of all, thanks a lot for your feedback and encouragement! I’ll try to address some of these issues the best I can.

    Secondly, my fork is not meant as a fork in the road of ReplicatorG development. Things are going really great with the developments of ReplicatorG, there were just a few things missing to get RepRaps working with them. Moreover, phooky and Marius Kintel have been welcoming and merging patches of my fork, so you’ll also be able to use the main version of ReplicatorG, they’ll just contain patches from my branch.

    With that said, let me answer a few questions:
    @makerswamp @rimb05: my master branch currently really is a ‘bleeding edge’ version. I’m very happy with you testing this, nevertheless, and especially with the feedback. I’m aware that the current driver is broken as it is… (i reverted to an older version of mine with minor tweaks to make it more stable)

    @cdrico: I think that “Start” should start with lowercase, at least, that’s what the driver currently expects. I’d love to see some version information, though!!

    @ Richard K: tell me more about net-enabling it, I’m also working on this!!

    Also, please comment on my baud-rate auto-discovery idea:

  15. Cdriko says:

    Thanks Erik

    efectively, the arduino responds “Start” instead of “start”

    I modify that in the arduino firmware (which is
    to match this.
    Now the machine appears as connected !
    but when I open the control panel
    About the temp, replicatorg send :
    “Sent: T0 M105” 16 times
    and AFTER, the machine responds :
    “18 nov. 2010 15:53:46 replicatorg.drivers.RepRap5DDriver readResponse
    INFO: T: 0.0
    18 nov. 2010 15:53:46 replicatorg.drivers.RepRap5DDriver readResponse
    GRAVE: Unknown: T: 0.0”

    16 times too

    I’ll try to find a queue somewhere
    In your driver or on the arduino firmware ?

    • Erik says:

      This queue problem is with the ReplicatorG software, the way it handles the Serial thread and updates the control panel. I haven’t completely figured out how to fix it, or I would’ve done it! Please see if you can do better than me, you probably can… πŸ˜‰
      If it says T: 0.0, then your thermocouple might not be connected or some other measurement problem exists. Alway be extremely careful with your heater when you have no working closed loop temperature control!

  16. Erik says:

    Our development of ReplicatorG has moved to:

    @rimb05: this should now have been fixed!

  17. rimb05 says:

    Hi Erik,

    Just an FYI, the latest version still won’t start a build. When I press the build button, it says “running warmup commands”, then “ok” “ok”. Also, the motor RPM is about 2 orders of magnitude off on my system. I need to set to to 1000 to get it to run close to what it should normally run at (my motor steps parameter is set to 200 in machines.xml).


  18. james villeneuve says:

    Hi Erik, great job BTW! – have you noticed that the M17 and M18 cause a crash for arduino firmware? i think this is motor enable and disable in the control panel. Also is there a firmware specific for the replicatorg version? I’ve been modifying the ‘mega’ version and using 57600 mendel driver, still having a few issues thx, replicatorg is well understood by the community.

  19. Erik says:

    > I’m running into some strange behaviour.
    > I’m using the RAMPS board and have
    > changed the pin assignments in reprap
    > firmware version 20101126.
    > In order to get the job to run correctly I had
    > to ignore ALL M codes. However My machine
    > now stalls during a build. Any ideas?

    It should actually work without any M-codes as well… What kind of lines does it ‘hang on’ (what Gcode)? Is it the same line number every time? If you remove the problematic line, will it fail further down the line?

    Makerswamp wrote:
    > One other thing. Why / how do we turn off
    > acceleration? My Mendel seems to use
    > acceleration ok however my jobs hang part
    > way through the build. It very rarely gets to the
    > end of a build.

    You do that in the firmware, under configuration.h