Construct Protocol

From Hacklab.TO Public Wiki
Jump to: navigation, search

The Construct Protocol Project[edit]

The Construct Protocol is a new 3D printer network protocol which aims to make 3D printers accessible over local networks. At it's simplest you can view this as CUPS for 3D printers but it also allows for manual printer control and real time push-based monitoring of all the printer's vital signs (temperatures, print jobs, you name it - it has [or should have] an event).

The Construct Protocol is a project developed by Hacklabbers (Rob, ATrain, Geordie and Chris) and tested by Hacklabbers (Adam, Will, ATrain, Geordie, Rob, [ADD YOUR NAME HERE]). The basic idea was to use existing web technologies (HTML5 Web Sockets and HTTP Multipart Form Posts) to build something that would allow us to discover and control printers on any network easily whether it's online or just connected to your laptop's wifi hotspot at Makerfaire. The only non web-compatible (and completely optional) addition was the use of MDNS / DNS-SD (the same protocol used by OSX's AirPlay) to make the printers discoverable to users and devices on the network. It's my (Rob) hope that a UDP API will be added to HTML5 in the future since right now there is now way to discover a service on the local network.


Tegh is a construct client that allows us to control and monitor the printers from a command line interface. When I (Rob) first started working on this project I wanted to build a GUI to control the printers but the feedback I received was that a number of Hacklabbers would only use the new protocol if it had a command line version. Since the CLI-lovers seemed the hardest crowd to please I made the first client exactly what they asked for, after all the protocol is the thing that matters. Tegh is the spiritual successor to Pronsole.

Construct GUI?[edit]

Some day there may be a GUI-based construct client, it's what I initially set out to build and so some of you may have seen it already. But it's a ways off and that's all I'm saying until it's ready ;)

Why use Tegh / Construct?[edit]

  • It has a queue of upcoming print jobs (perfect for tuesday nights when everyone wants to use the printer)
  • It has an improved heads up display of all the important printer stats (temp / target temp / percent complete)
  • It can detect any 3D printer on the network (no need to change your workflow for new machines)
  • Construct is a websocket-based protocol so we can connect other devices like ATrain's awesome printer status sign. Now you don't even need your laptop to check the status of the printers
  • It's compatible with HTML5 so we can also monitor and control the printers through web sites

Using the 3d printers with Tegh and the Construct Protocol[edit]

The Ultimaker, Makerbot and Type A should all be configured to use Prontserve and Tegh. There is always the possibility that someone has disabled it (that happens a lot) but if prontserve is running here is what you need to do to use it.


See Tegh Installation Instructions. There are packages available for most common Hacklab OS's.


You can run the tegh command from your console (or open it from all programs / tegh in windows).

Tegh will automatically detect any printers that are running a print server at the lab. Select a printer from the list (or hit enter if only one shows up) and your in.

If you need further help type "help" into Tegh.

You can also get command-specific help by typing help and then the command you want to see more about, for example: "help add_job"

Note: always set the temp and let it get up to temperature before you start your job. It just works better that way.

Also note that 225 is the temperature for the Ultimaker with normal PLA ONLY. Consult the guide for each specific printer and material to get it's temp.

In case of failure, the new command to cancel the current print and/or stop the printer ASAP is:


After an estop the machine should automatically be reset and ready to receive new commands.

Quick Start Guide[edit]

move z:5
set temp e:225 
...Wait for the extruder temperature to reach the value you've set...
add_job /local/file/name