前言
之前在小树群的时候基于 OctoPrint 官方文档整理了一份在 Linux 上安装 OctoPrint 的教程,当时为了方便修改,将教程放到了腾讯文档上(那时的我假装不知道有),有了自己的网站后才计划将它好好搬过来优化一下……
废话不多说,马上开始教程!
注意
本教程仅针对OctoPrint与Marlin配合使用,如果使用Klipper,建议移步至本人的另一篇教程【手把手教你安装Klipper】来安装配合Klipper使用的Fluidd界面。
准备材料
一台装有 Linux 的电脑(Debian、Arch、RPM系均可,但是下面仅包含Debian系和Arch系的安装教程,Ubuntu 系统需要 20.04 LTS,Debian 系统最低需要 Debian 10)、一根 USB 连接线(根据主板接口选择,用于连接打印机到上位机)。
安装准备
Arch Linux 用户注意:因 OctoPrint 暂不支持 Python 3.11,请务必使用
pyenv
等工具为 OctoPrint 提供合适的 Python 版本。
检查 Python 版本
现在的 Linux 发行版一般在安装时包含了 Python 3,且 OctoPrint 需要 Python 3.7-3.10 才能使用。输入python -v
或 python3 -v
即可查询 Python 的版本。如果 Python 版本符合要求的话,就可以进行接下来的安装了~
使用脚本自动安装
OctoPrint 官方现在提供了支持在绝大多数发行版(Debian、RPM、Arch系)上安装 OctoPrint 的脚本,使得安装过程简单方便许多。
安装必要组件
安装脚本会帮我们安装所需的所有文件,只需要安装 Git 和 pip 即可。
Ubuntu、Debian 等系统可使用以下命令:
sudo apt install git python3-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
开始自动安装
首先,使用git clone https://github.com/paukstelis/octoprint_install
下载脚本。
如果GitHub访问缓慢,可以将github.com
替换为hub.fgit.ml
后再运行此命令。
下载好脚本以后,进入脚本目录,执行sudo octoprint_install.sh
即可。
如果需要借助脚本安装摄像头,需要替换掉脚本内部的GitHub下载源,只有两处,自行替换或者使用
sed -i 's/github.com/hub.fgit.ml/g' octoprint_install.sh
均可。
执行后出现如下画面,选1开始安装。
*************************
octoprint_install 0.2.0
*************************
1) Install OctoPrint
2) Quit
Select operation:
脚本会询问当前使用的发行版,按照自己情况选择即可。
1) Ubuntu 20-22, Mint, Debian, Raspberry Pi OS 3) ArchLinux
2) Fedora/CentOS 4) Quit
OS type:
选择后按y
确认安装。
等待片刻,脚本会安装一些必要的依赖并安装OctoPrint。
安装后配置
脚本会询问是否安装haproxy,用于端口映射等用途。此次选择不安装。
You have the option of setting up haproxy.
This binds instance to a name on port 80 instead of having to type the port.
Use haproxy? [y/n]:
然后,脚本会询问是否安装摄像头相关服务,安装mjpg-streamer
或ustreamer
。
1) mjpeg-streamer
2) ustreamer (Recommended)
3) None
Which video streamer you would like to install?:
这一步,脚本会询问是否在此时设置OctoPrint的管理员账户。
OctoPrint can be configured at this time.
This includes setting up the admin user and finishing the startup wizards.
Do you want to setup your admin user now? [y/n]:
如果选择设置,只需输入用户名和密码即可。
Enter admin user name (no spaces):
用户名
Admin user: 用户名
Enter admin user password (no spaces):
密码
Admin password: 密码
User created:
...
随后,会询问是否进行初次使用设置。
Do first run wizards now? [y/n]: y # 是否进行初次使用设置
Enable online connectivity check? [y/n]: y # 检查网络连接
Enable plugin blacklisting? [y/n]: y # 插件黑名单
Enable anonymous usage tracking? [y/n]: y # 匿名分析
Use default printer (can be changed later)? [y/n]: y # 默认打印机配置,需要自行修改
最后的最后,会询问是否安装一些推荐插件,如果不能保证顺畅连接GitHub,建议先不要在这里安装插件。
Would you like to install recommended plugins now? [y/n]:
1) CancelObject 4) Terminal Commands Extended: 7) UI Customizer
2) Bed Visualizer 5) Active Filters Extended 8) All
3) Firmware Updater 6) PrintTimeGenius 9) Quit
Select recommended plugins to install:
到这里,OctoPrint本体就安装完成了,如果未安装摄像头,可以输入2退出,跳到本文后面的连接打印机部分继续。
System preparation complete!
*************************
octoprint_install 0.2.0
*************************
1) Add USB Camera
2) Quit
Select operation:
配置摄像头
在刚才的界面中,选择1) Add USB Camera
。
此时会出现插入摄像头的提示,如果已经插入摄像头,请在一分钟内重新插入,来进入下一步。
Plug your camera in via USB now (detection time-out in 1 min)
摄像头检测成功后会显示摄像头的相关信息,并进行一些相关配置。
Camera detected with serial number: SN0001
Camera Port (ENTER will increment last value in /etc/camera_ports): # 端口号,直接回车使用默认值
Camera Resolution [default: 640x480]: # 分辨率
1280x720
Selected camera resolution: 1280x720
Camera Framerate (use 0 for ustreamer hardware) [default: 5]: # 帧率,0为默认帧率
0
Selected camera framerate: 0
手动安装
安装剩余的依赖软件
# 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
改为python3
,pip
改为pip3
)
# 新建并进入文件夹
mkdir octoprint && cd octoprint
# 创建虚拟环境
python -m venv venv
# 进入虚拟环境,进入成功后路径前会出现(venv)字样
source venv/bin/activate
# 安装 OctoPrint 本体
pip install octoprint
以上指令运行完成后,即可使用octoprint serve
命令运行 OctoPrint 进行初次配置。
使用电脑浏览器访问http://机器的ip地址/5000
。如果一切无误,将出现 Setup Wizard(设置向导)页面,此时可以开始初始设置。
初始配置
这里先贴出一些重要的设置项目,以后会逐渐完善(咕咕咕
连接打印机
在
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文件。
上传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)
如果系统中安装了yay
、yaourt
等支持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
测试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
输入以下内容:
[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
即可。