玩客云 Armbian 安装 CUPS 作为打印服务器 实现网络共享打印机
前言
前不久想买个打印机,逛了逛京东和淘宝发现新的激光打印机带复印、扫描、自动双面功能的打印机基本都要 1000+,并且耗材不便宜。于是考虑二手打印机,一开始看的是惠普,但是惠普最近二手的价格有点高,再加上惠普的大部分机器鼓粉一体、没有单独的纸盒,感觉不太满足我的需求。
后面看了兄弟的 2240D 和 2260D,价格挺实惠的还能自动双面,准备下单的时候又发现了兄弟 7060D,比起 2240D 和 2260D 又多了复印和扫描的功能(虽然也用不太上),但只要加 100,还是果断下单了 7060D。兄弟的二手打印机有时候会缺货或者溢价,也可以看看换壳的联想打印机,价格会稍微便宜些。不过这些机器年份都比较长了,怕翻车的还是建议买新机,比如 7180DN 之类的带 N 或者 W 的型号,可以直接联网用,不需要折腾了。
大部分二手的老款打印机以及部分新款的入门级打印机,都是没有网口和 WiFi 连接功能的,正常情况下只能用 USB 线连接电脑使用。想要通过网络打印,商家一般都会推荐买个小白打印盒子连接打印机,对于小白来说这个小白打印盒子确实很方便,连上就能用,还能支持微信打印。但是作为爱折腾的垃圾佬来说,100 多的价格还是不太能接受的,百度搜索了一下,随便找个带 USB 的路由器或者 Armbian 盒子一样能实现的网络打印。
首先尝试的是刷了梅林固件的网件路由器,但是好像并不能识别到打印机,可能是不支持 7060D 吧。多次尝试无果后,转向了刷好 Armbian 的玩客云,安装 CUPS 之后插上可以直接识别打印,过程还是挺顺利的,下面给大家分享一下完整的安装过程。
安装 CUPS
安装 CUPS 分为直接安装和 Docker 安装,我尝试了之后发现打印是都能够打印,但各有优缺点:
直接安装
- 需要手动修改配置文件
- 需要手动安装打印机驱动,部分品牌的打印机安装驱动比较麻烦
Docker 安装
- 打印机重启后,无法识别到打印机,需要重启 Docker 容器
- 开箱即用,集成了大部分打印机驱动,找不到对应机型的驱动也可以尝试相似机型的驱动
直接安装
- 安装 CUPS
apt install cups
- 修改 CUPS 配置文件
/etc/cups/cupsd.conf
- 将 Listen 修改为
0.0.0.0:631
- 将 Browsing 修改为
Yes
- 对应位置加上
Allow all
- 将 Listen 修改为
# Only listen for connections from the local machine.
Listen localhost:631
Listen 0.0.0.0:631
Listen /run/cups/cups.sock
# Show shared printers on the local network.
Browsing Off
Browsing Yes
BrowseLocalProtocols dnssd
# Restrict access to the server...
<Location />
Order allow,deny
Allow all
</Location>
# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
Allow all
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow all
</Location>
# Restrict access to log files...
<Location /admin/log>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow all
</Location>
- 重启 CUPS
systemctl restart cups
- 安装打印机驱动(不同品牌打印机驱动安装方式不同,演示以兄弟打印机为例,其他品牌如果安装困难可以考虑使用 Docker 安装 CUPS)
# 搜索 brother
apt search brother
# 搜索到的激光打印机驱动
printer-driver-brlaser/stable,now 6-3 armhf
printer driver for (some) Brother laser printers
# 安装这个驱动
apt install printer-driver-brlaser
Docker 安装
Docker 安装的 CUPS 已经自带了大部分打印机的驱动,也不需要自己修改配置文件,直接启动就可以使用。直接在 Docker Hub 搜索 CUPS 找一个最近更新的镜像就行,不过我用的玩客云是 32 位的,可选的不是很多,下面以 ydkn/cups 这个镜像为例
TIP
privileged: true
可以先不加看看能不能获取到打印机,获取不到的话再加上
version: "3.3"
services:
cups:
container_name: cups
image: ydkn/cups:latest
ports:
- 631:631
privileged: true
volumes:
- /opt/cups:/etc/cups
安装 Avahi
Avahi 是一套使应用程序能够公布或发现局域网上运行的服务和主机的系统。有了它之后,我们通过电脑或者手机添加打印机的时候,可以直接搜索到打印,不需要手动添加。
apt-get install avahi-daemon avahi-utils
配置 CUPS
- 访问 https://ip:631 进入 CUPS 的 Web UI,点击添加 Add Printer
- 添加打印机需要验证密码,直接安装的 CUPS 默认用户名为 root,默认密码为 SSH 密码;Docker 安装的需要参照作者的 README,像我使用的 ydkn/cups 默认用户名和密码均为 admin
- 在 Local Printers 中选择自己的打印机
- 勾选 Share This Printer
- 选择打印机型号,如果直接安装 CUPS 并正确安装了驱动,一般情况下能直接找到对应的型号;通过 Docker 安装的 CUPS 如果找不到对应型号,可以尝试使用相近型号
- 打印机的一些默认设置,根据自己的需求修改
- 看到这个界面打印机就成功添加到 CUPS 中了,接下来在电脑或者手机上添加网络打印机就可以使用了
Windows
- 打开
设置->蓝牙和其他设备->打印机和扫描仪->添加打印机或扫描仪->添加设备
,如果你正确配置了 Avahi,打印机会直接出现在列表中,添加即可
- 如果没有出现,可以点击手动添加,选择“按名称选择共享打印机”,将刚才 CUPS 中打印机页面的 URL 填入其中(例如
http://ip:631/printers/Brother_DCP-7060D
不要使用 https)
- 选择打印机驱动(7060D 的驱动安装程序正常情况下需要把打印机直接插在电脑上才可以正常安装,否则关闭安装程序后会自动将驱动卸载,但我们可以在安装程序提示将打印机连接到电脑时,不关闭安装程序,直接在 Windows 设置中添加打印机,就有驱动可以选择了)
- 点击确认之后,就已经添加成功了,可以进行正常打印了
Android
安卓手机的添加与 Windows 类似,在设置中找到“打印”,如果 Avahi 正常工作,可以直接在列表中找到;没有的话需要手动添加,选择“根据 IP 地址添加打印机”将刚才 CUPS 中打印机页面的 URL 填入其中(例如 ip:631/printers/Brother_DCP-7060D
不需要添加 http)即可。
使用时,直接选中文件,使用安卓自带的分享功能,选择打印服务就可以使用打印机了。不过自带的打印服务,打印时候的选项很少,想要设置打印的参数需要使用第三方 App ,比如趣打印高级版(夸克网盘 / UC 网盘) 之类的,添加打印机的过程也和自带的添加方式类似,就不再演示了。
总结
对于经常折腾小主机、盒子之类的,手头正好有设备的,如果驱动安装顺利的话,大概几分钟就可以把 CUPS 配置完成;对于没有设备的纯小白只想要网络打印还是考虑开箱即用的小白打印盒子或者直接购买带网络的打印机吧,不然买了玩客云、电视盒子之类的还得先刷机,不但费精力还有可能翻车。
对于路由器做打印服务器的,目前测试了梅林固件没有成功,手头正好还有刷了 OpenWRT 的新路由 3 和刷了 Padavan 的极路由 3,如果测试成功了,下次再分享如何配置。
还有美中不足的是 7060D 作为打印、复印、扫描一体机,无线扫描功能还没法实现,据说可以使用 SANE 来实现,但是在 SANE 支持文档里没有找到 7060D,而且 7060D 好像也没有 armhf 的扫描仪驱动,有成功的可以分享一下。
预览: