让无线打印机再次升级,支持 iPhone、iPad 直接打印

让无线打印机再次升级,支持 iPhone、iPad 直接打印

办公室里有两台打印机,一台是兄弟 DCP-1618W,一台是爱普生 L805。买打印机的时候,并没有注意看是不是支持 iOS(包含 iPadOS)的 AirPrint,打印机自带的 APP 用起来也不是那么舒服,特别是某些 SAAS 系统直接打印的选项,还需要转换成 PDF 再到 APP 打印。

为了解决这个问题,我们尝试了各种方法,终于确定了一个稳定可行的方法,下面是抄作业教程。

先决条件

  • 内网有一台长期不关机的服务器,最好是 PVE
  • 实在不行,支持虚拟机的 NAS 也可以

准备工作

  • PVE 下载好 Ubuntu 24 的 CT 模板,然后创建一个特权容器(重点:需要带嵌套,教程另列)
  • 虚拟机里安装 Ubuntu 24,建议安装资源占用少的 Server 版,桌面版也是可以的

本教程以 PVE 里的 LXC 容器为例,因为它占用资源跟 Docker 差不多。

步骤一:更换国内镜像源

因为官方源非常慢,为了节省时间,我们必须更换成国内镜像源。PVE 容器里,直接在终端复制并运行下面对应的命令即可:

sed -i 's|http://archive.ubuntu.com|http://mirrors.aliyun.com|g' /etc/apt/sources.list && \
sed -i 's|http://security.ubuntu.com|http://mirrors.aliyun.com|g' /etc/apt/sources.list

替换完成后,照常运行更新命令:

apt update

步骤二:安装底层套件及驱动

A. 安装 CUPS 核心组件

apt install -y cups cups-filters

B. 配置 CUPS 允许局域网远程访问

默认情况下,CUPS 只允许在容器内部(localhost)访问管理页面。我们需要修改 /etc/cups/cupsd.conf 来放行局域网。

直接复制运行以下这几行配置命令:

# 1. 让 CUPS 监听所有网络接口(不只是 127.0.0.1)
cupsctl --remote-any

# 2. 允许从局域网内的其他机器访问管理后台和打印机
sed -i 's/<Location \/>/<Location \/>\n Allow all/' /etc/cups/cupsd.conf
sed -i 's/<Location \/admin>/<Location \/admin>\n Allow all/' /etc/cups/cupsd.conf
sed -i 's/<Location \/admin\/conf>/<Location \/admin\/conf>\n Allow all/' /etc/cups/cupsd.conf

# 3. 重启 CUPS 服务使配置生效
systemctl restart cups

C. 创建 CUPS 管理员账号

当你通过网页添加打印机时,CUPS 会弹窗要求输入账号密码。它使用的是 Linux 系统的本地账号。

为了安全和方便,我们可以直接把容器的 root 账户加入到 CUPS 的管理员组(lpadmin)中:

# 将 root 用户加入打印机管理组
usermod -aG lpadmin root

# 如果你之前没有给这个 LXC 容器的 root 设置过密码,请现在设置一个:
passwd root

D. 安装兄弟打印机驱动

Linux 社区有一个专门针对兄弟激光打印机的开源驱动项目叫 brlaser,它比官方那套繁琐的 32 位脚本更轻量、对新版系统的兼容性更好。

apt install -y printer-driver-brlaser

E. 安装 Epson 打印机驱动

爱普生喷墨照片机在 Linux 下的官方驱动和开源驱动都非常成熟。这里推荐安装 Linux 社区最强大的开源高精度喷墨驱动包 Gutenprint,它对 L805 的色彩和分辨率支持更好。

apt install -y printer-driver-gutenprint

F. 重启 CUPS 识别新驱动

驱动包安装完毕后,顺手重启一下 CUPS 服务,确保它刷新了驱动列表:

systemctl restart cups

步骤三:添加打印机

  1. 打开浏览器进入 CUPS 后台:https://[容器IP]:631
  2. 点击 Administration → Add Printer(输入 root 账号密码)
  3. Other Network Printers(其他网络打印机)列表中,点选 LPD/LPR Host or Printer,点击 Continue
  4. 先添加 DCP-1618W,Connection 里输入 lpd://[DCP-1618W的IP]/PASSTHRU,点击 Continue
  5. 弹出的页面里,Name 填一下打印机的名称(这个名称会出现在以后搜索出来的列表里),Description 和 Location 留空就行,勾选底部的 Share This Printer,点击 Continue
  6. 弹出来的页面里,选择打印机品牌 Brother,然后选择 Brother DCP-1600 series using brlaser,这就完成了添加
  7. 添加 L805,同样选择 LPD/LPR Host or Printer 点击 Continue,其他跟上次一样
  8. 打印机驱动选择时,L805 是没有对应系列和型号的,这里我们选择 Epson Stylus Photo R290
  9. 完成添加

步骤四:测试打印机驱动

CUPS 后台选择 Printers,点击列表的打印机名称,弹出的页面里选择 Print Test Page

让无线打印机再次升级,支持iphone,ipad直接打印

可以打印出准确的测试页,就接近成功啦。

步骤五:配置 AirPrint 需要的服务

A. 启用 Avahi 广播服务

# 启动并设置开机自启
systemctl enable avahi-daemon
systemctl start avahi-daemon

B. 配置 CUPS 允许向局域网广播

# 开启远程分享和浏览功能
cupsctl --share-printers --remote-printers

# 重启 CUPS 刷新广播状态
systemctl restart cups

C. 激活共享

cupsctl --share-printers

完成!

现在你的 Ubuntu 24.04 容器已经变成了一个完美的轻量级网络打印服务器。不管是 iPhone 还是 iPad,都能在局域网内无线打印了。

小建议

容器开机自启:别忘了在 PVE 的网页后台,选中这个容器,在「选项 (Options)」里把「开机自启 (Start at boot)」改成「是」,这样以后 PVE 宿主机或者服务器重启,打印服务也会跟着自动启动。虚拟机也是差不多,选择开机自启即可。