Jump to content

Ultimaker 2+ Connect support gcode commands


kupfeli

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
    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

    Posted · Ultimaker 2+ Connect support gcode commands

    I've spent some time exploring the Filament Change and Pause at Height features on my UM2C.

    Unfortunately it's not very well hanlded as you guys suggested, but at the end I found an "OK" solution.

     

     

    Here is a summary of my tests (Fimware 1.5.2, Cura 5.1) :

     

    - Pause at height
      - Marlin (M0)   => ✓~
      - Griffin (M0)  => ✗✗
      - BQ (M25)      => ✓~
      - RepRap (M226) => ✓~
      - Repetier/OctoPrint (@pause) => ✓~
    - Filament change
      - Firmware conf => ✗✗
      - Marlin (M600) => ✗✗
      - RepRap (M600) => ✗✗

     

    ✓~ : Travel only : priter just travels in park position then returns to work immediatly
    ✗✗ : Ignored by printer

     

    So to recap, Filament Change is just totally ignored, but some of the Pause at Height commands do something.

    So at the end, because the pause button on the screen works quite well (we can even change the filament), I use one of theses pause command to notify me when to manually tap the pause button (the traveling of the gcode pause command does a different motor noise). It's clearly not ideal, but it's works.

     


    I've talked with the Ultimaker support to have more information about this, and here are some quotes of their answers :

     

    Quote

    "Filament Change" script does not work at all with Ultimaker 3D Printers.
    "Pause At Height" post processing script is not officially supported by the Ultimaker 2+ Connect at this time. Our developers are aware of the request but I am sorry we are unable to commit or promise a timeline for it to be added at the moment due to the summer holiday season and also because of several tasks of higher priority.


    So maybe it will come in a futur firmware release 🙂

  • Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands
    On 8/18/2022 at 1:17 PM, Nico04 said:

    I've spent some time exploring the Filament Change and Pause at Height features on my UM2C.

    Unfortunately it's not very well hanlded as you guys suggested, but at the end I found an "OK" solution.

     

     

    Here is a summary of my tests (Fimware 1.5.2, Cura 5.1) :

     

    - Pause at height
      - Marlin (M0)   => ✓~
      - Griffin (M0)  => ✗✗
      - BQ (M25)      => ✓~
      - RepRap (M226) => ✓~
      - Repetier/OctoPrint (@pause) => ✓~
    - Filament change
      - Firmware conf => ✗✗
      - Marlin (M600) => ✗✗
      - RepRap (M600) => ✗✗

     

    ✓~ : Travel only : priter just travels in park position then returns to work immediatly
    ✗✗ : Ignored by printer

     

    So to recap, Filament Change is just totally ignored, but some of the Pause at Height commands do something.

    So at the end, because the pause button on the screen works quite well (we can even change the filament), I use one of theses pause command to notify me when to manually tap the pause button (the traveling of the gcode pause command does a different motor noise). It's clearly not ideal, but it's works.

     


    I've talked with the Ultimaker support to have more information about this, and here are some quotes of their answers :

     


    So maybe it will come in a futur firmware release 🙂

    Thanks alot for sharing this with us !! 🙂

  • Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands

    Hi there, apologies for pulling this post from its gave but "Change material while print is paused. It is now possible to pause the print and change the material spool in the paused state." is from 1.5 release notes from June 2022.

     

    What has then be introduced and how can it be used?

  • Link to post
    Share on other sites

    Posted · Ultimaker 2+ Connect support gcode commands
    4 hours ago, utopiah said:

    Hi there, apologies for pulling this post from its gave but "Change material while print is paused. It is now possible to pause the print and change the material spool in the paused state." is from 1.5 release notes from June 2022.

     

    What has then be introduced and how can it be used?


    I think the release notes are out of context if you had not used the 2+C before that firmware release..

    You were not able to change material when you manually paused the printer from the touch screen before.
    This update only made that possible.

     

    It is still not possible to use stop at layer height etc gcode to pause the 2+C  as noted in this thread its either ignored or it only pauses for a moment before auto resuming itself.

    If you want to change material while printing you will need to manually pause the machine from the touch screen.
     

  • 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
    • Our picks

      • Introducing Universal Cura Projects in the UltiMaker Cura 5.7 beta
        Strap in for the first Cura release of 2024! This 5.7 beta release brings new material profiles as well as cloud printing for Method series printers, and introduces a powerful new way of sharing print settings using printer-agnostic project files! Also, if you want to download the cute dinosaur card holder featured below, it was specially designed for this release and can be found on Thingiverse! 
          • Like
        • 10 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
         
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    ×
    ×
    • Create New...