macOS/Windows如何共享Linux主机上的打印机-CUPS配置指南

配置和连接CUPS服务的过程中,楼主遇到了很多意想不到的问题。
特别鸣谢 @何同学 的友情帮助,在互联网中关于CUPS问题解决方案零碎的情况下,何同学孜孜不倦地成功探索出了优雅、可行的解决方案!!!

打印机网络服务设置(若只需要连接可以忽视)

  1. 打印机通过USB接口连接到Linux主机上
  2. 在打印机官网上找到对应型号,选择好适用的系统版本,按照指引安装好LPRCUPS驱动程序(都要装)
  3. 以Brother HL-2260D在Linux rpm上的安装为例
  • 下载地址:https://support.brother.com/g/b/downloadlist.aspx?c=cn&lang=zh&prod=hl2260d_cn&os=10013,在操作系统中选择对应系统
  • 安装方法:sudo rpm -ivh <文件名>.rpm
  • 如果安装出错想要卸载,sudo rpm -e <包名> ,包名不带.rpm
  • CentOS下载rmp,如果是Ubuntu下载pkg
  • 如果在安装LPR驱动时,报错/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory, 需要安装缺失的库文件。sudo yum install glibc.i686sudo apt-get install libc6:i386
  1. 安装好后,访问http://localhost:631即可访问管理页面
  2. 在管理页面添加打印机,如果驱动正确安装了,打印机型号选择列表里面应该会出现对应型号,选择它,CUPS就会加载所选型号的驱动。这时候应该就可以用了,尝试打印一下测试页吧!
  3. 如果需要其它设备也可以连接到WEB管理页面,需要额外设置
运行这条命令: vi /etc/cups/cupsd.conf
将文件配置成下面这样,<your-desktop-client-ip-or-subnet>填写需要允许的网段

# Restrict access to the server...
<Location />
  Order allow,deny
  Allow 127.0.0.2
  Allow <your-desktop-client-ip-or-subnet>
</Location>

运行service cups restart
  • 如果外部设备无法正常访问,请在firewalld中开启TCP的631端口
    • sudo firewall-cmd --add-port=631/tcp --permanent
    • sudo firewall-cmd --reload
  1. WEB页面http://localhost:631进入Printers,找到Device Name,点击进入后复制整个URL

如果你的Linux主机用的是ARM处理器(例如树莓派)

Brother打印机的Linux驱动仅适用于x86架构,如果你的主机是ARM处理器,则需要安装ARM驱动,方法如下:

sudo apt update
sudo apt install foomatic-db
sudo systemctl restart cups

上面的foomatic-db是apt源上的一个打印机驱动包,里面包含了各种常见型号的驱动,如果没有你用的型号,请尝试:

  1. 选择近似型号的驱动,看看能不能用,比如HL-7080D是HL-2260D带扫描仪的升级型号,打印模块是一样的,HL-2260D就可以使用HL-7080D的打印驱动
  2. 上国际互联网查找你想要的驱动,关键词“XXX printer Arm driver”,XXX是打印机型号

客户端连接网络打印机设置

  1. Windows 10
  • 首先安装对应型号的驱动程序
    • 需要下载“全套驱动程序和软件包” ,只需要下载“打印机驱动程序”,运行后自动解压缩即可。
  • Win+i 进入设置- 设备-打印机-刷新-添加打印机-我的设备不在列表-按名称选择共享打印机-粘贴刚刚输入的URL
    • http://<server_ip>:631/printers/<device_name>
    • <server_ip>是打印机服务器IP
    • <device_name>需要进入WEB管理页面自行查看
  • 下一步-选择设备产商和具体型号后即可正常使用
    • 如果没有显示,选择Generic也可
  1. macOS 14.3
  • 不需要安装驱动,macOS会调用Linux上的CUPS驱动
  • 桌面上点击左上角苹果图标-系统设置-打印机与扫描仪-添加打印机…-点击地球按钮(IP )
    • 填写基本同Windows差不多,只不过分开选择
      • 地址填写 <server_ip>:631/
        • 不带http://
      • 协议选择IPP
      • 队列填写printers/<device_name>
        • 这项填写很关键 ,如果不填写或者填写错误,会出现通信失败的情况
        • <device_name>需要进入WEB管理页面自行查看
      • 名称自定义
      • 位置选填
      • 选择“普通PostScript打印机”,确认即可

Mac “神秘代码12345@PJX 12345”问题

现象1:在macOS端安装CUPS驱动后,连接Linux CUPS网络打印机服务,一旦打开系统打印对话窗(即让大家选择打印属性的页面,如页码等选项),打印机就会自动启动,打印出一张纸,左上角有“12345@PJX 12345”字样,第三方打印对话窗(如Edge)则没有这个问题

现象2:在macOS端安装CUPS驱动后,连接Linux CUPS网络打印机服务,提交打印任务后,打印机无响应,只会在macOS打开系统打印对话窗时自动打印出左上角有“12345@PJX 12345”的纸张

问题成因

楼主探索了很久,最后 @何同学 通过与Windows添加网络打印机过程的区别,结合网络帖子,终于找到了成因。其实是macOS中的CUPS驱动和Linux主机上的驱动重叠,导致异常。

解决方案

很简单,上文macOS连接中提到过,“不需要安装驱动”和“选择“普通PostScript打印机”。这样CUPS驱动不会重叠,神秘代码不会出现,macOS也可以正常打印了。

美中不足

macOS 选择“普通PostScript打印机” 后,虽然没有神秘代码,也可以正常打印,但是打印时长显著增加,大约需要12s的响应时间,之后才会开始打印。

猜你喜欢

转载自blog.csdn.net/Cony_14/article/details/136369146