只用過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一次,重啟之后下次有機會再試。