There are three ways to install OctoPrint on a Raspberry Pi: - Our Customized OctoPi - guysoft/OctoPi - Install OctoPrint from source on a Raspberry Pi. ---- =====Our Customized OctoPi===== This is the easiest way to use OctoPrint on a Raspberry Pi\\ ====1.Download Image==== [[https://github.com/WEEDO3DTECH/OctoPi/releases/download/v1.8.6/2022-09-22-raspios-bullseye-armhf-lite-eww.xz|Download our custom version of OctoPi]] .\\ ====2.Install image tool==== Download the latest version of [[https://www.raspberrypi.com/software/|Raspberry Pi Imager]] and install it. \\ ====3.Flash image==== Then: *Connect an SD card reader with the SD card inside. *Open Raspberry Pi Imager and choose the Customized OctoPi.{{:octoprint:0chose-image.png?400|}}{{:octoprint:1flash-image.png?400|}} *Choose the SD card you wish to write your image to. *Review your selections and click on the Write button to begin writing data to the SD Card. ====4.Connect Printer==== Select TINA2 from the "Printer Profile" settings, and connect the printer with 1000000 baud rate. {{:octoprint:tina2-octoprint-connection.png?600|}}\\ ---- =====guysoft/OctoPi===== The latest version of [[https://github.com/guysoft/OctoPi|OctoPi]] is 0.18.0 released on Jan 25, 2021. This version of OctoPi needs to update the serial driver of ch340/ch341. ====1.Install Image==== Unzip the guysoft/OctoPi image and install it to an sd card according to the installation instructions of guysoft/OctoPi. ====2.Login==== Log into your pi via SSH or other means\\ {{:octoprint:2login.png?400|}} ====3.Delete the older ch340/ch341 serial driver==== Check if the ch340/ch341 serial driver already exists:\\ ls /lib/modules/$(uname -r)/kernel/drivers/usb/serial/ Delete it:\\ sudo rm /lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch341.ko {{:octoprint:3delete-driver.png?400|}}\\ ====4.Build the newer serial driver and install it:==== ===a)Install the Linux kernel header file:=== The Linux kernel version of OctoPi V0.18.0 is 5.4.79, so we download the corresponding header file installation package. wget http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-kernel-headers_1.20201126-1_armhf.deb (If your Linux kernel version is not 5.4.79, download the corresponding one from http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/ ; \\ Use this command to check which version of your Linux kernel is: **uname -r**)\\ \\ Install the header file : sudo dpkg -i ./raspberrypi-kernel-headers_1.20201126-1_armhf.deb {{:octoprint:4install-header.png?400|}} ===b)Download the CH340/CH341 serial driver source code and unzip it=== wget http://www.weedo3dprinter.com/lib/exe/fetch.php/firmware/ch341ser_linux-kernel5.4.79.zip unzip ch341ser_linux-kernel5.4.79.zip {{:octoprint:5download-source.png?400|}} ===c)Build it:=== cd ch341ser_linux-kernel5.4.79 && make {{:octoprint:6build.png?400|}} ===d)Install it:=== sudo cp ch34x.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial/ sudo depmod {{:octoprint:7copy.png?400|}} ====5.Change OctoPrint source file==== ===a)Test Connection=== {{:octoprint:tina2-octoprint-test-connected.png?600|}}\\ **If you can connect the printer**,skip to section 6.\\ \\ {{:octoprint:tina2-octoprint-test-connection.png?600|}}\\ **If you can not connect the printer**, you need to change the serial communication python file.\\ ===b)change the serial communication python file=== Open the serial communication python file.\\ Its path seems like this: /home/pi/oprint/lib/python3.7/site-packages/octoprint/util/comm.py If your python version is not python3.7, just replace "python3.7" with your real version.\\ Write this code after opening the serial port and save it: #set default serial_obj.setDTR(False) serial_obj.setRTS(False) serial_obj.oopen() # force reboot printer time.sleep(0.1) serial_obj.setDTR(True) serial_obj.setRTS(True) time.sleep(1) serial_obj.setDTR(False) serial_obj.setRTS(False) # wait time.sleep(3) (**Be careful**, the OctoPrint source file uses spaces as indent.) {{:octoprint:tina2-octoprint-change-py.png}}\\ ====6.Reboot your Raspberry Pi and Connect the printer with its baud rate==== ===a)Reboot your Raspberry Pi, then add tina2 settings to the profile.=== {{:octoprint:tina2-octoprint-settings_1_.png?400|}} {{:octoprint:tina2-octoprint-settings_2_.png?400|}} {{:octoprint:tina2-octoprint-settings_3_.png?400|}} ===b)Connect printer with 1000000 baud rate=== {{:octoprint:tina2-octoprint-connection.png?600|}}\\ ---- =====Install OctoPrint from source on a Raspberry Pi===== This installation method is a bit complicated, if you do not have programming skills, we do not recommend you to use this method ====1.Install OctoPrint==== Install OctoPrint following the [[https://community.octoprint.org/docs|OctoPrint community documents]].\\ \\ **If you can connect the printer by baud rate 1000000**, skip to section 4.\\ \\ **If you can not connect the printer with OctoPrint**, continue with section 2 to update the serial driver of CH341: ====2.Update serial driver==== ===a)Update your Linux kernel=== sudo apt-get update sudo apt-get install raspberrypi-bootloader raspberrypi-kernel sudo reboot ===b)Install your Linux kernel header package=== sudo apt install raspberrypi-kernel-headers ===c)Download the CH340/CH341 serial driver source code and unzip it=== wget http://www.weedo3dprinter.com/lib/exe/fetch.php/firmware/ch341ser_linux-kernel5.4.79.zip unzip ch341ser_linux-kernel5.4.79.zip {{:octoprint:5download-source.png?400|}} ===d)Build it:=== cd ch341ser_linux-kernel5.4.79 && make {{:octoprint:6build.png?400|}} ===e)Install it:=== sudo cp ch34x.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial/ sudo depmod {{:octoprint:7copy.png?400|}} ====3.Change OctoPrint source file==== ===a)Test Connection=== {{:octoprint:tina2-octoprint-test-connected.png?600|}}\\ **If you can connect the printer**,skip to section 4.\\ \\ {{:octoprint:tina2-octoprint-test-connection.png?600|}}\\ **If you can not connect the printer**, you need to change the serial communication python file.\\ ===b)change the serial communication python file=== Open the serial communication python file which is usually placed in the site-packages of the python directory.\\ {your python installed directory}/site-packages/octoprint/util/comm.py Write this code after opening the serial port and save it: time.sleep(0.5) serial_obj.setDTR(False) serial_obj.setRTS(False) (**Be careful**, the OctoPrint source file uses spaces as indent.) {{:octoprint:tina2-octoprint-change-py.png?400|}} ====4.Reboot your Raspberry Pi and connect the printer with its baud rate==== ===a)Reboot your Raspberry Pi, then add TINA2 settings to the profile.=== {{:octoprint:tina2-octoprint-settings_1_.png?400|}} {{:octoprint:tina2-octoprint-settings_2_.png?400|}} {{:octoprint:tina2-octoprint-settings_3_.png?400|}} ===b)Connect the printer with 1000000 baud rate=== {{:octoprint:tina2-octoprint-connection.png?600|}}