前言

之前在小树群的时候基于 OctoPrint 官方文档整理了一份在 Linux 上安装 OctoPrint 的教程,当时为了方便修改,将教程放到了腾讯文档(那时的我假装不知道有简书),有了自己的网站后才计划将它好好搬过来优化一下……

废话不多说,马上开始教程!

注意

本教程仅针对OctoPrint与Marlin配合使用,如果使用Klipper,建议移步至本人的另一篇教程【手把手教你安装Klipper】来安装配合Klipper使用的Fluidd界面。

准备材料

  • 一台装有 Linux 的电脑(Debian、Arch、RPM系均可,但是下面的教程仅包含Debian系和Arch系的安装教程)
    • Ubuntu 系统最低需要 18.04 LTS,Debian 系统最低需要 Debian 10(具体为啥看下面)
  • 一根 USB 连接线(根据主板接口选择,用于连接打印机到上位机

安装依赖软件

检查 Python 版本

现在的 Linux 发行版一般在安装时包含了 Python 3,且 OctoPrint 需要最低 Python 3.6 才能使用。

Ubuntu 18.04软件源内的Python为3.6,而Debian 10内置的Python版本为3.7,

系统版本越低,内置的Python只会越老,

而且手动安装新版本Python经本人测试会出现很多问题,不如使用内置对应版本Python的版本。

输入以下命令即可查询 Python 3 的版本:

# Arch 系(Arch Linux、Manjaro等)
python -V
# Debian 系(Ubuntu、Armbian等)
python3 -V

如果 Python 版本高于 3.6 的话,就可以进行接下来的安装了~

安装剩余的依赖软件

# Debian系(Ubuntu等)
sudo apt install python3-pip python3-dev python3-setuptools python3-venv python3-wheel git libyaml-dev build-essential
# Arch系(Arch Linux, Manjaro等)
sudo pacman -S --needed python-pip python-virtualenv python-setuptools python-wheel git base-devel

安装

(以下指令在 Ubuntu、Debian、Armbian 等系统运行时,需将指令中的python改为python3pip改为pip3

# 新建并进入文件夹
mkdir octoprint && cd octoprint
# 创建虚拟环境
python -m venv venv
# 进入虚拟环境,进入成功后路径前会出现(venv)字样
source venv/bin/activate
# 使用pip安装时速度可能很慢,可以使用以下命令变更pip的源(任选其一)
# 清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 豆瓣源
pip config set global.index-url https://pypi.doubanio.com/simple
# 腾讯源
pip config set global.index-url  https://mirrors.cloud.tencent.com/pypi/simple
# 阿里源
pip config set global.index-url  https://mirrors.aliyun.com/pypi/simple
# 安装Octoprint本体
pip install octoprint

以上指令运行完成后,即可使用octoprint serve命令运行 OctoPrint 进行初次配置。

使用电脑浏览器访问http://机器的ip地址/5000。如果一切无误,将出现 Setup Wizard(设置向导)页面,此时可以开始初始设置。

初始设置界面喵~

初始配置

这里先贴出一些重要的设置项目,以后会逐渐完善(咕咕咕

登录用户名/密码设置
匿名分析功能,选择Enable开头的即可
联网检测,默认每15分钟检测一次,开启就好
插件黑名单,自动禁用一些会造成问题的插件,建议开启
打印机参数设置,自己想写什么就写什么
打印平台设置,只需按照自己打印机的打印大小设置XYZ数值即可
喷头直径/挤出机数量设置
重启服务、关机指令设置,按图上填写即可,后面会进行相关设置

连接打印机

Serial Port(串口设定)中选择以/dev/ttyUSB开头的设备(如: /dev/ttyUSB0)后,按Connect即可自动尝试连接。

如果连接失败,State处含有文字Offline (Error: No more candidates to test, and no working port/baudrate combination detected.),请点击界面右边的Terminal标签查看输出,如果输出中含有Permission Denied字样,说明USB串口权限没有开放,需要手动开放权限。

使用sudo nano /etc/udev/rules.d/70-ttyusb.rules创建自动设置权限的配置文件,输入以下内容并保存:

KERNEL=="ttyUSB[0-9]*", MODE="0666"

重新插拔USB线后点击Connect即可成功连接。

进行打印

点击界面左侧Files-Upload,上传gcode文件(不建议使用Upload to SD功能上传到打印机的SD卡)

上传gcode文件后,点击模型下方的Load按键(文件夹图标),此时State处会显示模型的基本信息,按Print即可开始打印。

实现开机自启动

在 /etc/systemd/system 目录下,创建新文件 octoprint.service

sudo nano /etc/systemd/system/octoprint.service

输入以下内容:

[Unit]
Description=The snappy web interface for your 3D printer
After=network-online.target
Wants=network-online.target

[Service]
Environment="LC_ALL=C.UTF-8"
Environment="LANG=C.UTF-8"
Type=simple
User=用户名
ExecStart=/home/用户名/octoprint/venv/bin/octoprint

[Install]
WantedBy=multi-user.target

替换为自己的用户名并确认无误后保存。

输入sudo systemctl enable octoprint.service命令即可设置开机自启动,且可以通过systemctl status octoprint.service检查Octoprint的启动状态。

安装摄像头

OctoPrint支持通过mjpg-streamer来访问摄像头。

通过AUR安装mjpg-streamer(仅适用于Arch Linux)

如果系统中安装了yayyaourt等支持AUR的包管理器,可使用以下命令直接从AUR中安装mjpg-streamer:(以yay为例)

yay -S mjpg-streamer-git

编译安装mjpg-streamer(适用于Debian、Ubuntu等系统)

首先下载mjpg-streamer的源代码:

git clone https://github.com/jacksonliam/mjpg-streamer.git

若GitHub访问缓慢,请参考手把手教你安装Klipper文章中的代理服务,从代理服务器下载。

使用sudo apt install build-essential libjpeg8-dev cmake安装必要工具和依赖后,即可开始编译。

# 进入源代码目录
cd mjpg-streamer-experimental # 编译
make # 安装
sudo make install

测试mjpg-streamer

连接摄像头,使用sudo mjpg_streamer -i input_uvc.so测试摄像头,终端会出现以下内容(可能出现Error at xxx的消息,忽略即可):

MJPG Streamer Version: git rev: 310b29f4a94c46652b20c4b7b6e5cf24e532af39
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 640 x 480
 i: Frames Per Second.: -1
 i: Format............: JPEG
 i: TV-Norm...........: DEFAULT
 o: www-folder-path......: disabled
 o: HTTP TCP port........: 8080
 o: HTTP Listen Address..: (null)
 o: username:password....: disabled
 o: commands.............: enabled

打开浏览器输入http://设备的IP地址:8080/?action=stream,正常情况下浏览器窗口内将会出现视频画面。

配置开机启动

/etc/systemd/system目录下创建服务mjpg-streamer.service

sudo nano /etc/systemd/system/mjpg-streamer.service

输入以下内容:(如果是通过sudo make install编译安装,请将下文中的/usr/bin/mjpg_streamer改为/usr/local/bin/mjpg_streamer

[Unit]
Description=Webcam streaming service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/mjpg_streamer -i input_uvc.so

[Install]
WantedBy=multi-user.target

可在服务文件中通过参数对mjpg_streamer进行配置。

如要配置摄像头画面分辨率、帧率等参数,请参考input_uvc.so的配置文档

如要配置端口、服务器根目录、用户名密码等参数,请参考output_http.so的配置文档

保存后设置开机自启并启动服务。

# 开机自启
sudo systemctl enable mjpg-streamer.service
# 启动服务
sudo systemctl start mjpg-streamer.service

在OctoPrint中添加摄像头

登录Octoprint的Web界面,点击右上角小扳手,进入设置界面,选择Features下的Webcam & Timelapse,在界面右边填入摄像头的信息。(填写每一项后可以点击Test按键测试摄像头是否正常工作)

如果要启用延时摄影,需要确保系统中安装FFmpeg。

对于Debian、Ubuntu系统,可使用sudo apt install ffmpeg来安装,

对于Arch Linux、Manjaro等系统,使用sudo pacman -S ffmpeg即可。