CUPS是一个能够让传统的、简易的、带usb接口的打印机变成可以通过网络直接打印包括苹果的airprint的服务

本来N1的openwrt固件就集成了USB打印机,已经能实现通过内网直接打印,但是手机上的文件每次都需要发送到电脑才可以完成打印,所以有没有办法能够实现通过苹果自带的airprint直接打印呢?

答案是肯定的,就是CUPS!!

因为N1本身就运行着Docker CE,所以我更倾向于docker版本的cups。经过一番探索,最终实现了目标,以下记录搭建过程。

  1. 把打印机的usb接口和N1相连接
  2. 拉取镜像
docker pull Tigerj/cups-airprint
  1. 创建容器
docker run \
       -d \
       --name=cups \
       --net=host \
       --privileged=true \
       --restart=always \
       --device /dev/bus/usb \
       --device /dev/usb \
       -v /var/run/dbus:/var/run/dbus \
       -e CUPSADMIN="admin" \
       -e CUPSPASSWORD="password" \
       tigerj/cups-airprint
  1. 访问http://ip:631 账号密码分别是admin/password
  2. 添加打印机:Administration——Add Printesr一般这个时候直接就能看到你的打印机了,接着勾选Share This Printer,在Make选择你的打印机品牌,在Model处选择打印机的驱动,最后在General处选择要更改的基本设置即可




这样苹果电脑和手机就可以直接搜索到这台打印机了

如果window电脑要连接这台打印机,需要在cups网页中点击Printers,选中你的打印机,复制该网页的网址,然后把https改成http



补充创建容器命令解析

docker run \
       -d \
       --name=cups \
       --net=host \
       --privileged=true \    //这一句在官方搭建教程中是没有,这一句意义是让容器获得真正的root权限,也是为什么我一直搭建失败的原因
       --restart=always \
       --device /dev/bus/usb \  //这一句需要根据实际设备usb路径而修改
       --device /dev/usb \      //同上,作者只是多写了一个常用的usb路径,可删除
       -v /var/run/dbus:/var/run/dbus \
       -e CUPSADMIN="admin" \   //cups网页的用户名,可自行修改
       -e CUPSPASSWORD="password" \  //cups网页的密码,可自行修改
       tigerj/cups-airprint

如果是使用docker creat命令(镜像作者更推荐)创建容器,记得再补充一句docker start cups才会启动服务
有了CUPS服务后,就不再需要N1自带的usb打印机以及打印机服务器了

参考文章——镜像
参考文章