群晖安装打印服务器,驱动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要改成你的群晖服务器地址),界面如下:

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

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也给安装上了,所以就有第一个识别选项。

4、设置打印机名称,配置共享
Name:打印机名称,随便定义
Description:打印机详细描述,随便定义
Location:打印机位置,随便定义
Sharing:必须选中。

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安装又有点麻烦,有一堆依赖件,这里还是不要考虑了。

6、修改配置默认设置
打印纸默认改成A4

7、显示配置成功

三、查看宿主机的打印机广播
退回到群晖的终端环境,在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或者笔记本)如何调用群晖上的打印机服务。

浙公网安备 33010602011771号