[daily][device] linux添加打印机
只用过HP的打印机,用过两个,分别是:HP_p2055dn, 和 HP_LaserJet_Professional_M1216nfh 别的不知道。以下内容仅试用于HP打印机。
第一:装HP,打印机工具
pacman -S hplip
这个包,自带配置工具和打印机驱动。
其实,装这个就能用了,然后使用自带工具hp-toolbox,hp-setup之类的一设置。
不过在几年前使用第一台打印机2055的时候,我还不太懂,所以学习了一个开放的打印机接入服务cups(到底是干啥的,我也并不太知道),cups支持所有主流的打印机。
所以我当时使用的cups来添加打印机。理论上你可以用cups来添加管理所有的打印机,但是非HP的,应该是需要另装驱动的,我不清楚。
第二:基于以上,安装cups
pacman -S cups
第三:启动cups服务:
>>> systemctl start org.cups.cupsd
第四:使用浏览器访问cups服务: http://localhost:631/
在页面里可以找到添加打印机的向导,然后跑到打印机旁边,找到品牌,型号标签,然后记下来。使用socket://172.168.10.98/ 添加打印机。并选择品牌,然后选择对应型号的驱动。最后完成向导。
然后,打印测试页。在job里查看是否成功。如果错了,80%是驱动选错了。重来该步骤,直到成功!
第五:理论上,在第四步骤里边,你就已经成功了。如果你来到了第五步,说明你没有成功。
如果你的打印机不是HP,请关闭该页,去google重新search。然后,最终你一定成功,欢迎回来留言,分享经验 :)
如果你的打印机是HP的,并且是m1216nfh,那么恭喜你和我的问题一样,请继续阅读。
我遇到的问题:添加成功,打印失败,说:filter failed
查看了详细日志文件 /var/log/cups/error_log
W [11/Nov/2016:16:12:03 +0800] CreateProfile failed: org.freedesktop.ColorManager.AlreadyExists:profile id \'hp-m1216nfh-Gray..\' already exists W [11/Nov/2016:16:12:03 +0800] CreateProfile failed: org.freedesktop.ColorManager.AlreadyExists:profile id \'hp-m1216nfh-RGB..\' already exists E [11/Nov/2016:16:13:06 +0800] [Job 23] Job stopped due to filter errors; please consult the error_log file for details. D [11/Nov/2016:16:13:06 +0800] [Job 23] The following messages were recorded from 04:13:05 PM to 04:13:06 PM D [11/Nov/2016:16:13:06 +0800] [Job 23] Adding start banner page "none". D [11/Nov/2016:16:13:06 +0800] [Job 23] Adding end banner page "none". D [11/Nov/2016:16:13:06 +0800] [Job 23] File of type application/vnd.cups-pdf-banner queued by "root". D [11/Nov/2016:16:13:06 +0800] [Job 23] hold_until=0 D [11/Nov/2016:16:13:06 +0800] [Job 23] Queued on "hp-m1216nfh" by "root". D [11/Nov/2016:16:13:06 +0800] [Job 23] time-at-processing=1478851985 D [11/Nov/2016:16:13:06 +0800] [Job 23] 4 filters for job: D [11/Nov/2016:16:13:06 +0800] [Job 23] bannertopdf (application/vnd.cups-pdf-banner to application/pdf, cost 32) D [11/Nov/2016:16:13:06 +0800] [Job 23] pdftopdf (application/pdf to application/vnd.cups-pdf, cost 66) D [11/Nov/2016:16:13:06 +0800] [Job 23] gstoraster (application/vnd.cups-pdf to application/vnd.cups-raster, cost 99) D [11/Nov/2016:16:13:06 +0800] [Job 23] hpcups (application/vnd.cups-raster to printer/hp-m1216nfh, cost 0) D [11/Nov/2016:16:13:06 +0800] [Job 23] job-sheets=none,none D [11/Nov/2016:16:13:06 +0800] [Job 23] argv[0]="hp-m1216nfh" D [11/Nov/2016:16:13:06 +0800] [Job 23] argv[1]="23" D [11/Nov/2016:16:13:06 +0800] [Job 23] argv[2]="root" D [11/Nov/2016:16:13:06 +0800] [Job 23] argv[3]="Test Page" D [11/Nov/2016:16:13:06 +0800] [Job 23] argv[4]="1" D [11/Nov/2016:16:13:06 +0800] [Job 23] argv[5]="job-uuid=urn:uuid:fb232c3c-f68d-3701-7b64-7f034da35129 job-originating-host-name=localhost date-time-at-creation= date-time-at-processing= time-at-creation=1478851985 time-at-processing=1478851985" D [11/Nov/2016:16:13:06 +0800] [Job 23] argv[6]="/var/spool/cups/d00023-001" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[0]="CUPS_CACHEDIR=/var/cache/cups" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[1]="CUPS_DATADIR=/usr/share/cups" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[2]="CUPS_DOCROOT=/usr/share/cups/doc" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[3]="CUPS_FONTPATH=/usr/share/cups/fonts" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[4]="CUPS_REQUESTROOT=/var/spool/cups" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[5]="CUPS_SERVERBIN=/usr/lib/cups" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[6]="CUPS_SERVERROOT=/etc/cups" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[7]="CUPS_STATEDIR=/run/cups" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[8]="HOME=/var/spool/cups/tmp" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[9]="PATH=/usr/lib/cups/filter:/usr/bin:/usr/bin:/bin:/usr/bin" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[10]="SERVER_ADMIN=root@T7" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[11]="SOFTWARE=CUPS/2.2.1" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[12]="TMPDIR=/var/spool/cups/tmp" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[13]="USER=root" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[14]="CUPS_MAX_MESSAGE=2047" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[15]="CUPS_SERVER=/run/cups/cups.sock" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[16]="CUPS_ENCRYPTION=IfRequested" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[17]="IPP_PORT=631" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[18]="CHARSET=utf-8" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[19]="LANG=en_US.UTF-8" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[20]="PPD=/etc/cups/ppd/hp-m1216nfh.ppd" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[21]="RIP_MAX_CACHE=128m" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[22]="CONTENT_TYPE=application/vnd.cups-pdf-banner" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[23]="DEVICE_URI=socket://172.168.10.98" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[24]="PRINTER_INFO=HLYT-Printer-Black" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[25]="PRINTER_LOCATION=HLYT" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[26]="PRINTER=hp-m1216nfh" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[27]="PRINTER_STATE_REASONS=none" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[28]="CUPS_FILETYPE=document" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[29]="FINAL_CONTENT_TYPE=application/vnd.cups-raster" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[30]="AUTH_I****" D [11/Nov/2016:16:13:06 +0800] [Job 23] Started filter /usr/lib/cups/filter/bannertopdf (PID 5878) D [11/Nov/2016:16:13:06 +0800] [Job 23] Started filter /usr/lib/cups/filter/pdftopdf (PID 5879) D [11/Nov/2016:16:13:06 +0800] [Job 23] Started filter /usr/lib/cups/filter/gstoraster (PID 5880) D [11/Nov/2016:16:13:06 +0800] [Job 23] Started filter /usr/lib/cups/filter/hpcups (PID 5881) D [11/Nov/2016:16:13:06 +0800] [Job 23] Started backend /usr/lib/cups/backend/socket (PID 5882) D [11/Nov/2016:16:13:06 +0800] [Job 23] pdftopdf: Last filter determined by the PPD: hpcups; FINAL_CONTENT_TYPE: application/vnd.cups-raster => pdftopdf will not log pages in page_log. D [11/Nov/2016:16:13:06 +0800] [Job 23] PDF template file doesn\'t have form. It\'s okay. D [11/Nov/2016:16:13:06 +0800] [Job 23] OUTFORMAT=\"(null)\", so output format will be CUPS/PWG Raster D [11/Nov/2016:16:13:06 +0800] [Job 23] PID 5878 (/usr/lib/cups/filter/bannertopdf) exited with no errors. D [11/Nov/2016:16:13:06 +0800] [Job 23] STATE: +connecting-to-device D [11/Nov/2016:16:13:06 +0800] [Job 23] Looking up \"172.168.10.98\"... D [11/Nov/2016:16:13:06 +0800] [Job 23] PID 5879 (/usr/lib/cups/filter/pdftopdf) exited with no errors. D [11/Nov/2016:16:13:06 +0800] [Job 23] Color Manager: Calibration Mode/Off D [11/Nov/2016:16:13:06 +0800] [Job 23] Calling FindDeviceById(cups-hp-m1216nfh) D [11/Nov/2016:16:13:06 +0800] [Job 23] Found device /org/freedesktop/ColorManager/devices/cups_hp_m1216nfh D [11/Nov/2016:16:13:06 +0800] [Job 23] Calling org.freedesktop.ColorManager.Device.Get(ProfilingInhibitors) D [11/Nov/2016:16:13:06 +0800] [Job 23] Calling FindDeviceById(cups-hp-m1216nfh) D [11/Nov/2016:16:13:06 +0800] [Job 23] Found device /org/freedesktop/ColorManager/devices/cups_hp_m1216nfh D [11/Nov/2016:16:13:06 +0800] [Job 23] Calling GetProfileForQualifiers(Gray.Plain....) D [11/Nov/2016:16:13:06 +0800] [Job 23] Failed to send: org.freedesktop.ColorManager.Device.NothingMatched:nothing matched expression \'Gray.Plain.,Gray.Plain.*,Gray.*.,Gray.*.*,*\' D [11/Nov/2016:16:13:06 +0800] [Job 23] Failed to get profile filename for cups-hp-m1216nfh D [11/Nov/2016:16:13:06 +0800] [Job 23] Color Manager: no profiles specified in PPD D [11/Nov/2016:16:13:06 +0800] [Job 23] Set job-printer-state-message to "Color Manager: no profiles specified in PPD", current level=INFO D [11/Nov/2016:16:13:06 +0800] [Job 23] Color Manager: ICC Profile: None D [11/Nov/2016:16:13:06 +0800] [Job 23] Ghostscript using Any-Part-of-Pixel method to fill paths. D [11/Nov/2016:16:13:06 +0800] [Job 23] Ghostscript command line: gs -dQUIET -dPARANOIDSAFER -dNOPAUSE -dBATCH -dNOINTERPOLATE -dNOMEDIAATTRS -sstdout=%stderr -sOutputFile=%stdout -sDEVICE=cups -sMediaType=Plain -sOutputType=0 -r600x600 -dMediaPosition=7 -dDEVICEWIDTHPOINTS=612 -dDEVICEHEIGHTPOINTS=792 -dcupsBitsPerColor=1 -dcupsColorOrder=0 -dcupsColorSpace=3 -dcupsRowCount=1 -dcupsRowStep=2 -dcupsInteger0=2 -scupsPageSizeName=Letter -I/usr/share/cups/fonts -c \'<</.HWMargins[12.000000 12.000000 12.000000 12.000000] /Margins[0 0]>>setpagedevice\' -f -_ D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[0]=\"CUPS_CACHEDIR=/var/cache/cups\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[1]=\"CUPS_DATADIR=/usr/share/cups\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[2]=\"CUPS_DOCROOT=/usr/share/cups/doc\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[3]=\"CUPS_FONTPATH=/usr/share/cups/fonts\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[4]=\"CUPS_REQUESTROOT=/var/spool/cups\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[5]=\"CUPS_SERVERBIN=/usr/lib/cups\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[6]=\"CUPS_SERVERROOT=/etc/cups\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[7]=\"CUPS_STATEDIR=/run/cups\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[8]=\"HOME=/var/spool/cups/tmp\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[9]=\"PATH=/usr/lib/cups/filter:/usr/bin:/usr/bin:/bin:/usr/bin\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[10]=\"SERVER_ADMIN=root@T7\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[11]=\"SOFTWARE=CUPS/2.2.1\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[12]=\"TMPDIR=/var/spool/cups/tmp\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[13]=\"USER=root\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[14]=\"CUPS_MAX_MESSAGE=2047\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[15]=\"CUPS_SERVER=/run/cups/cups.sock\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[16]=\"CUPS_ENCRYPTION=IfRequested\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[17]=\"IPP_PORT=631\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[18]=\"CHARSET=utf-8\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[19]=\"LANG=en_US.UTF-8\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[20]=\"PPD=/etc/cups/ppd/hp-m1216nfh.ppd\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[21]=\"RIP_MAX_CACHE=128m\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[22]=\"CONTENT_TYPE=application/vnd.cups-pdf-banner\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[23]=\"DEVICE_URI=socket://172.168.10.98\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[24]=\"PRINTER_INFO=HLYT-Printer-Black\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[25]=\"PRINTER_LOCATION=HLYT\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[26]=\"PRINTER=hp-m1216nfh\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[27]=\"PRINTER_STATE_REASONS=none\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[28]=\"CUPS_FILETYPE=document\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[29]=\"FINAL_CONTENT_TYPE=application/vnd.cups-raster\" D [11/Nov/2016:16:13:06 +0800] [Job 23] envp[30]=\"AUTH_INFO_REQUIRED=none\" D [11/Nov/2016:16:13:06 +0800] [Job 23] Start rendering... D [11/Nov/2016:16:13:06 +0800] [Job 23] Set job-printer-state-message to "Start rendering...", current level=INFO D [11/Nov/2016:16:13:06 +0800] [Job 23] Processing page 1... D [11/Nov/2016:16:13:06 +0800] [Job 23] Set job-printer-state-message to "Processing page 1...", current level=INFO D [11/Nov/2016:16:13:06 +0800] [Job 23] STATE: +hplip.plugin-error D [11/Nov/2016:16:13:06 +0800] [Job 23] prnt/hpcups/HPCupsFilter.cpp 486: m_Job initialization failed with error = 48 D [11/Nov/2016:16:13:06 +0800] [Job 23] PID 5881 (/usr/lib/cups/filter/hpcups) stopped with status 1. D [11/Nov/2016:16:13:06 +0800] [Job 23] Hint: Try setting the LogLevel to "debug" to find out more. D [11/Nov/2016:16:13:06 +0800] [Job 23] hrDeviceDesc=\"HP LaserJet Professional M1216nfh MFP\" D [11/Nov/2016:16:13:06 +0800] [Job 23] prtGeneralCurrentLocalization type is 5, expected 2! D [11/Nov/2016:16:13:06 +0800] [Job 23] backendWaitLoop(snmp_fd=7, addr=0x55740d4f2128, side_cb=0x55740bc95230) D [11/Nov/2016:16:13:06 +0800] [Job 23] Connecting to 172.168.10.98:9100 D [11/Nov/2016:16:13:06 +0800] [Job 23] Connecting to printer. D [11/Nov/2016:16:13:06 +0800] [Job 23] STATE: -connecting-to-device D [11/Nov/2016:16:13:06 +0800] [Job 23] Connected to printer. D [11/Nov/2016:16:13:06 +0800] [Job 23] Connected to 172.168.10.98:9100... D [11/Nov/2016:16:13:06 +0800] [Job 23] backendRunLoop(print_fd=0, device_fd=8, snmp_fd=7, addr=0x55740d4f2128, use_bc=1, side_cb=0x55740bc95230) D [11/Nov/2016:16:13:06 +0800] [Job 23] STATE: +cups-waiting-for-job-completed D [11/Nov/2016:16:13:06 +0800] [Job 23] Waiting for printer to finish. D [11/Nov/2016:16:13:06 +0800] [Job 23] PID 5882 (/usr/lib/cups/backend/socket) exited with no errors. D [11/Nov/2016:16:13:06 +0800] [Job 23] Processing page 2... D [11/Nov/2016:16:13:06 +0800] [Job 23] Rendering completed D [11/Nov/2016:16:13:06 +0800] [Job 23] PID 5880 (/usr/lib/cups/filter/gstoraster) exited with no errors. D [11/Nov/2016:16:13:06 +0800] [Job 23] End of messages D [11/Nov/2016:16:13:06 +0800] [Job 23] printer-state=3(idle) D [11/Nov/2016:16:13:06 +0800] [Job 23] printer-state-message="Rendering completed" D [11/Nov/2016:16:13:06 +0800] [Job 23] printer-state-reasons=hplip.plugin-error
第六:直接使用hplip的工具安装,不使用cups
hp-setup -i 172.168.10.98
不需要指定驱动,自动识别,自动安装。
完成向导,打印测试页,好用!
总结:HP的打印机,就用HP的工具装,节约时间。: )
-------------------------------------------
后续:
因为并不知道为什么cups不好使,而小伙伴们都说重来没遇见过不好使的时候,所以我又尝试调查了一下,希望找到原因。
hp-setup之后,使用hp-check命令,可以查看到所以打印机的信息。成功添加的打印机使用了一个新生产的ppd,
/etc/cups/ppd/HP_LaserJet_Professional_M1216nfh_MFP.ppd
与原ppd比较如下:
152 (T7) ~/Src/tss/tss_sys >>> diff 1 2 3c3 < *%%%% Created by the CUPS PPD Compiler CUPS v2.1.3. --- > *%%%% Created by the CUPS PPD Compiler CUPS v2.2.1. 29c29 < *cupsVersion: 2.1 --- > *cupsVersion: 2.2 153 (T7) 1 ~/Src/tss/tss_sys >>>
所以,我一度以为是ppd里边这两行区别导致的问题,只要有了新ppd,就可以正常使用了(另外,这个新PPD是从哪来的?)
之后,我使用这个新ppd用cups重新加载了一次,未修复,现象与之前保持一致。
----------------------------------- Update @ 2016-11-30 ----------------------------------
即使安装好了打印机,并且一切使用正常,cupsd服务也是必然要开的。不然应用程序并不能正确的找到打印机。
可以每次使用打印机之前启动,或者保持常开。(目前我,选择每次打印前手动开,因为我并不常常打印)
[tong@T7:~/Src/tss/tss_sys/daemon/pktdump] % systemctl enable org.cups.cupsd [tong@T7:~/Src/tss/tss_sys/daemon/pktdump] %
---------------------------------- Update @ 2016-12-12 ------------------------------------
上次把org.cups.cupsd服务disable掉了,今天start之后发现依然打印不了,enable之,下次再打。
/home/tong/tunnels [tong@T7] [17:41] > sudo systemctl status org.cups.cupsd ● org.cups.cupsd.service - CUPS Scheduler Loaded: loaded (/usr/lib/systemd/system/org.cups.cupsd.service; disabled; vendor preset: disabled) Active: active (running) since Mon 2016-12-12 17:41:11 CST; 38s ago Docs: man:cupsd(8) Main PID: 11396 (cupsd) Status: "Scheduler is running..." Tasks: 1 (limit: 4915) CGroup: /system.slice/org.cups.cupsd.service └─11396 /usr/bin/cupsd -l Dec 12 17:41:11 T7 systemd[1]: Starting CUPS Scheduler... Dec 12 17:41:11 T7 systemd[1]: Started CUPS Scheduler. Dec 12 17:41:43 T7 hpcups[11469]: prnt/hpcups/HPCupsFilter.cpp 528: DEBUG: ppdOpenFile failed for /etc/cups/ppd/HP_LaserJet_Professional_M1216nfh_MFP.ppd Dec 12 17:41:43 T7 hp[11470]: prnt/backend/hp.c 919: ERROR: null print job total=0 /home/tong/tunnels [tong@T7] [17:41] > ll /etc/cups/ppd/HP_LaserJet_Professional_M1216nfh_MFP.ppd -rw-r----- 1 root root 11K Nov 11 17:01 /etc/cups/ppd/HP_LaserJet_Professional_M1216nfh_MFP.ppd /home/tong/tunnels [tong@T7] [17:42] >
----------------------- Updated @ 2016-12-30 ----------------------
原来是因为打印机改了地址。再disable一次,重启之后下次有机会再试。