【教程】使用树莓派和CUPS部署远程打印服务
前言
起因是葱酱的实验室里有一台比较老的HP激光打印机(型号是LaserJet 3055),这台打印机目前不支持网络打印,想要打印,就只能把笔记本电脑搬到打印机旁边,连接USB进行打印。而且笔者在实验室只有一台台式机,想要打印就只能求助同学。
一开始葱酱想用ESP32-S2或S3,搭配USB电平转换器和Espressif官方库提供的usb-printer
驱动来实现远程打印,但是手头没有USB模块,而且使用性能较低的单片机进行打印,很多图片或者较大的PDF都会有一些异常。正好我发现了一块闲置的树莓派,于是它派上了用场。
准备工作
我们需要准备以下硬件:
- 树莓派
- SD卡
- Type-C电源线,与打印机的连接线
树莓派的基本配置这里不再赘述,现在假设已经成功在SD卡上安装了Raspberry OS操作系统,并且已经通过wpa_supplicant
或者nmcli
连接到了无线网络,在电脑上按下Win+R,输入wt
,回车,在命令窗口输入:
1 | ssh [email protected] |
连接到树莓派的终端之后,我们就可以进行愉快的配置了。
配置
本地配置
首先,Linux系统下有一套控制打印机的软件工具,我们在apt
中执行安装操作:
1 | sudo apt update |
这样就启动了打印机的基本服务,我们现在进行config文件配置。在命令行输入:
1 | sudo vim /etc/cups/cupsd.conf |
会打开一个配置文件,我们需要修改以下几个
首先是文件的开头部分,确保以下的选项设置正确:
1 | ServerAlias * # 放开所有的ip连接 |
接下来是下面的代码块,需要补全成下面的形式:
1 | <Location /> |
输入Esc->:wq->Enter
保存退出。
为了保证macOS和手机设备的打印协议,我们安装适配服务,然后重启cups服务进程:
1 | sudo apt install avahi-daemon |
现在,已经部署好了打印机的连接服务,可以把树莓派连接到打印机的USB接口了。
连接和添加打印机
连接打印机之后,输入以下指令查看打印设备列表:
1 | sudo lpinfo -v |
显示出打印机即为成功,葱酱的终端显示了HP Fax和HP LaserJet 3055两个打印机设备。
在成功检测到打印机之后,打开电脑的浏览器,访问http://<IP>:631
,进入打印机设置界面,进去之后是这样的:
要在树莓派中注册打印机,需要执行:
- 点击 “Administration” > “Add Printer”,输入用户名密码(pi / 密码)。
- 选择你的打印机(一般是 USB 设备),点击 “Continue”。
- 命名打印机、设置共享:
- 勾选 “Share This Printer”;
- 选择合适的驱动(HP 打印机通常会自动识别)
- 完成添加。
添加打印机后,可以在管理界面的主页的Printer
选项卡进入打印机列表,如果添加成功,可以看到对应的打印机,点击标签进入详情页后,可以查看打印队列,打印历史等信息。这个界面下会有两个展开式选项卡,将第一个选中Maintainence
,第二个选择Print test page
,打印机会自动打印测试页,确认树莓派的控制有效且网络畅通。
在电脑端添加打印机
要想实现这一点,静态IP必不可少,我们继续在树莓派的shell中进行设置,假如我想分配一个192.168.1.50
的静态IP,可以这么操作,此操作适用于使用NetworkManager管理连接的系统:
1 | sudo nmcli connection show # 显示所有连接,记录你使用的连接名 |
此时连接会中断,我们需要在电脑的终端中重新连接指定的IP地址,比如笔者的设备:
1 | ssh pi@192.168.1.50 |
这样,IP地址就固定了,这一点在稍后的“手动添加”步骤中很关键。
Windows 10
Win10系统下,添加比较容易。我们在开始菜单打开“设置”,进入“打印机和扫描仪”选项,选择添加打印机,通常会显示为<Printer model> @raspberrypi
,一般情况下都可以添加成功。
在这个地方添加打印机
当由于打印机型号太老或者使用Win11系统出现添加失败的情况时,可以参照下面的操作方法。
Windows 11或其他无法直接添加的情况
在需要手动添加的情况下,我们先要获取打印机的驱动文件,笔者下载了一个hp的集成驱动安装程序。程序打开时,会提示解压inf和driver文件的路径(其他的驱动形式也一样,需要inf文件和驱动程序)。
我下载的驱动是这样的
在“设置”中搜索打印机的基础上,稍等片刻,打印机列表会出现 我的打印机不在此列表中 的选项,点击此选项,选择“通过网址添加打印机”,输入网址:http://192.168.1.50:631/printers/HP_LaserJet_3055
(不同型号打印机最后一个命名也不同,取决于在树莓派中添加打印机时在网络界面中取的名字)
这个地方
访问成功后,会进入驱动选择界面,选择 从磁盘安装 ,选择存有inf文件和driver文件夹的安装目录,inf文件可能会有很多个,笔者选择了最大的那个(283KB),选择后会列出兼容的所有设备,选择指定型号的设备或者类似于universal
之类的选项(笔者只显示了两个Universal驱动就随便选了),最后点击添加。
这样操作
一段时间后,电脑与打印机的通信完成,设备成功添加到打印机列表。形式类似于http://xxx:631 上的 HP LasetJet 3055 打印机
现在,我们打开一个文档,执行打印,选择该打印机,就可以实现便捷的远程打印啦~!
需要更新和修复的目标
葱酱认为树莓派这种搭载Linux系统的微型电脑终端用来驱动打印机其实是很简单的。这次折腾大概还有以下的不足之处——当然,如果有其他的建议和意见也可以写在下面的评论区,葱酱的后台有设置消息推送,一定会看评论的~qwq
- 成本:树莓派还是很贵的,自然不建议没有树莓派的宝子单独买这东西用来控制打印机,如果需要购买设备,可以搜”无线打印服务器“。葱酱后续也会设计使用ESP32-S3和TinyUSB方案的廉价版本。
- 兼容性:这点可能是打印机的原因,不支持Win11下的自动添加是一个很缺憾和不完美的地方。另外在手机设备的测试中,笔者只测试了Android设备,虽然可以识别和打印,但是连接质量低。经常会出现反复刷新无法找到设备的情况,虽然实验室使用手机打印并不是十分刚需,但笔者仍希望未来可以解决连接稳定性和兼容性的问题。
- 其他bug待发现和测试…
最后,好久没更新了,大家还好吗?(meow