| 
									
										
										
										
											2017-04-24 09:17:35 -04:00
										 |  |  | These instructions assume the software will run on a Raspberry Pi | 
					
						
							| 
									
										
										
										
											2018-01-04 13:19:11 -05:00
										 |  |  | computer in conjunction with OctoPrint. It is recommended that a | 
					
						
							| 
									
										
										
										
											2020-02-17 20:44:36 -05:00
										 |  |  | Raspberry Pi 2, 3, or 4 computer be used as the host machine (see the | 
					
						
							| 
									
										
										
										
											2018-01-04 13:19:11 -05:00
										 |  |  | [FAQ](FAQ.md#can-i-run-klipper-on-something-other-than-a-raspberry-pi-3) | 
					
						
							|  |  |  | for other machines). | 
					
						
							| 
									
										
										
										
											2017-04-24 09:17:35 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-06 18:47:02 -04:00
										 |  |  | Klipper currently supports a number of Atmel ATmega based | 
					
						
							|  |  |  | micro-controllers, | 
					
						
							|  |  |  | [ARM based micro-controllers](Features.md#step-benchmarks), and | 
					
						
							|  |  |  | [Beaglebone PRU](beaglebone.md) based printers. | 
					
						
							| 
									
										
										
										
											2016-05-25 11:37:40 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | Prepping an OS image | 
					
						
							|  |  |  | ==================== | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Start by installing [OctoPi](https://github.com/guysoft/OctoPi) on the | 
					
						
							| 
									
										
										
										
											2020-09-04 21:24:26 -04:00
										 |  |  | Raspberry Pi computer. Use OctoPi v0.17.0 or later - see the | 
					
						
							| 
									
										
										
										
											2016-05-25 11:37:40 -04:00
										 |  |  | [octopi releases](https://github.com/guysoft/OctoPi/releases) for | 
					
						
							| 
									
										
										
										
											2016-12-21 11:55:55 -05:00
										 |  |  | release information. One should verify that OctoPi boots and that the | 
					
						
							|  |  |  | OctoPrint web server works. After connecting to the OctoPrint web | 
					
						
							| 
									
										
										
										
											2020-09-04 21:24:26 -04:00
										 |  |  | page, follow the prompt to upgrade OctoPrint to v1.4.2 or later. | 
					
						
							| 
									
										
										
										
											2016-05-25 11:37:40 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-21 17:34:35 -05:00
										 |  |  | After installing OctoPi and upgrading OctoPrint, it will be necessary | 
					
						
							|  |  |  | to ssh into the target machine to run a handful of system commands. If | 
					
						
							|  |  |  | using a Linux or MacOS desktop, then the "ssh" software should already | 
					
						
							|  |  |  | be installed on the desktop. There are free ssh clients available for | 
					
						
							|  |  |  | other desktops (eg, | 
					
						
							|  |  |  | [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/)). Use the | 
					
						
							|  |  |  | ssh utility to connect to the Raspberry Pi (ssh pi@octopi -- password | 
					
						
							|  |  |  | is "raspberry") and run the following commands: | 
					
						
							| 
									
										
										
										
											2016-05-25 11:37:40 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2017-04-20 12:30:15 -04:00
										 |  |  | git clone https://github.com/KevinOConnor/klipper | 
					
						
							|  |  |  | ./klipper/scripts/install-octopi.sh | 
					
						
							| 
									
										
										
										
											2016-05-25 11:37:40 -04:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-20 12:30:15 -04:00
										 |  |  | The above will download Klipper, install some system dependencies, | 
					
						
							|  |  |  | setup Klipper to run at system startup, and start the Klipper host | 
					
						
							|  |  |  | software. It will require an internet connection and it may take a few | 
					
						
							|  |  |  | minutes to complete. | 
					
						
							| 
									
										
										
										
											2016-05-25 11:37:40 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-24 09:17:35 -04:00
										 |  |  | Building and flashing the micro-controller | 
					
						
							|  |  |  | ========================================== | 
					
						
							| 
									
										
										
										
											2016-05-25 11:37:40 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-21 17:34:35 -05:00
										 |  |  | To compile the micro-controller code, start by running these commands | 
					
						
							|  |  |  | on the Raspberry Pi: | 
					
						
							| 
									
										
										
										
											2016-05-25 11:37:40 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2017-04-20 12:30:15 -04:00
										 |  |  | cd ~/klipper/ | 
					
						
							| 
									
										
										
										
											2016-05-25 11:37:40 -04:00
										 |  |  | make menuconfig | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-04 13:19:11 -05:00
										 |  |  | Select the appropriate micro-controller and review any other options | 
					
						
							| 
									
										
										
										
											2019-01-25 17:55:57 -05:00
										 |  |  | provided. Once configured, run: | 
					
						
							| 
									
										
										
										
											2016-05-25 11:37:40 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | make | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-27 19:47:16 -05:00
										 |  |  | It is necessary to determine the serial port connected to the | 
					
						
							|  |  |  | micro-controller. For micro-controllers that connect via USB, run the | 
					
						
							|  |  |  | following: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | ls /dev/serial/by-id/* | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | It should report something similar to the following: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | It's common for each printer to have its own unique serial port name. | 
					
						
							|  |  |  | This unique name will be used when flashing the micro-controller. It's | 
					
						
							|  |  |  | possible there may be multiple lines in the above output - if so, | 
					
						
							|  |  |  | choose the line corresponding to the micro-controller (see the | 
					
						
							|  |  |  | [FAQ](FAQ.md#wheres-my-serial-port) for more information). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For common micro-controllers, the code can be flashed with something | 
					
						
							|  |  |  | similar to: | 
					
						
							| 
									
										
										
										
											2016-06-14 15:15:34 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2017-05-01 12:08:45 -04:00
										 |  |  | sudo service klipper stop | 
					
						
							| 
									
										
										
										
											2019-02-27 19:47:16 -05:00
										 |  |  | make flash FLASH_DEVICE=/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0 | 
					
						
							| 
									
										
										
										
											2017-05-01 12:08:45 -04:00
										 |  |  | sudo service klipper start | 
					
						
							| 
									
										
										
										
											2016-06-14 15:15:34 -04:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-27 19:47:16 -05:00
										 |  |  | Be sure to update the FLASH_DEVICE with the printer's unique serial | 
					
						
							|  |  |  | port name. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-04 13:19:11 -05:00
										 |  |  | When flashing for the first time, make sure that OctoPrint is not | 
					
						
							|  |  |  | connected directly to the printer (from the OctoPrint web page, under | 
					
						
							| 
									
										
										
										
											2019-02-27 19:47:16 -05:00
										 |  |  | the "Connection" section, click "Disconnect"). | 
					
						
							| 
									
										
										
										
											2018-01-04 13:19:11 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-24 09:17:35 -04:00
										 |  |  | Configuring OctoPrint to use Klipper | 
					
						
							|  |  |  | ==================================== | 
					
						
							| 
									
										
										
										
											2016-05-25 11:37:40 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | The OctoPrint web server needs to be configured to communicate with | 
					
						
							| 
									
										
										
										
											2017-04-24 09:17:35 -04:00
										 |  |  | the Klipper host software. Using a web browser, login to the OctoPrint | 
					
						
							| 
									
										
										
										
											2019-02-27 20:03:44 -05:00
										 |  |  | web page and then configure the following items: | 
					
						
							| 
									
										
										
										
											2016-05-25 11:37:40 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-27 20:03:44 -05:00
										 |  |  | Navigate to the Settings tab (the wrench icon at the top of the | 
					
						
							|  |  |  | page). Under "Serial Connection" in "Additional serial ports" add | 
					
						
							| 
									
										
										
										
											2016-05-25 11:37:40 -04:00
										 |  |  | "/tmp/printer". Then click "Save". | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Enter the Settings tab again and under "Serial Connection" change the | 
					
						
							| 
									
										
										
										
											2019-02-27 20:03:44 -05:00
										 |  |  | "Serial Port" setting to "/tmp/printer". | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In the Settings tab, navigate to the "Behavior" sub-tab and select the | 
					
						
							|  |  |  | "Cancel any ongoing prints but stay connected to the printer" | 
					
						
							|  |  |  | option. Click "Save". | 
					
						
							| 
									
										
										
										
											2016-05-25 11:37:40 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-24 09:17:35 -04:00
										 |  |  | From the main page, under the "Connection" section (at the top left of | 
					
						
							| 
									
										
										
										
											2017-04-20 12:30:15 -04:00
										 |  |  | the page) make sure the "Serial Port" is set to "/tmp/printer" and | 
					
						
							| 
									
										
										
										
											2016-12-21 11:55:55 -05:00
										 |  |  | click "Connect". (If "/tmp/printer" is not an available selection then | 
					
						
							|  |  |  | try reloading the page.) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Once connected, navigate to the "Terminal" tab and type "status" | 
					
						
							| 
									
										
										
										
											2017-05-03 11:14:23 -04:00
										 |  |  | (without the quotes) into the command entry box and click "Send". The | 
					
						
							|  |  |  | terminal window will likely report there is an error opening the | 
					
						
							| 
									
										
										
										
											2018-01-04 13:19:11 -05:00
										 |  |  | config file - that means OctoPrint is successfully communicating with | 
					
						
							| 
									
										
										
										
											2017-12-21 17:34:35 -05:00
										 |  |  | Klipper. Proceed to the next section. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Configuring Klipper | 
					
						
							|  |  |  | =================== | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The Klipper configuration is stored in a text file on the Raspberry | 
					
						
							|  |  |  | Pi. Take a look at the example config files in the | 
					
						
							| 
									
										
										
										
											2020-12-03 15:06:58 -05:00
										 |  |  | [config directory](../config/). The | 
					
						
							| 
									
										
										
										
											2020-11-16 18:47:32 -05:00
										 |  |  | [config reference](Config_Reference.md) contains documentation on | 
					
						
							|  |  |  | config parameters. | 
					
						
							| 
									
										
										
										
											2017-12-21 17:34:35 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | Arguably the easiest way to update the Klipper configuration file is | 
					
						
							|  |  |  | to use a desktop editor that supports editing files over the "scp" | 
					
						
							|  |  |  | and/or "sftp" protocols. There are freely available tools that support | 
					
						
							|  |  |  | this (eg, Notepad++, WinSCP, and Cyberduck). Use one of the example | 
					
						
							|  |  |  | config files as a starting point and save it as a file named | 
					
						
							|  |  |  | "printer.cfg" in the home directory of the pi user (ie, | 
					
						
							|  |  |  | /home/pi/printer.cfg). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Alternatively, one can also copy and edit the file directly on the | 
					
						
							|  |  |  | Raspberry Pi via ssh - for example: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2020-11-16 18:47:32 -05:00
										 |  |  | cp ~/klipper/config/example-cartesian.cfg ~/printer.cfg | 
					
						
							| 
									
										
										
										
											2017-12-21 17:34:35 -05:00
										 |  |  | nano ~/printer.cfg | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Make sure to review and update each setting that is appropriate for | 
					
						
							|  |  |  | the hardware. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-27 19:47:16 -05:00
										 |  |  | It's common for each printer to have its own unique name for the | 
					
						
							|  |  |  | micro-controller. The name may change after flashing Klipper, so rerun | 
					
						
							|  |  |  | the `ls /dev/serial/by-id/*` command and then update the config file | 
					
						
							|  |  |  | with the unique name. For example, update the `[mcu]` section to look | 
					
						
							|  |  |  | something similar to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | [mcu] | 
					
						
							|  |  |  | serial: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-21 17:34:35 -05:00
										 |  |  | After creating and editing the file it will be necessary to issue a | 
					
						
							|  |  |  | "restart" command in the OctoPrint web terminal to load the config. A | 
					
						
							|  |  |  | "status" command will report the printer is ready if the Klipper | 
					
						
							|  |  |  | config file is successfully read and the micro-controller is | 
					
						
							|  |  |  | successfully found and configured. It is not unusual to have | 
					
						
							|  |  |  | configuration errors during the initial setup - update the printer | 
					
						
							|  |  |  | config file and issue "restart" until "status" reports the printer is | 
					
						
							|  |  |  | ready. | 
					
						
							| 
									
										
										
										
											2017-04-24 09:17:35 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | Klipper reports error messages via the OctoPrint terminal tab. The | 
					
						
							|  |  |  | "status" command can be used to re-report error messages. The default | 
					
						
							|  |  |  | Klipper startup script also places a log in **/tmp/klippy.log** which | 
					
						
							|  |  |  | provides more detailed information. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In addition to common g-code commands, Klipper supports a few extended | 
					
						
							|  |  |  | commands - "status" and "restart" are examples of these commands. Use | 
					
						
							|  |  |  | the "help" command to get a list of other extended commands. | 
					
						
							| 
									
										
										
										
											2017-10-10 12:39:06 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-12 18:46:25 -04:00
										 |  |  | After Klipper reports that the printer is ready go on to the | 
					
						
							| 
									
										
										
										
											2017-12-26 20:16:53 -05:00
										 |  |  | [config check document](Config_checks.md) to perform some basic checks | 
					
						
							|  |  |  | on the pin definitions in the config file. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-10 12:39:06 -04:00
										 |  |  | Contacting the developers | 
					
						
							|  |  |  | ========================= | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-30 15:00:00 -05:00
										 |  |  | Be sure to see the [FAQ](FAQ.md) for answers to some common questions. | 
					
						
							|  |  |  | See the [contact page](Contact.md) to report a bug or to contact the | 
					
						
							|  |  |  | developers. |