Jump to content
Ultimaker Community of 3D Printing Experts
sinnnnna

Manual control for Ultimaker 3 over the LAN or wifi

Recommended Posts

Hi Everybody,

I like to have manual control on my UM3 over the wifi or LAN. On my previous 3d printers I was able to connect to the printer using Repetier-Host via serial port. After the connection was established, I was able to send gcodes and monitor the response of the 3D printer. But, UM3 does not support serial connection. Do you have any idea how can I manually control it?

Thank you very much in advanced.

Edited by Guest

Share this post


Link to post
Share on other sites

Yea UM3 is an open close open system so...

You need to activate Dev mode to get SSH access to your printer then...

SSH root@IPADDRESS

and then you need to move to the folder

usr/share/griffin

There you can do

python3 command_util.py

to execute a program that allows direct access to the machine and send gcode commands

Type help once inside the python, if I recall correctly the command is called sendgcode

so you can do, for example:

sendgcode G28 Z0

A full control of the machine seems that isn't allowed, why? I have no idea.

  • Like 1

Share this post


Link to post
Share on other sites

Full manual control was never implemented in the UM3 since there is no use case. I'm curious to hear for what serious applications you are using the manual control.

As Nallath mentioned many of the printer settings can be controlled through the web API. Great when you want to automate some remote controlling.

Documentation can be found at the printer itself: http://printer-ip-address/docs/api

Edited by Guest

Share this post


Link to post
Share on other sites

>I'm curious to hear for what serious applications you are using the manual control.

I find it speeds up experiments. For example if I wanted to experiment with different PID values it is so much easier to do this through gcodes.

Measure flatness of glass and gantry.

Measure x,y position of bed clips.

Measure max possible Z printing height: if my part ends up being 1mm too tall and fails in that last mm it would be nice to know before I start the print).

Calibrate extruder (is 100mm really 100mm?)

And hundreds of other experiments are easier when you can type in a gcode.

  • Like 3

Share this post


Link to post
Share on other sites

>I'm curious to hear for what serious applications you are using the manual control.

I find it speeds up experiments. For example if I wanted to experiment with different PID values it is so much easier to do this through gcodes.

Measure flatness of glass and gantry.

Measure x,y position of bed clips.

Measure max possible Z printing height: if my part ends up being 1mm too tall and fails in that last mm it would be nice to know before I start the print).

Calibrate extruder (is 100mm really 100mm?)

And hundreds of other experiments are easier when you can type in a gcode.

+1 Can't agree more

Share this post


Link to post
Share on other sites

I now better understand how you people use the direct gcode commands. Still, I don't think Ultimaker will give it high priority since those are all tweaker use cases. When a community member posts a pull-request for a nice solution we could add it. Otherwise you tweakers already have the very powerful command utility described above.

There is a slightly faster way to get to the command utility:

- On the printer enable the development mode.

- Setup a remote connection to the printer with: ssh ultimaker@

- password = ultimaker

By loging in like this you directly enter the command utility.

Sending gcode: sendgcode

How about a web page where you can control the head movements? Sounds like a solution that would cover about 90% of your tweak desires. Technical implementation is easy but I would have to do this in my spare time and designing a nice looking web page is not my thing so I could use some help there...

Edited by Guest
  • Like 4

Share this post


Link to post
Share on other sites

How about a web page where you can control the head movements? Sounds like a solution that would cover about 90% of your tweak desires. Technical implementation is easy but I would have to do this in my spare time and designing a nice looking web page is not my thing so I could use some help there...

Please don't.  If it can't send any gcode then just don't bother.  The current "ssh" solution is great as it is.  And thanks for the "get there direct using ultimaker account" trick!  :)

Actually I'd love a screen to move head, extruder, set temp but which then shows the gcodes it used below and a text edit box to send gcodes and in that text edit box you can hit up arrow to get most recent gcode sent. Right now I can't set the core temp through gcode unless I first heat from the panel. That enables something (not sure what) and then gcodes to set temp start working.

Edited by Guest

Share this post


Link to post
Share on other sites
 Right now I can't set the core temp through gcode unless I first heat from the panel.  That enables something (not sure what) and then gcodes to set temp start working.
First you have to enable the hotends. Hotends are only allowed to be removed when disabled, so before heating commands are accepted you have to enable them.

enable hotend 0: M145 T0

disable hotend 0: M144 T0

Example:

M145 T0

M104 T0 S150

  • Like 2

Share this post


Link to post
Share on other sites

or if you are in the console you can select the hotends and set the "pre_tune_target_temperature"

the console also has code completion in a lot of places, so you can type select and hit tab and get a list

 

su ultimaker(Cmd) select beep                                led                                 printer                             printer printer/head/0/slot/0       camera                              material                            printer printer/bed                 printer printer/head/0/slot/1       interface.http interface/http/auth  nfc                                 printer printer/head/0              system                              (Cmd) select printer printer/head/0/slot/0(Cmd) listangle = 70current_temperature = 27.7filament_size = 2.85flat_size = 0.3hardware_revision = 0hot_zone_size = 21.0hotend_cartridge_id = AA 0.4insert_type = tefloninteraction_required = 0is_enabled = 0is_present = 1is_primed = 1last_material_guid = 506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9manufacturer_id = Ultimakermaterial_extruded = 41175material_guid = 506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9material_guid_source = USERmax_exp_temperature = 361max_power = 75max_target_temperature = 350.0maximum_temperature = 350nominal_resistance = 23.0nozzle_size = 0.4pid_Kd = 40.0pid_Ke = 0.0pid_Kff = 0.57pid_Ki = 0.2pid_Ki_max = 100pid_Kp = 9.0pid_Kpcf = 0.06pid_functional_range = 25.0pre_tune_target_temperature = 0.0programming_state = serial_number = 14db96100000target_temperature = 0.0time_spend_hot = 85756tune_offset_temperature = 0.0voltage = 24.0x_offset = 0y_offset = 0z_height = 3.7404787726917803(Cmd) set pre_tune_target_temperature 20 (Cmd) Jun 29 15:43:20 ultimakersystem-ccbdd300003f python3.4[15964]: 2017-06-29 15:43:20,352 INFO     heatableHotend  Going to enable hotend 0 to 20CJun 29 15:43:20 ultimakersystem-ccbdd300003f python3.4[15964]: 2017-06-29 15:43:20,471 INFO     heatableHotend  Going to enable hotend 0 to 20Cset pre_tune_target_temperature 30(Cmd) sendgcode M105ok N56 P15 T0:27.7/30.0@0p1e1f0/0 T1:27.7/0.0@0p1e0f0/0 B22.9/0.0@0(Cmd) 

 

(I have journalctl running spitting out those log lines in the background in case you were wondering where those extra lines came from)

  • Like 2

Share this post


Link to post
Share on other sites

Good stuff!  I'd love to see more "developer mode" tricks added to David B's already useful postings that he made right when the UM3 came out.

 

right, well, not sure if we had the property system implemented by then, but we do now :D

so with list you can see a bunch of values you can change with the set command for instance you could manually change the GUID of the currently selecte material as if you've clicked select material in the material menu

set material_guid

you can even execute code as the running code:

exec self.startProcedure("PRINT", {"url": "file:///tmp/UM3_someFile.gcode.gz"})

which ties to print a file on your remote machine (you'll have to upload a file first though)

you can even authenticate yourself remotely using this method :Pbut that might be too much power, no?

Edited by Guest

Share this post


Link to post
Share on other sites

This was my first time posting in this forum and I am amazed by your support. Thanks for all the replies especially to @neotko and @lndy31 which helped to solved the issue that I had.

I'm curious to hear for what serious applications you are using the manual control.

I am doing a research on statistical modeling of cyber-physical systems such as 3D printers. I need manual access because I want to accurately synchronize the data that I am collecting from the 3D printer with the instructions which are being executed on it.

If you like to learn more, you may take look here:

http://aicps.eng.uci.edu/papers/DATE_sujit-2017.pdf

This is what we did with a 3D printer couple of months ago.

Share this post


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

    • Print Core CC | Red for Ruby
      Q: For some users, abrasive materials may be a new subject matter. Can you explain what it is that makes a material abrasive when you are not sure which print core to use?
      A: Materials which are hard in a solid piece (like metals, ceramics and carbon fibers) will generally also wear down the nozzle. In general one should assume...
      • 1 reply
    • "Back To The Future" using Generative Design & Investment Casting
      Designing for light-weight parts is becoming more important, and I’m a firm believer in the need to produce lighter weight, less over-engineered parts for the future. This is for sustainability reasons because we need to be using less raw materials and, in things like transportation, it impacts the energy usage of the product during it’s service life.
        • Like
      • 12 replies
×

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!