群晖安装打印服务器,驱动HP P1106札记(二)—— CUPS配置

前面介绍了一大段群晖的配置,其中涉及到大量命令操作,对于有linux基础的同学,估计很简单,反之对于没基础的同学,虽然有点难,不过按图索骥也没啥大问题。

群晖DSM本质上是一个定制版Linux系统,有很多操作跟是linux 系统是通用的,而Linux又是借鉴了Unix系统,包括后面手机端的安卓、苹果端的MAC也有类似之处,基础的架构、常见命令都是通用的。

 

下面介绍CUPS的配置,主要包括两个方面:

一、打印机驱动

linux打印机驱动,客观来说有点复杂,最简单的办法,下载已经集成驱动的容器镜像文件,譬如前面olbat/cupsd。

在olbat/cupsd的介绍中明确提到,包含以下内容:(olbat/cupsd - Docker Image | Docker Hub

Included package

  • cups, cups-client, cups-filters
  • foomatic-db
  • printer-driver-all, printer-driver-cups-pdf
  • openprinting-ppds
  • hpijs-ppds, hp-ppd
  • sudo, whois
  • smbclient

 经过测试olbat/cupsd已包含 HP1106 Pro的驱动。

连接HP1106打印机到群晖的USB口,通电,在容器里已正确识别型号,具体如下:

# 这里03f0: 指HP家USB设备的厂商识别码
# 可以看到HP P1106的芯片其实 P1102,但是固件是P1106。
root@Nas220:~# lsusb -v -d 03f0: Bus 001 Device 007: ID 03f0:002a HP, Inc LaserJet P1102 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x03f0 HP, Inc idProduct 0x002a LaserJet P1102 bcdDevice 1.00 iManufacturer 1 Hewlett-Packard iProduct 2 HP LaserJet Professional P1106 iSerial 3 000000000QNBJ2N3PR1a bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x003e bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xc0 Self Powered MaxPower 98mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 7 Printer bInterfaceSubClass 1 Printer bInterfaceProtocol 2 Bidirectional iInterface 4 Printer Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 2 bInterfaceProtocol 16 iInterface 6 HP EWS Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 12 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 bNumConfigurations 1 can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0001 Self Powered

二、CUPS配置

1、打开cups配置首页 

地址 https://192.168.100.**:631/(这里的IP要改成你的群晖服务器地址),界面如下:

企业微信截图_17621520763654

 

 

2、登录管理页面

点菜单栏的Administration - >  Add Printer  ,弹出登录提示框,默认用户密码 print /print

企业微信截图_17621520878336

 

3、配置打印机

Loacl Printers显示已识别到:

HP LaserJet Professional P1106 USB 000000000QNBJ2N3PR1a HPLIP (HP Laserdet ProtesslonalP1106)
HP LaserJet Professional P1106 (HP LaserJet Professional P1106)

特别说明:

1)其中第一个是HPLIP驱动,第二个是通用USB驱动,选第二个就行。

2)第一个不用管,只有正确安装HPLIP的情况下才会出现。

HPLIP的下载、安装都有点麻烦,我因为试来试去,走了很多弯路,把hplip也给安装上了,所以就有第一个识别选项。

企业微信截图_1762152146563

 

4、设置打印机名称,配置共享

Name:打印机名称,随便定义

Description:打印机详细描述,随便定义

Location:打印机位置,随便定义

Sharing:必须选中。

企业微信截图_17621526527282

 

 5、选择打印机描述文件,也就是PPD文件

Make:选HP

Model:HP LaserJet Pro P1566 Foomatic/foo2zjs-z2 (recommended)(en) 

 

特别说明:

 HP LaserJet Pro P1566 Foomatic/foo2zjs-z2 这个选项在很下面,需要翻页好一阵子才能找到,实测下来 P1566 用起来完全没问题。

另外,千万不要去选带  hpcups 3.20.3, requires proprietary plugin (en) 字样的model文件

带hpcups代表依赖于 HPLIP,要是没有安装HPLIP,即便配置成功,打印也会报错,而HPLIP安装又有点麻烦,有一堆依赖件,这里还是不要考虑了。

企业微信截图_17621527186461

 6、修改配置默认设置

打印纸默认改成A4 

企业微信截图_17621527458069

 7、显示配置成功

企业微信截图_17621527535828

三、查看宿主机的打印机广播

 退回到群晖的终端环境,在netterm下执行avahi-browse查看打印机广播情况:

root@Nas220:/etc/cups# avahi-browse -r -a -t |grep HP1106
   txt = ["printer-type=0x809006" "printer-state=3" "TLS=1.2" "UUID=af226e4f-d873-3da7-4d61-61e8fee2d54f" "URF=DM3" "pdl=application/octet-stream,application/pdf,application/postscript,image/jpeg,image/png,image/pwg-raster,image/urf" "product=(HP LaserJet Pro P1566)" "priority=0" "note=HOME" "adminurl=https://nas220.local.:631/printers/HP1106" "ty=HP LaserJet Pro P1566 Foomatic/foo2zjs-z2 (recommended)" "rp=printers/HP1106" "qtotal=1" "txtvers=1"]

 

 显示广播成功。

四、小结

到这里CUPS 的配置就基本结束,这里也简要总结一下:

1、有关HP打印机的配置,网上有大量误导,譬如驱动和ppd文件,驱动比较麻烦,主要是看内核是否有集成。

PPD文件本质是个文本文件,主要定义纸型、边距等内容,所以可以替换使用。

2、cups的配置都保存在/etc/cups下,涉及cupsd.conf ,printers.conf ,classes.conf 三个文件。

其中cupsd.conf 是可以修改和配置的,printers.conf是自动生成的,classes.conf是配置类才会生成。

最重要一点,正常情况下不用做任何改动,网上有一堆改这改那的配置,其实都有版本适用性问题,所以这里就干脆不解释,也不去改动。

3、cups与avahi的配合,一个在容器里,一个在宿主机内,他们通过共享宿主机与容器的dbus和网络来实现通讯

以打印来举例,客户端发起打印,向群晖ip:631端口发送报文,容器和群晖会同时收到报文,因为群晖的631端口服务已经停掉,就交由容器内的cups服务调用打印机进行打印。

以打印机广播举例,容器内的最新版的cups,在打印机配置成功后,会自动通过宿主机的dbus将信息传递给宿主机的avahi。

宿主机avah服务识别到待广播的打印机,自动开启广播服务,并不需要在宿主机的/etc/avahi/services/下增加配置文件

网上有一堆关于avahi的配置文件的描述,都是老版本的需求,新版是不需要手动配置

 

下一章,介绍windows、安卓(小米手机等)、mac(苹果手机或者iPad或者笔记本)如何调用群晖上的打印机服务。

posted @ 2025-11-03 17:33  黯然销魂掌2015  阅读(29)  评论(0)    收藏  举报

联系方式:qq 16906913