Octoprint from https://octoprint.org/ is an open source version to control 3d printers from the web.

Figure 3.1. Octoprint

octo print temperature

OctoPi is a SDcard image (less than 2GByte) for Raspberry (Raspberry Pi A, B, A+, B+, B2, 3 and Zero) is available so installation a test it gets quickly. It uses the debian based raspian and has the default username is “pi”, default password is “raspberry”. sudo raspi-config configures it. sudo su changes to the root console and after this entering sudo is no more required.


Your SDcard might be bigger than the image. Once installed, the image can be expanded by sudo raspi-config to use the complete SDcard. Alternatively for people that like it complicated, the image could be made larger to have the same size of the SDcard using the truncate command.

Download and unzip the image from https://octoprint.org/download/

dd bs=4M if=2017-06-21-octopi-jessie-lite-0.14.0.img of=/dev/sdf or similar is a command and the only one to be made to put the image to a SDcard.

If the network works ssh pi@<IP address as> with password "raspberry" can be used to login. Otherwise a HDMI screen and a USB keyboard need to be plugged in.


Octopi is raspian (debian) based, however if it comes to configuring the network octopi uses the /boot/octopi-network.txt file instead of the debian file /etc/network/interfaces

If WLAN is used (since cable missing or avoiding conducted electromagnetic disturbances) the /boot/octopi-network.txt file needs to be edited to get the ssid and its psk (password):

iface wlan0-octopi inet manual
    wpa-ssid "<my ssid>"
    wpa-psk "<my pre shared key aka password>"

Once octoprint is accessed using its ip address in the browser, a printer profile should be added and set as default containing the printer settings. If auto connect to the printer fails, the appropriate port /dev/ttyUSB0 for the raspberry and the correct baudrate as 115200 should be set. Linux generally struggles with higher baud rates since those are out of the specs for physical com ports.

Since it is open source it belongs to a community and has lots of addons and plug-ins. Registered plug-ins can directly be installed using the web interface. Some of the useful plugins are:

  1. Automatic shot down, so when printing is finished the the raspi turns itself off in a saver way than just remove it power.

  2. Display Z shows the layer height so it is a good indication of the printing progress

  3. Navbar temperature shows the different temperatures in the header lines

  4. Display progress makes that the octoprint progress appears on the 3d printers display so it is the same as if the 3d printer prints from its SDcard.

  5. TerminalCommands creates buttons that can be pressed and issues custom G-code commands

Octoprint supports also slicing stl files into gcodes. However since slicing is one of the most important tasks in 3d printing an external slicer as slic3r that allows to observe the slicing results is recommended.

Gcode files can be uploaded but can not be directly rendered and printed. To print one of the file needs to be loaded and then it can also be graphically observed. The slicer sclic3r allows directly uploading gcode files to octoprint.

Figure 3.2. Gcode Viewer

octoprint gcode viewer

OctoPi detects an webcam and shows its streamed video in the control tab.

Figure 3.3. Webcam

octo print web cam

More important than to see how nice it looks is is to observe a disaster and stop printing.

Figure 3.4. Disaster

web cam

The wizard can be started by ssh pi@<ip address> and editing ~/.octoprint/config.yaml

firstRun: true

Since Octoprint is a web server it can also be accessed from the Internet. Obviously for this case it has to be configured (Access Control) to requiring a login to avoid that every body on the web can print. For most private people the router might be the only device having an Internet address. Therefore the router needs to configured to do port 80 forwarding for a web server. Then it already works, however the numeric IP address (as shown in the routers menu) that might change from time to time must be inserted. To avoid this, a dynamic DNS server can be setup (as from https://www.changeip.com) in the router so finally Octoprint and the printer can be seen under a address

Linurs Servernest startpage