Jump to content
Ultimaker Community of 3D Printing Experts

Ultimaker 2+ Connect support gcode commands


Recommended Posts

Posted · Ultimaker 2+ Connect support gcode commands

Hello,

 

Something I havent been able to find anywhere, also not on Github is which gcode commands are actually supported by the Ultimaker 2+ Connect machine?

For instance, when I look in the supported gcode commands of most of the Ultimaker machines on Github I see support for the G4 dwell command and for the M600 command for instance. Both of these do not work on the Ultimaker 2+ Connect.

 

So I would be very happy to get a correct listing of supported gcode commands for the Ultimaker 2+ Connect

 

Thank you very much in advance 🙂

  • Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands

    This should be about it:

     

    //Implemented Codes
    //-------------------
    // G0  -> G1
    // G1  - Coordinated Movement X Y Z E
    // G2  - CW ARC
    // G3  - CCW ARC
    // G10 - Retract filament to given distance from nozzle tip (will affect the E-position) (G10 S-16.5 F300)
    // G28 - Home all Axis
    // G90 - Use Absolute Coordinates. Affects all axes, including the E-axis. See M82 for E-axis only.
    // G91 - Use Relative Coordinates. Affects all axes, including the E-axis. See M83 for E-axis only.
    // G92 - Set current position to coordinates given
    // G280 Prime blob. S0 = blob, S1 = none, only moves filament to nozzle tip
    
    
    //RepRap M Codes
    // M104 - Set extruder target temp
    // M105 - Read current temp and status info
    // M106 - Fan on
    // M107 - Fan off
    // M109 - wait for extruder to reach target temp
    
    //Custom M Codes
    // M17  - Enable/Power all stepper motors
    // M18  - Disable all stepper motors; same as M84
    // M80  - Turn on Power Supply
    // M81  - Turn off Power Supply
    // M82  - Set E codes absolute (default)
    // M83  - Set E codes relative while in Absolute Coordinates (G90) mode
    // M84  - Disable steppers until next move
    // M92  - Set axis_steps_per_unit - same syntax as G92
    // M114 - Output current position to serial port
    // M115 - Get Firmware Version and Capabilities
    // M140 - Set bed target temp
    // M142 - Set system lights (M142 w[0-255]) Note that the parameter letters are all lower case.
    // M190 - Wait for bed to reach target temp
    // M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000)
    // M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!!
    // M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec
    // M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) im mm/sec^2.
    // M205 - Advanced settings: minimum travel speed S=while printing, T=travel only, B=minimum segment time [us], X=maximum xy jerk, Z=maximum Z jerk, E=maximum E jerk
    // M206 - Set additional homing offset
    // M218 - Set hotend offset (in mm): T<extruder_number> X<offset_on_X> Y<offset_on_Y> Z<offset_on_Z>
    // M220 S<factor in percent> - Set speed factor override percentage
    // M221 S<factor in percent> - Set extrude factor override percentage
    // M290 P<powerBudget> I<idle_power_consumption>
    // M291 R<nominal_bed_resistance> A<bed_resistance_per_degree> V<bed_voltage>
    // M292 T<hotend_nr> R<nominal_hotend_cartridge_resistance> V<hotend_slot_voltage> P<max_hotend_power>
    // M299 - Set retracted filament length: T<hotend_nr> R<retracted length>
    // M301 - Set nozzle PID parameters FF, P, I, D, i, C and R (Q: Debug dump enable/disable)
    // M302 - Allow cold extrudes, or set the minimum extrude S<temperature>
    // M304 - Set bed PID parameters FF, P, I, D, i, C and R (Q: Debug dump enable/disable)
    // M400 - Finish all moves
    // M401 - Quickstop - Abort all the planned moves. This will stop the head mid-move, so most likely the head will be out of sync with the stepper position after this
    // M405 - Enable/disable the flow sensor hardware. S1=active A=averaging value
    // M406 - Re-init flow sensor algorithm
    // M407 - Read raw flow sensor value: S<sensor number>
    // M907 - Set digital trimpot motor current using axis codes. Current in mA. X-axis sets Y-axis as well. (M907 X1300 Z1300 E1250)
    // M998 - Intentionally stop the system as if by an error.
    // M999 - Restart after being stopped by error
    // M12000 - Set build volume maximum position (M12000 X200 Y200 Z200)
    // M12001 - Set build volume minimum position (M12000 X0 Y0 Z0)
    //          The minimum and maximum position combined define the build volume for the printer. They also define the default homing coordinates.
    // M12003 - Get board type
    // M12004 - Set the direction of each axis. M12004 X[0/1] Y[0/1] Z[0/1], To set direction per extruder: M12004 T[0/1] E[0/1]
    // M12005 - Set the extruder temperature compensation
    // M12006 - Set the build plate temperature compensation
    // M12010 - Read/Write TMC2130 stepper driver registers. R[register index] (S[driver index]) (V[new register value]). A driver index of 0xFF will address all drivers.
    // M12020 - Activate the high power 24V self test. This will check if the 24VHP can be turned off and on. Triggers an error if it can't.
    // M12030 - Set the Top Cap fan speed: S<speed 0-255>, without S-parameter the fan will be in 'auto' mode.
    // M12031 - Read the topcap present signal
    // M12032 - Read the topcap temperature
    
    • Thanks 1
    Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands

    Awesome, thank you so much! Where did you find this?

    Unfortunately that means I cant pause my printer using gcode 😞

    A workaround I though of is moving the Z up and down with a very low feedrate that takes a while and then I have time to change filament.

    I dont really understand why something like the filament change command  is not supported. I do understand the Arduino/firmware situation, where you cant control the lcd from the gcode, but then again…printers like prusa also have kind of the same situation but there it works right?

    I understand though that the 2+ Connect is geared towards the “just print my stuff without tinkering” people, so i understand the less dependencies the better.

  • Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands
    22 minutes ago, kupfeli said:

    Where did you find this?

    CarloK is working at Ultimaker, so he has his sources 🙂 And if I am not completely wrong he is in the firmware team, so he probably wrote the code for it.

     

    • Like 1
    Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands
    35 minutes ago, kupfeli said:

    I understand though that the 2+ Connect is geared towards the “just print my stuff without tinkering” people, so i understand the less dependencies the better.

    Yes it is and I know and understand that some people want to do more and want to have more control, but on the other side, the UM2+C is my most used printer, I really love it and never had the need to fine tune something during the print. I also had a Prusa printer some time ago and there I often had the need to tune something during the print, but not with an Ultimaker printer.

     

    The only thing that is really missing is the pause feature, but as far as I know, it will come in the future. 

    • Like 1
    Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands
    8 minutes ago, Smithy said:

    CarloK is working at Ultimaker, so he has his sources 🙂 And if I am not completely wrong he is in the firmware team, so he probably wrote the code for it.

     

    Aaaah that explains it, cool 🙂

    • Like 1
    Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands
    3 minutes ago, kupfeli said:

    Aaaah that explains it, cool 🙂

    Yeah, BigBrother is watching us here 🙂

    • Like 2
    Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands
    5 minutes ago, Smithy said:

    Yes it is and I know and understand that some people want to do more and want to have more control, but on the other side, the UM2+C is my most used printer, I really love it and never had the need to fine tune something during the print. I also had a Prusa printers some time ago and there I often had the need to tune something during the print, but not with an Ultimaker printer.

     

    The only thing that is really missing is the pause feature, but as far as I know, it will come in the future. 

    Ah yes, well I also really love the Ultimaker 2+ Connect, excellent and reliable prints and a bottom surface that is jaw-dropping 🙂

    The thing is, now for the first time I am printing a foil, consisting out of white letters and a black background (it is for an Enigma machine) so I need to first print the white letters, then change material and print the rest.

    Unfortunately Cura does not let me print two objects on top of eachother, so I need to merge the gcode manually and put some pause in between where I can change material.

    So as there is no pause possibility, I just add gcode to move the extruder up and down slowly and during that process I simply pull out the material and push in the new material until material comes out. Of and before that issue a gcode command to set the current E value to 0. Only way I can think of doing this without the bed/extruder cooling off too much.

    If there are better ways I would gladly hear them!

    Oh and probably I will use Simplify3D, as I cant get Cura to print just one layer, somehow it is always a minimum of two, no matter what I change in the settings.

  • Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands

    Your workaround sounds good, but you can also pause the print directly on the printer too. That's they way I do a filament change during the print, when the spool is empty. The downside is, you have to watch the print, but as far as I understood you have to change is soon after the print start, so not a big deal.

     

    4 minutes ago, kupfeli said:

    somehow it is always a minimum of two

    If I remember correctly it is a behavior (bug?) of Cura, but not 100% sure.

  • Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands
    10 minutes ago, Smithy said:

    Your workaround sounds good, but you can also pause the print directly on the printer too. That's they way I do a filament change during the print, when the spool is empty. The downside is, you have to watch the print, but as far as I understood you have to change is soon after the print start, so not a big deal.

     

    If I remember correctly it is a behavior (bug?) of Cura, but not 100% sure.

    Yeah the pausing is a problem though, as it takes a long time to click on the skip cooldown and then the change material etcetera. I am going to try some stuff now and will post it here, so maybe others can benefit from it too 🙂

    I tried to create my own Cura build yesterday, but couldn't get the Docker buildchain running, so I am going to invest some more time later on maybe to make a native buildchain, but maybe I will also stick to S3D.

    • Like 1
    Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands

    M600, M601 are not Marlin gcodes.  I mean, Marlin does not support those and this printer is *mostly* Marlin.

     

    Neither M0 nor M1 work?  Did you try M0?

     

    There are 2 computers inside the UM2+C and they each take gcodes.  There is the linux computer that reads the gcode file first and then sends the gcodes to the second computer through I think USB cable.  The second computer is running Marlin.  Some of the commands are sent onto the second computer, but some are blocked and dealt with by the first.  So for example on the UM3/S3/S5, (yes I know you have a single nozzle printer) the T0 and T1 commands are likely converted to multiple gcodes to move the print head over to the nozzle switching device.  They might be implemented on the Marlin board but I think they are implemented (at least partially) on the linux computer.

     

    Anyway to my point - @CarloK knows all this and knows if I'm wrong about the linux computer implementing some of the gcodes, but he may have copied and pasted the above list from the Marlin computer and possibly M0 is implemented by the linux computer.  Possibly?  I mean I think the linux computer has to do the actual pausing because it controls the display.  Therefore the M0 command doesn't need to be part of implemented Marlin gcodes.  So I'd give it a shot.

     

     

    • Like 1
    Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands
    43 minutes ago, gr5 said:

    M600, M601 are not Marlin gcodes.  I mean, Marlin does not support those and this printer is *mostly* Marlin.

     

    Neither M0 nor M1 work?  Did you try M0?

     

    There are 2 computers inside the UM2+C and they each take gcodes.  There is the linux computer that reads the gcode file first and then sends the gcodes to the second computer through I think USB cable.  The second computer is running Marlin.  Some of the commands are sent onto the second computer, but some are blocked and dealt with by the first.  So for example on the UM3/S3/S5, (yes I know you have a single nozzle printer) the T0 and T1 commands are likely converted to multiple gcodes to move the print head over to the nozzle switching device.  They might be implemented on the Marlin board but I think they are implemented (at least partially) on the linux computer.

     

    Anyway to my point - @CarloK knows all this and knows if I'm wrong about the linux computer implementing some of the gcodes, but he may have copied and pasted the above list from the Marlin computer and possibly M0 is implemented by the linux computer.  Possibly?  I mean I think the linux computer has to do the actual pausing because it controls the display.  Therefore the M0 command doesn't need to be part of implemented Marlin gcodes.  So I'd give it a shot.

     

     

    Thanks for your extensive reply gr5! Yes unfortunately M0 did not work, I am almost sure, but I will give it another try to be certain!

  • Link to post
    Share on other sites

    Posted (edited) · Ultimaker 2+ Connect support gcode commands

    So yeah, the following worked for me, I had enough time to change to black filament, push it through manually, flip the lever, clean the nozzle and it started printing the black part perfectly 🙂

    Only thing that could be added is a nozzle cooldown to 90 degrees, do a cold pull, heat up the nozzle again and push through the black filament. That way you unclog the nozzle too. But I don't need that right now.

     

    Here is the code for you guys and gals wanting to change filament during print for instance and have no pause function on your printer:

     

    ;FILAMENT_CHANGE_SCRIPT_START
    G0 F1000 Z1.0
    G0 F1000 X0.0 Y0.0
    G0 F1000 Z200.0
    ;MOVE UP AND DOWN A FEW TIME IN MM/MIN, TIME TO CHANGE MATERIAL = 2 minutes (if the feedrate is indeed mm/min)
    G0 F60 Z170.0
    G0 F60 Z200.0
    G0 F60 Z170.0
    G0 F60 Z200.0
    ;TELL THE ENGINE THAT THE EXTRUDED POS IS ZERO NOW
    G92 E0
      
    ;MOVE SLOWLY TO THE RIGHT (SO NOW YOU HAVE TIME TO CLEAN THE NOZZLE)
    G0 F60 X50.0
    ;EXTRUDE TO ZERO POS
    G1 F1500 E0
    ;MORE TIME TO CLEAN THE NOZZLE
    G0 F60 X0.0
    ;FILAMENT_CHANGE_SCRIPT_END
    Edited by kupfeli
    • Thanks 1
    Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands

    Here is the result:

     

    image.thumb.jpg.5c1944907e0178faac83b07795aebd64.jpg

    • Like 1
    Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands

    Great, thanks a lot for sharing your gcode.

    And the result looks very nice and clean!

    • Like 1
    Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands
    On 1/17/2022 at 9:03 PM, kupfeli said:

    Thanks for your extensive reply gr5! Yes unfortunately M0 did not work, I am almost sure, but I will give it another try to be certain!

    Confirmed now that M0 and M1 do not work. What I have also confirmed is that you should not fiddle around too much with the gcode if you are using a Ultimaker 2+ Connect. The M104 and M109 are problematic commands and somehow it seems they are not properly implemented. Sometimes the printer just hangs and can only be restarted by a flip of the switch. The same gcode runs fine in other occasions, so that is weird.

    Somehow waiting for cooling down with M109 R90 for instance also does not work.

    Anyhow, I will stop experimenting to prevent the printer from getting ruined and basically you dont really need to fiddle around, only when doing multicolor prints 🙂

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
     Share

    • Our picks

      • Ultimaker showcase | April 2022 | 4pm CEST | 10am EDT
        I'm excited because I've personally produced this showcase event, so if you are curious what else I'm up to nowadays, come check it out and say hi in the chat! It would mean a lot! 
          • Thanks
          • Like
        • 4 replies
      • New here? Get ahead with a free onboarding course
        Hi,
         
        Often getting started is the most difficult part of any process. A good start sets you up for success and saves you time and energy that could be spent elsewhere. That is why we have a onboarding course ready for
        Ultimaker S5 Pro Bundle, Ultimaker S5, Ultimaker S3 Ultimaker 2+ Connect.   
        They're ready for you on the Ultimaker Academy platform. All you need to do to gain access is to register your product to gain free access. 
        Ready? Register your product here in just 60 seconds.
          • Like
        • 12 replies
    ×
    ×
    • Create New...