Всем доброго!
Питаюсь прикрутить к линукс (slax linux) термопринтер Custom VKP 80 через CUPS. Драйвера скачал, установил, даже принтер добавил, но вот печатать он отказывается 
Статус : stopped «Fillter failed» ну и собственно лог ошибок:
E [26/Jul/2018:10:06:11 -0400] [Job 9] Unable to open raster stream - : Broken pipe
E [26/Jul/2018:10:06:19 -0400] [Job 9] Job stopped due to filter errors; please consult the error_log file for details.
D [26/Jul/2018:10:06:19 -0400] [Job 9] The following messages were recorded from 10:06:11 AM to 10:06:19 AM
D [26/Jul/2018:10:06:19 -0400] [Job 9] Adding start banner page "none".
D [26/Jul/2018:10:06:19 -0400] [Job 9] Adding end banner page "none".
D [26/Jul/2018:10:06:19 -0400] [Job 9] File of type application/vnd.cups-pdf-banner queued by "root".
D [26/Jul/2018:10:06:19 -0400] [Job 9] hold_until=0
D [26/Jul/2018:10:06:19 -0400] [Job 9] Queued on "CUSTOM_Engineering_VKP80" by "root".
D [26/Jul/2018:10:06:19 -0400] [Job 9] time-at-processing=1532613971
D [26/Jul/2018:10:06:19 -0400] [Job 9] 4 filters for job:
D [26/Jul/2018:10:06:19 -0400] [Job 9] bannertopdf (application/vnd.cups-pdf-banner to application/pdf, cost 32)
D [26/Jul/2018:10:06:19 -0400] [Job 9] pdftopdf (application/pdf to application/vnd.cups-pdf, cost 66)
D [26/Jul/2018:10:06:19 -0400] [Job 9] gstoraster (application/vnd.cups-pdf to application/vnd.cups-raster, cost 66)
D [26/Jul/2018:10:06:19 -0400] [Job 9] rastertovkp80 (application/vnd.cups-raster to printer/CUSTOM_Engineering_VKP80, cost 0)
D [26/Jul/2018:10:06:19 -0400] [Job 9] job-sheets=none,none
D [26/Jul/2018:10:06:19 -0400] [Job 9] argv[0]="CUSTOM_Engineering_VKP80"
D [26/Jul/2018:10:06:19 -0400] [Job 9] argv[1]="9"
D [26/Jul/2018:10:06:19 -0400] [Job 9] argv[2]="root"
D [26/Jul/2018:10:06:19 -0400] [Job 9] argv[3]="Test Page"
D [26/Jul/2018:10:06:19 -0400] [Job 9] argv[4]="1"
D [26/Jul/2018:10:06:19 -0400] [Job 9] argv[5]="job-uuid=urn:uuid:674e376f-c423-3889-6e02-640d0b804acf job-originating-host-name=localhost date-time-at-creation= date-time-at-processing= time-at-creation=1532613971 time-at-processing=1532613971"
D [26/Jul/2018:10:06:19 -0400] [Job 9] argv[6]="/var/spool/cups/d00009-001"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[0]="CUPS_CACHEDIR=/var/cache/cups"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[1]="CUPS_DATADIR=/usr/share/cups"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[2]="CUPS_DOCROOT=/usr/share/cups/doc-root"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[3]="CUPS_FONTPATH=/usr/share/cups/fonts"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[4]="CUPS_REQUESTROOT=/var/spool/cups"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[5]="CUPS_SERVERBIN=/usr/lib/cups"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[6]="CUPS_SERVERROOT=/etc/cups"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[7]="CUPS_STATEDIR=/var/run/cups"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[8]="HOME=/var/spool/cups/tmp"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[9]="PATH=/usr/lib/cups/filter:/usr/bin:/usr/sbin:/bin:/usr/bin"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[10]="SERVER_ADMIN=root@slax"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[11]="SOFTWARE=CUPS/2.2.1"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[12]="TMPDIR=/var/spool/cups/tmp"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[13]="USER=root"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[14]="CUPS_MAX_MESSAGE=2047"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[15]="CUPS_SERVER=/var/run/cups/cups.sock"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[16]="CUPS_ENCRYPTION=IfRequested"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[17]="IPP_PORT=631"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[18]="CHARSET=utf-8"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[19]="LANG=en_US.UTF-8"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[20]="PPD=/etc/cups/ppd/CUSTOM_Engineering_VKP80.ppd"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[21]="RIP_MAX_CACHE=128m"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[22]="CONTENT_TYPE=application/vnd.cups-pdf-banner"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[23]="DEVICE_URI=usb://CUSTOM%20Engineering/VKP80?serial=VKP80%20200Num.:%200"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[24]="PRINTER_INFO=CUSTOM Engineering VKP80"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[25]="PRINTER_LOCATION=local"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[26]="PRINTER=CUSTOM_Engineering_VKP80"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[27]="PRINTER_STATE_REASONS=none"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[28]="CUPS_FILETYPE=document"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[29]="FINAL_CONTENT_TYPE=application/vnd.cups-raster"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[30]="AUTH_I****"
D [26/Jul/2018:10:06:19 -0400] [Job 9] Started filter /usr/lib/cups/filter/bannertopdf (PID 7771)
D [26/Jul/2018:10:06:19 -0400] [Job 9] Started filter /usr/lib/cups/filter/pdftopdf (PID 7772)
D [26/Jul/2018:10:06:19 -0400] [Job 9] Started filter /usr/lib/cups/filter/gstoraster (PID 7773)
D [26/Jul/2018:10:06:19 -0400] [Job 9] Started filter /usr/lib/cups/filter/rastertovkp80 (PID 7774)
D [26/Jul/2018:10:06:19 -0400] [Job 9] Started backend /usr/lib/cups/backend/usb (PID 7775)
D [26/Jul/2018:10:06:19 -0400] [Job 9] PID 7774 (/usr/lib/cups/filter/rastertovkp80) stopped with status 102 (No such file or directory)
D [26/Jul/2018:10:06:19 -0400] [Job 9] Hint: Try setting the LogLevel to "debug" to find out more.
D [26/Jul/2018:10:06:19 -0400] [Job 9] execv failed: No such file or directory
D [26/Jul/2018:10:06:19 -0400] [Job 9] OUTFORMAT="(null)", so output format will be CUPS/PWG Raster
D [26/Jul/2018:10:06:19 -0400] [Job 9] pdftopdf: Last filter determined by the PPD: rastertovkp80; FINAL_CONTENT_TYPE: application/vnd.cups-raster => pdftopdf will not log pages in page_log.
D [26/Jul/2018:10:06:19 -0400] [Job 9] Loading USB quirks from "/usr/share/cups/usb".
D [26/Jul/2018:10:06:19 -0400] [Job 9] Loaded 80 quirks.
D [26/Jul/2018:10:06:19 -0400] [Job 9] Printing on printer with URI: usb://CUSTOM%20Engineering/VKP80?serial=VKP80%20200Num.:%200
D [26/Jul/2018:10:06:19 -0400] [Job 9] PDF template file doesn't have form. It's okay.
D [26/Jul/2018:10:06:19 -0400] [Job 9] libusb_get_device_list=7
D [26/Jul/2018:10:06:19 -0400] [Job 9] STATE: +connecting-to-device
D [26/Jul/2018:10:06:19 -0400] [Job 9] STATE: -connecting-to-device
D [26/Jul/2018:10:06:19 -0400] [Job 9] Printer found with device ID: MFG:CUSTOM Engineering;CMD:ESCPOS;MDL:VKP80;CLS:PRINTER; Device URI: usb://CUSTOM%20Engineering/VKP80?serial=VKP80%20200Num.:%200
D [26/Jul/2018:10:06:19 -0400] [Job 9] Device protocol: 2
D [26/Jul/2018:10:06:19 -0400] [Job 9] PID 7771 (/usr/lib/cups/filter/bannertopdf) exited with no errors.
D [26/Jul/2018:10:06:19 -0400] [Job 9] Sending data to printer.
D [26/Jul/2018:10:06:19 -0400] [Job 9] Sent 0 bytes...
D [26/Jul/2018:10:06:19 -0400] [Job 9] Waiting for read thread to exit...
D [26/Jul/2018:10:06:19 -0400] [Job 9] PID 7772 (/usr/lib/cups/filter/pdftopdf) exited with no errors.
D [26/Jul/2018:10:06:19 -0400] [Job 9] Color Manager: Calibration Mode/Off
D [26/Jul/2018:10:06:19 -0400] [Job 9] Calling FindDeviceById(cups-CUSTOM_Engineering_VKP80)
D [26/Jul/2018:10:06:19 -0400] [Job 9] Failed to send: org.freedesktop.DBus.Error.ServiceUnknown:The name org.freedesktop.ColorManager was not provided by any .service files
D [26/Jul/2018:10:06:19 -0400] [Job 9] Failed to get find device cups-CUSTOM_Engineering_VKP80
D [26/Jul/2018:10:06:19 -0400] [Job 9] Calling FindDeviceById(cups-CUSTOM_Engineering_VKP80)
D [26/Jul/2018:10:06:19 -0400] [Job 9] Failed to send: org.freedesktop.DBus.Error.ServiceUnknown:The name org.freedesktop.ColorManager was not provided by any .service files
D [26/Jul/2018:10:06:19 -0400] [Job 9] Failed to get device cups-CUSTOM_Engineering_VKP80
D [26/Jul/2018:10:06:19 -0400] [Job 9] Color Manager: no profiles specified in PPD
D [26/Jul/2018:10:06:19 -0400] [Job 9] Color Manager: ICC Profile: None
D [26/Jul/2018:10:06:19 -0400] [Job 9] Ghostscript using Any-Part-of-Pixel method to fill paths.
D [26/Jul/2018:10:06:19 -0400] [Job 9] Ghostscript command line: gs -dQUIET -dPARANOIDSAFER -dNOPAUSE -dBATCH -dNOINTERPOLATE -dNOMEDIAATTRS -sstdout=%stderr -sOutputFile=%stdout -sDEVICE=cups -r199x199 -dDEVICEWIDTHPOINTS=565 -dDEVICEHEIGHTPOINTS=433 -dcupsBitsPerColor=1 -dcupsColorOrder=0 -dcupsColorSpace=3 -scupsPageSizeName=X80MMY160MM -I/usr/share/cups/fonts -c '<</.HWMargins[0.000000 0.000000 0.000000 0.000000] /Margins[0 0]>>setpagedevice' -f -_
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[0]="CUPS_CACHEDIR=/var/cache/cups"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[1]="CUPS_DATADIR=/usr/share/cups"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[2]="CUPS_DOCROOT=/usr/share/cups/doc-root"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[3]="CUPS_FONTPATH=/usr/share/cups/fonts"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[4]="CUPS_REQUESTROOT=/var/spool/cups"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[5]="CUPS_SERVERBIN=/usr/lib/cups"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[6]="CUPS_SERVERROOT=/etc/cups"
D [26/Jul/2018:10:06:19 -0400] [Job 9] envp[7]="CUPS_STATEDIR=/var/run/cups"
....
Долго искал в нете прежде чем сюда обратится
- Forum
- The Ubuntu Forum Community
- Ubuntu Official Flavours Support
- Desktop Environments
- CUPS — Unable to open raster pipe raster stream — : Broken pipe
-
CUPS — Unable to open raster pipe raster stream — : Broken pipe
I configured a Canon ML-1675 printer and I get a filter failed error.
2018-08-07-114411_1915x653_scrot.jpgI already installed ghostscript and I downloaded the samsung drivers from their website: https://support.hp.com/ca-fr/drivers…eries/19134532
I copied the «raspertospl» file from /uld/x86_64 to /usr/lib/cups/filter.
Thank you
Here is my error log:
E [06/Aug/2018:16:41:23 -0400] [Job 5] Unable to open raster stream — : Broken pipeE [06/Aug/2018:16:41:31 -0400] [Job 5] Job stopped due to filter errors; please consult the error_log file for details.
D [06/Aug/2018:16:41:31 -0400] [Job 5] The following messages were recorded from 04:41:22 PM to 04:41:31 PM
D [06/Aug/2018:16:41:31 -0400] [Job 5] Adding start banner page «none».
D [06/Aug/2018:16:41:31 -0400] [Job 5] Adding end banner page «none».
D [06/Aug/2018:16:41:31 -0400] [Job 5] File of type application/pdf queued by «pi».
D [06/Aug/2018:16:41:31 -0400] [Job 5] hold_until=0
D [06/Aug/2018:16:41:31 -0400] [Job 5] Queued on «Samsung_ML-1670_Series» by «pi».
D [06/Aug/2018:16:41:31 -0400] [Job 5] time-at-processing=1533588082
D [06/Aug/2018:16:41:31 -0400] [Job 5] 3 filters for job:
D [06/Aug/2018:16:41:31 -0400] [Job 5] pdftopdf (application/pdf to application/vnd.cups-pdf, cost 66)
D [06/Aug/2018:16:41:31 -0400] [Job 5] gstoraster (application/vnd.cups-pdf to application/vnd.cups-raster, cost 99)
D [06/Aug/2018:16:41:31 -0400] [Job 5] rastertospl (application/vnd.cups-raster to printer/Samsung_ML-1670_Series, cost 0)
D [06/Aug/2018:16:41:31 -0400] [Job 5] job-sheets=none,none
D [06/Aug/2018:16:41:31 -0400] [Job 5] argv[0]=»Samsung_ML-1670_Series»
D [06/Aug/2018:16:41:31 -0400] [Job 5] argv[1]=»5″
D [06/Aug/2018:16:41:31 -0400] [Job 5] argv[2]=»pi»
D [06/Aug/2018:16:41:31 -0400] [Job 5] argv[3]=»Leafpad job #1″
D [06/Aug/2018:16:41:31 -0400] [Job 5] argv[4]=»1″
D [06/Aug/2018:16:41:31 -0400] [Job 5] argv[5]=»InputSlot=Auto Quality=600x600_Draft number-up=1 PageSize=Letter JCLEconomode=NONE MediaType=None JCLPowerSaveTime=min5 JCLDarkness=NORMAL job-uuid=urn:uuid:807a5b27-801c-3c70-69d7-09248ab4d2c5 job-originating-host-name=localhost date-time-at-creation= date-time-at-processing= time-at-creation=1533588082 time-at-processing=1533588082″
D [06/Aug/2018:16:41:31 -0400] [Job 5] argv[6]=»/var/spool/cups/d00005-001″
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[0]=»CUPS_CACHEDIR=/var/cache/cups»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[1]=»CUPS_DATADIR=/usr/share/cups»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[2]=»CUPS_DOCROOT=/usr/share/cups/doc-root»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[3]=»CUPS_FONTPATH=/usr/share/cups/fonts»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[4]=»CUPS_REQUESTROOT=/var/spool/cups»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[5]=»CUPS_SERVERBIN=/usr/lib/cups»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[6]=»CUPS_SERVERROOT=/etc/cups»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[7]=»CUPS_STATEDIR=/var/run/cups»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[8]=»HOME=/var/spool/cups/tmp»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[9]=»PATH=/usr/lib/cups/filter:/usr/bin:/usr/sbin:/bin:/usr/bin»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[10]=»SERVER_ADMIN=root@raspberrypi»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[11]=»SOFTWARE=CUPS/2.2.1″
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[12]=»TMPDIR=/var/spool/cups/tmp»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[13]=»USER=root»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[14]=»CUPS_MAX_MESSAGE=2047″
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[15]=»CUPS_SERVER=/var/run/cups/cups.sock»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[16]=»CUPS_ENCRYPTION=IfRequested»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[17]=»IPP_PORT=631″
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[18]=»CHARSET=utf-8″
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[19]=»LANG=en_CA.UTF-8″
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[20]=»PPD=/etc/cups/ppd/Samsung_ML-1670_Series.ppd»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[21]=»RIP_MAX_CACHE=128m»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[22]=»CONTENT_TYPE=application/pdf»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[23]=»DEVICE_URI=usb://Samsung/ML-1670%20Series?serial=Z6EKBKDB601140R.»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[24]=»PRINTER_INFO=Samsung ML-1670 Series»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[25]=»PRINTER_LOCATION=Labo»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[26]=»PRINTER=Samsung_ML-1670_Series»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[27]=»PRINTER_STATE_REASONS=none»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[28]=»CUPS_FILETYPE=document»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[29]=»FINAL_CONTENT_TYPE=application/vnd.cups-raster»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[30]=»AUTH_I****»
D [06/Aug/2018:16:41:31 -0400] [Job 5] Started filter /usr/lib/cups/filter/pdftopdf (PID 2641)
D [06/Aug/2018:16:41:31 -0400] [Job 5] Started filter /usr/lib/cups/filter/gstoraster (PID 2642)
D [06/Aug/2018:16:41:31 -0400] [Job 5] Started filter /usr/lib/cups/filter/rastertospl (PID 2643)
D [06/Aug/2018:16:41:31 -0400] [Job 5] Started backend /usr/lib/cups/backend/usb (PID 2644)
D [06/Aug/2018:16:41:31 -0400] [Job 5] execv failed: Exec format error
D [06/Aug/2018:16:41:31 -0400] [Job 5] PID 2643 (/usr/lib/cups/filter/rastertospl) stopped with status 108 (Exec format error)
D [06/Aug/2018:16:41:31 -0400] [Job 5] Hint: Try setting the LogLevel to «debug» to find out more.
D [06/Aug/2018:16:41:31 -0400] [Job 5] OUTFORMAT=»(null)», so output format will be CUPS/PWG Raster
D [06/Aug/2018:16:41:31 -0400] [Job 5] Loading USB quirks from «/usr/share/cups/usb».
D [06/Aug/2018:16:41:31 -0400] [Job 5] Loaded 132 quirks.
D [06/Aug/2018:16:41:31 -0400] [Job 5] Printing on printer with URI: usb://Samsung/ML-1670%20Series?serial=Z6EKBKDB601140R.
D [06/Aug/2018:16:41:31 -0400] [Job 5] pdftopdf: Last filter determined by the PPD: rastertospl; FINAL_CONTENT_TYPE: application/vnd.cups-raster => pdftopdf will not log pages in page_log.
D [06/Aug/2018:16:41:31 -0400] [Job 5] libusb_get_device_list=7
D [06/Aug/2018:16:41:31 -0400] [Job 5] STATE: +connecting-to-device
D [06/Aug/2018:16:41:31 -0400] [Job 5] PID 2641 (/usr/lib/cups/filter/pdftopdf) exited with no errors.
D [06/Aug/2018:16:41:31 -0400] [Job 5] Color Manager: Calibration Mode/Off
D [06/Aug/2018:16:41:31 -0400] [Job 5] STATE: -connecting-to-device
D [06/Aug/2018:16:41:31 -0400] [Job 5] Printer found with device ID: MFG:Samsung;CMD:GDI,FWV,EXT;MDL:ML-1670 Series;CLSRINTER;STATUS:BUSY; Device URI: usb://Samsung/ML-1670%20Series?serial=Z6EKBKDB601140R.
D [06/Aug/2018:16:41:31 -0400] [Job 5] Device protocol: 2
D [06/Aug/2018:16:41:31 -0400] [Job 5] Calling FindDeviceById(cups-Samsung_ML-1670_Series)
D [06/Aug/2018:16:41:31 -0400] [Job 5] Sending data to printer.
D [06/Aug/2018:16:41:31 -0400] [Job 5] Sent 0 bytes…
D [06/Aug/2018:16:41:31 -0400] [Job 5] Found device /org/freedesktop/ColorManager/devices/cups_Samsung_ML_1670_Series
D [06/Aug/2018:16:41:31 -0400] [Job 5] Calling org.freedesktop.ColorManager.Device.Get(ProfilingI nhibitors)
D [06/Aug/2018:16:41:31 -0400] [Job 5] Calling FindDeviceById(cups-Samsung_ML-1670_Series)
D [06/Aug/2018:16:41:31 -0400] [Job 5] Found device /org/freedesktop/ColorManager/devices/cups_Samsung_ML_1670_Series
D [06/Aug/2018:16:41:31 -0400] [Job 5] Calling GetProfileForQualifiers(Gray.None.600dpi…)
D [06/Aug/2018:16:41:31 -0400] [Job 5] Failed to send: org.freedesktop.ColorManager.Device.NothingMatched :nothing matched expression ‘Gray.None.600dpi,Gray.None.*,Gray.*.600dpi,Gray. *.*,*’
D [06/Aug/2018:16:41:31 -0400] [Job 5] Failed to get profile filename for cups-Samsung_ML-1670_Series
D [06/Aug/2018:16:41:31 -0400] [Job 5] Color Manager: no profiles specified in PPD
D [06/Aug/2018:16:41:31 -0400] [Job 5] Color Manager: ICC Profile: None
D [06/Aug/2018:16:41:31 -0400] [Job 5] Ghostscript using Any-Part-of-Pixel method to fill paths.
D [06/Aug/2018:16:41:31 -0400] [Job 5] Ghostscript command line: gs -dQUIET -dPARANOIDSAFER -dNOPAUSE -dBATCH -dNOINTERPOLATE -dNOMEDIAATTRS -sstdout=%stderr -sOutputFile=%stdout -sDEVICE=cups -r600x600 -dDEVICEWIDTHPOINTS=612 -dDEVICEHEIGHTPOINTS=792 -dcupsBitsPerColor=8 -dcupsColorOrder=0 -dcupsColorSpace=0 -scupsPageSizeName=Letter -I/usr/share/cups/fonts -c ‘<</.HWMargins[12.500000 12.500000 12.500000 12.500000] /Margins[0 0]>>setpagedevice’ -f -_
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[0]=»CUPS_CACHEDIR=/var/cache/cups»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[1]=»CUPS_DATADIR=/usr/share/cups»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[2]=»CUPS_DOCROOT=/usr/share/cups/doc-root»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[3]=»CUPS_FONTPATH=/usr/share/cups/fonts»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[4]=»CUPS_REQUESTROOT=/var/spool/cups»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[5]=»CUPS_SERVERBIN=/usr/lib/cups»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[6]=»CUPS_SERVERROOT=/etc/cups»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[7]=»CUPS_STATEDIR=/var/run/cups»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[8]=»HOME=/var/spool/cups/tmp»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[9]=»PATH=/usr/lib/cups/filter:/usr/bin:/usr/sbin:/bin:/usr/bin»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[10]=»SERVER_ADMIN=root@raspberrypi»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[11]=»SOFTWARE=CUPS/2.2.1″
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[12]=»TMPDIR=/var/spool/cups/tmp»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[13]=»USER=root»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[14]=»CUPS_MAX_MESSAGE=2047″
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[15]=»CUPS_SERVER=/var/run/cups/cups.sock»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[16]=»CUPS_ENCRYPTION=IfRequested»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[17]=»IPP_PORT=631″
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[18]=»CHARSET=utf-8″
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[19]=»LANG=en_CA.UTF-8″
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[20]=»PPD=/etc/cups/ppd/Samsung_ML-1670_Series.ppd»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[21]=»RIP_MAX_CACHE=128m»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[22]=»CONTENT_TYPE=application/pdf»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[23]=»DEVICE_URI=usb://Samsung/ML-1670%20Series?serial=Z6EKBKDB601140R.»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[24]=»PRINTER_INFO=Samsung ML-1670 Series»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[25]=»PRINTER_LOCATION=Labo»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[26]=»PRINTER=Samsung_ML-1670_Series»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[27]=»PRINTER_STATE_REASONS=none»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[28]=»CUPS_FILETYPE=document»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[29]=»FINAL_CONTENT_TYPE=application/vnd.cups-raster»
D [06/Aug/2018:16:41:31 -0400] [Job 5] envp[30]=»AUTH_INFO_REQUIRED=none»
D [06/Aug/2018:16:41:31 -0400] [Job 5] Start rendering…
D [06/Aug/2018:16:41:31 -0400] [Job 5] Processing page 1…
D [06/Aug/2018:16:41:31 -0400] [Job 5] Waiting for read thread to exit…
D [06/Aug/2018:16:41:31 -0400] [Job 5] Error: /ioerror in —showpage—
D [06/Aug/2018:16:41:31 -0400] [Job 5] Operand stack:
D [06/Aug/2018:16:41:31 -0400] [Job 5] (/var/spool/cups/tmp/gs_0iFTlo) —nostringval— 1 true
D [06/Aug/2018:16:41:31 -0400] [Job 5] Execution stack:
D [06/Aug/2018:16:41:31 -0400] [Job 5] %interp_exit .runexec2 —nostringval— —nostringval— —nostringval— 2 %stopped_push —nostringval— —nostringval— —nostringval— false 1 %stopped_push 2003 1 3 %oparray_pop 2002 1 3 %oparray_pop 1986 1 3 %oparray_pop —nostringval— —nostringval— —nostringval— 2 1 1 —nostringval— %for_pos_int_continue —nostringval— —nostringval— 1874 2 9 %oparray_pop —nostringval— —nostringval—
D [06/Aug/2018:16:41:31 -0400] [Job 5] Dictionary stack:
D [06/Aug/2018:16:41:31 -0400] [Job 5] —dict:1216/1684(ro)(G)— —dict:1/20(G)— —dict:83/200(L)— —dict:83/200(L)— —dict:135/256(ro)(G)— —dict:291/300(ro)(G)— —dict:32/32(L)— —dict:6/9(L)— —dict:23/40(L)—
D [06/Aug/2018:16:41:31 -0400] [Job 5] Current allocation mode is local
D [06/Aug/2018:16:41:31 -0400] [Job 5] Last OS error: Broken pipe
D [06/Aug/2018:16:41:31 -0400] [Job 5] GPL Ghostscript 9.20: Unrecoverable error, exit code 1
D [06/Aug/2018:16:41:31 -0400] [Job 5] Rendering completed
D [06/Aug/2018:16:41:31 -0400] [Job 5] PID 2642 (/usr/lib/cups/filter/gstoraster) stopped with status 1.
D [06/Aug/2018:16:41:31 -0400] [Job 5] Hint: Try setting the LogLevel to «debug» to find out more.
D [06/Aug/2018:16:41:31 -0400] [Job 5] Read thread still active, aborting the pending read…
D [06/Aug/2018:16:41:31 -0400] [Job 5] Resetting printer.
D [06/Aug/2018:16:41:31 -0400] [Job 5] PID 2644 (/usr/lib/cups/backend/usb) exited with no errors.
D [06/Aug/2018:16:41:31 -0400] [Job 5] End of messages
D [06/Aug/2018:16:41:31 -0400] [Job 5] printer-state=3(idle)
D [06/Aug/2018:16:41:31 -0400] [Job 5] printer-state-message=»Rendering completed»
D [06/Aug/2018:16:41:31 -0400] [Job 5] printer-state-reasons=noneLast edited by jtpaquet; August 7th, 2018 at 04:54 PM.
Tags for this Thread
Bookmarks
Bookmarks

Posting Permissions
Всем добрый день!
После обновления AstraLinux CE на 2.12, МФУ HP LaserJet MFP 400 M425n стало вести себя не так, как хотелось бы: при отправлении на печать, все задания меняют свои статусы на «Остановлено». В это время в логах:
E [20/Sep/2018:13:56:28 +0800] [Job 17] Unable to open raster stream — : Broken pipe
E [20/Sep/2018:13:56:28 +0800] [Job 17] Job stopped due to filter errors; please consult the error_log file for details.
D [20/Sep/2018:13:56:28 +0800] [Job 17] The following messages were recorded from 13:56:26 to 13:56:28
D [20/Sep/2018:13:56:28 +0800] [Job 17] Adding start banner page «none».
D [20/Sep/2018:13:56:28 +0800] [Job 17] Queued on «HP_LaserJet_400_MFP_M425dn(2)» by «kraynov».
D [20/Sep/2018:13:56:28 +0800] [Job 17] Auto-typing file…
D [20/Sep/2018:13:56:28 +0800] [Job 17] Request file type is application/vnd.cups-pdf-banner.
D [20/Sep/2018:13:56:28 +0800] [Job 17] File of type application/vnd.cups-pdf-banner queued by «kraynov».
D [20/Sep/2018:13:56:28 +0800] [Job 17] Adding end banner page «none».
D [20/Sep/2018:13:56:28 +0800] [Job 17] time-at-processing=1537422986
D [20/Sep/2018:13:56:28 +0800] [Job 17] 4 filters for job:
D [20/Sep/2018:13:56:28 +0800] [Job 17] bannertopdf (application/vnd.cups-pdf-banner to application/pdf, cost 32)
D [20/Sep/2018:13:56:28 +0800] [Job 17] pdftopdf (application/pdf to application/vnd.cups-pdf, cost 66)
D [20/Sep/2018:13:56:28 +0800] [Job 17] gstoraster (application/vnd.cups-pdf to application/vnd.cups-raster, cost 99)
D [20/Sep/2018:13:56:28 +0800] [Job 17] hpcups (application/vnd.cups-raster to printer/HP_LaserJet_400_MFP_M425dn(2), cost 0)
D [20/Sep/2018:13:56:28 +0800] [Job 17] job-sheets=none,none
…
D [20/Sep/2018:13:56:28 +0800] [Job 17] PID 13704 (/usr/lib/cups/filter/pdftopdf) exited with no errors.
D [20/Sep/2018:13:56:28 +0800] [Job 17] Start rendering…
D [20/Sep/2018:13:56:28 +0800] [Job 17] Processing page 1…
D [20/Sep/2018:13:56:28 +0800] [Job 17] Error: /ioerror in —showpage—
D [20/Sep/2018:13:56:28 +0800] [Job 17] Operand stack:
D [20/Sep/2018:13:56:28 +0800] [Job 17] (/var/spool/cups/tmp/gs_fndFhA) —nostringval— 1 true
D [20/Sep/2018:13:56:28 +0800] [Job 17] Execution stack:
D [20/Sep/2018:13:56:28 +0800] [Job 17] %interp_exit .runexec2 —nostringval— —nostringval— —nostringval— 2 %stopped_push —nostringval— —nostringval— —nostringval— false 1 %stopped_push 2003 1 3 %oparray_pop 2002 1 3 %oparray_pop 1986 1 3 %oparray_pop —nostringval— —nostringval— —nostringval— 2 1 1 —nostringval— %for_pos_int_continue —nostringval— —nostringval— 1874 2 9 %oparray_pop —nostringval— —nostringval—
D [20/Sep/2018:13:56:28 +0800] [Job 17] Dictionary stack:
D [20/Sep/2018:13:56:28 +0800] [Job 17] —dict:1222/1684(ro)(G)— —dict:1/20(G)— —dict:83/200(L)— —dict:83/200(L)— —dict:135/256(ro)(G)— —dict:291/300(ro)(G)— —dict:32/32(L)— —dict:6/9(L)— —dict:27/40(L)—
D [20/Sep/2018:13:56:28 +0800] [Job 17] Current allocation mode is local
D [20/Sep/2018:13:56:28 +0800] [Job 17] Last OS error: Broken pipe
D [20/Sep/2018:13:56:28 +0800] [Job 17] GPL Ghostscript 9.20: Unrecoverable error, exit code 1
D [20/Sep/2018:13:56:28 +0800] [Job 17] Rendering completed
D [20/Sep/2018:13:56:28 +0800] [Job 17] PID 13705 (/usr/lib/cups/filter/gstoraster) stopped with status 1.
D [20/Sep/2018:13:56:28 +0800] [Job 17] Hint: Try setting the LogLevel to «debug» to find out more.
D [20/Sep/2018:13:56:28 +0800] [Job 17] End of messages
D [20/Sep/2018:13:56:28 +0800] [Job 17] printer-state=3(idle)
D [20/Sep/2018:13:56:28 +0800] [Job 17] printer-state-message=»Rendering completed»
D [20/Sep/2018:13:56:28 +0800] [Job 17] printer-state-reasons=none
МФУ устанавливалось через HPLIP, драйвер скачивался автоматически утилитой, но в разных случаях для: HP LJ M25a, M125a и M125sw
Такая проблема на всех пяти компьютерах и именно после обновления.
Кто-нибудь сталкивался с подобной проблемой? Как исправить?
Решено.
Проблема устранилась установкой HPLIP с сайта HP
Решено.
Проблема устранилась установкой HPLIP с сайта HP
В 2.12 идёт последний HPLIP с ним наблюдаются проблемы. Скоро будет обновление, там понизили версию HPLIP, проблемы должны «уйти»
- Печать
Страницы: [1] 2 Все Вниз
Тема: Подключение и настройка термопринтера на инфокиоске (Прочитано 4976 раз)
0 Пользователей и 1 Гость просматривают эту тему.

Prtoy
Всем привет.
Нужна помощь в настройке принтера (BK-T680(U)) на Ubuntu 18.04. Это термопринтер, печатает талоны на киоске, подключён через USB.
terminal@MOR62-T01:~$ lsusbBus 003 Device 004: ID 154f:154f SNBC CO., Ltd — это сам принтер.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 002: ID 1eab:0d03
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 003: ID 1c4f:0002 SiGma Micro Keyboard TRACER Gamma Ivory
Bus 004 Device 002: ID 0d9f:00a4 Powercom Co., Ltd WOW Uninterruptible Power Supply (HID PDC)
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 003: ID 0101:0007
Bus 003 Device 004: ID 154f:154f SNBC CO., Ltd
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 20a0:4162 Clay Logic
Bus 002 Device 002: ID 0df9:0001
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
На официальном сайте скачал драйвер для linux, вот что пишут в readme:
** Installation Procedure:
copy file rastertot6802 to /usr/lib/cups/filter
copy file t6802.ppd to /usr/share/cups/model
Restarting CUPS
Это сделал.
a. Navigate to http://localhost:631 via Netscape Navigator
b. Click on the link that reads «Administration»
c. Click on the link that reads «Add Printer»
d. Fill in the Name, Location, and Description fields as desired.
The text entered into the name field is used to reference the
printer being configured from various applications (such as the
lpr command).
Click on the link that reads «Continue»e. Choose the port that the printer is connected to from the
choice box (if USB interface printer ,the port is SNBC BK-T680(U) USB #1;if Ethernet printer ,the port is Internet Printing Protocol(ipp) )
Click on the link that reads «Continue»Note: BK-T680 with USB interface must be printer mode.
На пункте «e» пока остановился. В панели управления CUPS нет в списке нужного принтера.
Возможно, я чего-то не понимаю. Подскажите пожалуйста, куда копать?

archuser
Подскажите пожалуйста, куда копать?
Копать лог файл /var/log/cups

Prtoy
Копать лог файл /var/log/cups
Вроде никаких глобальных ошибок там не вижу… вот единственное что подозрительное, что нашёл в error_log:
D [20/Jul/2021:08:41:16 +0300] [CGI] Regular expression "[a-z]+://"А именно — HTTP_STATE_WAITING Closing for error 32 (Broken pipe).
D [20/Jul/2021:08:41:16 +0300] [Client 11] HTTP_STATE_WAITING Closing for error 32 (Broken pipe)
D [20/Jul/2021:08:41:16 +0300] [Client 11] Closing connection.
D [20/Jul/2021:08:41:16 +0300] cupsdSetBusyState: newbusy="Active clients", busy="Active clients"
D [20/Jul/2021:08:41:16 +0300] [Client 7] con->http=0x55b769f46a70
D [20/Jul/2021:08:41:16 +0300] [Client 7] cupsdWriteClient error=0, used=0, state=HTTP_STATE_POST_SEND, data_encoding=HTTP_ENCODING_CHUNKED, data_remaining=0, response=(nil)(), pipe_pid=3603, file=16
D [20/Jul/2021:08:41:16 +0300] [Client 7] Waiting for CGI data.
D [20/Jul/2021:08:41:16 +0300] PID 3603 (/usr/lib/cups/cgi-bin/admin.cgi) exited with no errors.
« Последнее редактирование: 20 Июля 2021, 08:45:59 от Prtoy »

archuser
Prtoy, а в логе какие-то секретные данные были, что побоялись на форуме предоставить его содержимое?
В readme написано, что:
Note: BK-T680 with USB interface must be printer mode.
В режим принтера перевели устройство, чтобы это не значило?

Prtoy
а в логе какие-то секретные данные были, что побоялись на форуме предоставить его содержимое?
Абсолютно никаких, просто там всё повторяется бесконечно одно и то же, и лог сильно объёмный.
В режим принтера перевели устройство, чтобы это не значило?
Буквально несколько часов назад удалось перевести в этот режим, принтер добавился и увиделся в CUPS — но печать всё равно не работает. Теперь в логе немного иначе, но всё равно:
E [20/Jul/2021:13:33:54 +0300] [Job 15] Unable to open raster stream - : Broken pipe
E [20/Jul/2021:13:33:54 +0300] [Job 15] Job stopped due to filter errors; please consult the error_log file for details.
D [20/Jul/2021:13:33:54 +0300] [Job 15] Error: /ioerror in --showpage--
D [20/Jul/2021:13:33:54 +0300] [Job 15] Operand stack:
D [20/Jul/2021:13:33:54 +0300] [Job 15] true (/tmp/gs_lxbYnF) --nostringval-- 1 true
D [20/Jul/2021:13:33:54 +0300] [Job 15] Execution stack:
D [20/Jul/2021:13:33:54 +0300] [Job 15] %interp_exit .runexec2 --nostringval-- showpage --nostringval-- 2 %stopped_push --nostringval-- showpage showpage false 1 %stopped_push 2045 2 3 %oparray_pop 2044 2 3 %oparray_pop 2025 2 3 %oparray_pop showpage 2026 4 3 %oparray_pop showpage showpage 2 1 1 showpage %for_pos_int_continue 2029 4 7 %oparray_pop showpage showpage 1890 3 9 %oparray_pop showpage showpage
D [20/Jul/2021:13:33:54 +0300] [Job 15] Dictionary stack:
D [20/Jul/2021:13:33:54 +0300] [Job 15] --dict:968/1684(ro)(G)-- --dict:1/20(G)-- --dict:82/200(L)-- --dict:82/200(L)-- --dict:133/256(ro)(G)-- --dict:311/450(ro)(G)-- --dict:32/32(L)-- --dict:6/9(L)-- --dict:7/20(L)--
D [20/Jul/2021:13:33:54 +0300] [Job 15] Current allocation mode is local
D [20/Jul/2021:13:33:54 +0300] [Job 15] Last OS error: Broken pipe
D [20/Jul/2021:13:33:54 +0300] [Job 15] GPL Ghostscript 9.26: Unrecoverable error, exit code 1
D [20/Jul/2021:13:33:54 +0300] [Job 15] Rendering completed
D [20/Jul/2021:13:33:54 +0300] [Job 15] PID 13314 (/usr/lib/cups/filter/gstoraster) stopped with status 1.
Полносьтю лог смогу завтра с утра закинуть
« Последнее редактирование: 20 Июля 2021, 20:02:10 от Prtoy »

archuser
Prtoy, а Вы скопировали в систему файл драйвера с разрядностью целевой машины?

Prtoy
Вы скопировали в систему файл драйвера с разрядностью целевой машины?
Вариантов не было — драйвер был один и без указания разрядности…

archuser
Вариантов не было — драйвер был один и без указания разрядности…
Вот и проверьте для начала разрядность драйвера командой file

Prtoy
Вот и проверьте для начала разрядность драйвера командой file
file rastertot6802
rastertot6802: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.9, BuildID[sha1]=23a6a8f85d5dd9ae6f458881fbadb52e9340cdf6, with debug_info, not stripped
« Последнее редактирование: 21 Июля 2021, 10:11:02 от Prtoy »
Dzhoser
Не нужно переустанавливать, нужно добавить поддержку 32 бит
sudo dpkg --add-architecture i386
sudo apt-get install ia32-libs
sudo apt install -f
sudo apt -get update && sudo apt upgrade -y
sudo apt install -f
Пользователь добавил сообщение 21 Июля 2021, 10:20:55:
Может ругнуться на вторую команду возможно в 18.04 используется другой пакет, но система должна предложить его.

Prtoy
Сделал всё это (да, на 2 шаге предложил установить другие пакеты, установил их).
После этого всё равно печати нет
Dzhoser
Не удается открыть сокет прослушивания для адреса 172.20.102.40:631 — Не удается назначить запрошенный адрес.
E [21/Июль/2021:10:47:37 +0300] [cups-deviced] PID 2544 (gutenprint52+usb) остановлен со статусом 1!
172.20.102.40:631 пингуется? Машину перезагружали?

Prtoy
172.20.102.40:631 пингуется? Машину перезагружали?
172.20.102.40 вообще не понимаю при чём тут… Это моя рабочая машина, с которой я по AnyDesk подключаюсь к Ubuntu (для удобства). Ubuntu перезагружал. 172.20.102.40 с Ubuntu пингуется (хотя при чём он тут не понимаю, принтер локальный, подключен по usb). Печатать пробую тестовую страницу.
Пользователь добавил сообщение 21 Июля 2021, 12:13:57:
Понял, это я в конфиг cups добавил Listen 172.20.102.40:631 (хотел видимо со своего браузера доступ к cups — но не заработало и я забыл про это). Убрал, cups перезагрузил, но не помогло.
« Последнее редактирование: 21 Июля 2021, 12:13:57 от Prtoy »
Dzhoser
Принтер добавьте в соответствии с буржуской инструкцией

Prtoy
Принтер добавьте в соответствии с буржуской инструкцией
Да так и делаю — не работает
Пользователь добавил сообщение 21 Июля 2021, 13:19:42:
В логе новую ошибку увидел:
D [21/Jul/2021:13:17:24 +0300] [Job 28] Test3: error while loading shared libraries: libcups.so.2: cannot open shared object file: No such file or directory
« Последнее редактирование: 21 Июля 2021, 13:19:42 от Prtoy »
- Печать
Страницы: [1] 2 Все Вверх
Установка МФУ
Модератор: Модераторы разделов
-
UnixNoob
- Сообщения: 1017
- ОС: Slackware
Установка МФУ
Привет. Почитал касательно данного вопроса, теперь хотелось бы понять как грамотно это оформить в Slackware.
Понял следующее:
1. Мне надо настроить демона cups
2. Скачать драйвер и пересобрать его в пакет Slackware?
3. Поставить xsane?
Или есть еще что-то для работы с мфу?
Интересует печать и сканер, факс не нужен.
Мфу samsung scx-4216F, теперь драйвера на них на сайте hp.
«Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные»
-
Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн…
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Сообщение
Hephaestus » 27.11.2020 14:56
UnixNoob писал: ↑
27.11.2020 13:34
2. Скачать драйвер и пересобрать его в пакет Slackware?
Если только он не подхватится сразу. Вряд ли, конечно, но чем Патрик не шутит…
UnixNoob писал: ↑
27.11.2020 13:34
3. Поставить xsane?
Если правильно помню, xsane — это графическая морда к sane.
Так что его нужно тоже. А вот заведется ли сканер, не знаю.
Напишите потом, что у Вас из всего этого получилось.
У нас такой аппарат был, помню.
Правда, под Linux мы его не пробовали. Мы тогда и слов-то таких не знали.
Но сам аппарат оказался так себе: факс то ли не работал с самого начала,
то ли перестал работать почти сразу. Следом перестал работать автоподатчик.
А тут ещё девченки сунули в печать лист со скрепкой…
Короче, сдали мы его в ремонт. Вроде даже по гарантии.
Нам его починили.
Привезли мы его назад. Всё работает.
И через некоторое время опять отказывает автоподатчик.
А про факс я уже и не интересовался. Тоже вроде перестал работать.
Пускай скрипят мои конечности.
Я — повелитель бесконечности…
Мой блог
-
UnixNoob
- Сообщения: 1017
- ОС: Slackware
Re: Установка МФУ
Сообщение
UnixNoob » 28.11.2020 17:30
Не удалось мне заставить работать принтер и сканер.
Начну с принтера. cups, sane и xsane в системе были установлены, принтер, при запуске cups находился, но драйвера нужного не было. Возможно подошел бы один из ML-, но я решил попробовать установить родные.
Структура каталога с драйвером такая, может я на этом этапе ошибся:
Код: Выделить всё
./uld:
./ install-printer.sh* noarch/ uninstall-printer.sh* x86_64/
../ install-scanner.sh* uninstall-scanner.sh*
i386/ install.sh* uninstall.sh*
./uld/i386:
./ gettext* libscmssc.so* rastertospl* usbresetter*
../ libsane-smfp.so.1.0.1* pstosecps* smfpnetdiscovery*
./uld/noarch:
./ firewall-firewalld* package_install.sh* scanner-meta.pkg*
../ firewall-shorewall* package_uninstall.sh* scanner-script.pkg*
.version-printer* firewall-suse* package_utils* scanner.pkg*
.version-printer-script* firewall.sh* pagesize.xml* scripting_utils*
.version-scanner* legacy_compat.pkg* post_install.sh* security.pkg*
.version-scanner-script* libsane-smfp.cfg* pre_install.sh* share/
bash_debugging* license/ printer-meta.pkg*
etc/ oem.conf* printer-script.pkg*
firewall-fedora* package_api_defaults* printer.pkg*
./uld/noarch/etc:
./ ../ smfp.conf* smfp.fdi.in* smfp.rules.in*
./uld/noarch/license:
./ ../ eula-fr.txt* eula.txt*
./uld/noarch/share:
./ ../ locale/ ppd/
./uld/noarch/share/locale:
./ ../ fr/
./uld/noarch/share/locale/fr:
./ ../ LC_MESSAGES/
./uld/noarch/share/locale/fr/LC_MESSAGES:
./ ../ install.mo* sane-smfp.mo*
./uld/noarch/share/ppd:
./ Samsung_ML-1640_Series.ppd*
../ Samsung_ML-1660_Series.ppd*
Samsung_C140x_Series.ppd* Samsung_ML-1670_Series.ppd*
Samsung_C145x_Series.ppd* Samsung_ML-1710_Series.ppd*
Samsung_C1810_Series.ppd* Samsung_ML-1740_Series.ppd*
Samsung_C1860_Series.ppd* Samsung_ML-1860_Series.ppd*
Samsung_C2620_Series.ppd* Samsung_ML-1865W_Series.ppd*
Samsung_C2670_Series.ppd* Samsung_ML-191x_Series.ppd*
Samsung_C268x_Series.ppd* Samsung_ML-2010_Series.ppd*
Samsung_C3010_Series.ppd* Samsung_ML-2150_Series.ppd*
Samsung_C3060_Series.ppd* Samsung_ML-2160_Series.ppd*
Samsung_C351x_Series.ppd* Samsung_ML-2240_Series.ppd*
Samsung_C401x_Series.ppd* Samsung_ML-2245_Series.ppd*
Samsung_C406x_Series.ppd* Samsung_ML-2250_Series.ppd*
Samsung_C410_Series.ppd* Samsung_ML-2510_Series.ppd*
Samsung_C420_Series.ppd* Samsung_ML-2525W_Series.ppd*
Samsung_C43x_Series.ppd* Samsung_ML-2540_Series.ppd*
Samsung_C460_Series.ppd* Samsung_ML-2550_Series.ppd*
Samsung_C470_Series.ppd* Samsung_ML-2570_Series.ppd*
Samsung_C4820_Series.ppd* Samsung_ML-2580_Series.ppd*
Samsung_C48x_Series.ppd* Samsung_ML-2850_Series.ppd*
Samsung_CLP-300_Series.ppd* Samsung_ML-2853_Series.ppd*
Samsung_CLP-310_Series.ppd* Samsung_ML-2855_Series.ppd*
Samsung_CLP-320_Series.ppd* Samsung_ML-2950_Series.ppd*
Samsung_CLP-350_Series.ppd* Samsung_ML-3050_Series.ppd*
Samsung_CLP-360_Series.ppd* Samsung_ML-3300_Series.ppd*
Samsung_CLP-410_Series.ppd* Samsung_ML-331x_Series.ppd*
Samsung_CLP-600_Series.ppd* Samsung_ML-3470_Series.ppd*
Samsung_CLP-610_Series.ppd* Samsung_ML-3475_Series.ppd*
Samsung_CLP-620_Series.ppd* Samsung_ML-3560_Series.ppd*
Samsung_CLP-660_Series.ppd* Samsung_ML-371x_Series.ppd*
Samsung_CLP-670_Series.ppd* Samsung_ML-375x_Series.ppd*
Samsung_CLP-680_Series.ppd* Samsung_ML-4050_Series.ppd*
Samsung_CLP-770_Series.ppd* Samsung_ML-4055_Series.ppd*
Samsung_CLP-775_Series.ppd* Samsung_ML-451x_501x_Series.ppd*
Samsung_CLX-216x_Series.ppd* Samsung_ML-4550_Series.ppd*
Samsung_CLX-3160_Series.ppd* Samsung_ML-4555_Series.ppd*
Samsung_CLX-3170_Series.ppd* Samsung_ML-551x_651x_Series.ppd*
Samsung_CLX-3180_Series.ppd* Samsung_ML-8850_8950_Series.ppd*
Samsung_CLX-3300_Series.ppd* Samsung_ML-8x00_Series.ppd*
Samsung_CLX-4190_Series.ppd* Samsung_SCX-3200_Series.ppd*
Samsung_CLX-6200_Series.ppd* Samsung_SCX-3400_Series.ppd*
Samsung_CLX-6220_Series.ppd* Samsung_SCX-4100_Series.ppd*
Samsung_CLX-6240_Series.ppd* Samsung_SCX-4200_Series.ppd*
Samsung_CLX-6250_Series.ppd* Samsung_SCX-4300_Series.ppd*
Samsung_CLX-6260_Series.ppd* Samsung_SCX-4500W_Series.ppd*
Samsung_CLX-8380_Series.ppd* Samsung_SCX-4500_Series.ppd*
Samsung_CLX-8385X_Series.ppd* Samsung_SCX-4600_Series.ppd*
Samsung_CLX-8385_Series.ppd* Samsung_SCX-4623FW_Series.ppd*
Samsung_CLX-8540_Series.ppd* Samsung_SCX-4623_Series.ppd*
Samsung_CLX-8640_8650_Series.ppd* Samsung_SCX-4650_4x21S_Series.ppd*
Samsung_CLX-9250_9350_Series.ppd* Samsung_SCX-470x_Series.ppd*
Samsung_CLX-9252_9352_Series.ppd* Samsung_SCX-4725_Series.ppd*
Samsung_CLX-92x1_93x1_Series.ppd* Samsung_SCX-472x_Series.ppd*
Samsung_CLX-981x_Series.ppd* Samsung_SCX-483x_5x3x_Series.ppd*
Samsung_CLX-982x_Series.ppd* Samsung_SCX-4x16_Series.ppd*
Samsung_K2200_Series.ppd* Samsung_SCX-4x20_Series.ppd*
Samsung_K302_Series.ppd* Samsung_SCX-4x21_Series.ppd*
Samsung_K3250_Series.ppd* Samsung_SCX-4x24_Series.ppd*
Samsung_K401_Series.ppd* Samsung_SCX-4x25_Series.ppd*
Samsung_K4350_Series.ppd* Samsung_SCX-4x26_Series.ppd*
Samsung_K703_Series.ppd* Samsung_SCX-4x28_Series.ppd*
Samsung_K7600_Series.ppd* Samsung_SCX-5635_Series.ppd*
Samsung_M2020_Series.ppd* Samsung_SCX-5835_5935X_Series.ppd*
Samsung_M2070_Series.ppd* Samsung_SCX-5835_5935_Series.ppd*
Samsung_M262x_282x_Series.ppd* Samsung_SCX-5x30_Series.ppd*
Samsung_M267x_287x_Series.ppd* Samsung_SCX-6545X_Series.ppd*
Samsung_M283x_Series.ppd* Samsung_SCX-6545_Series.ppd*
Samsung_M288x_Series.ppd* Samsung_SCX-681x_Series.ppd*
Samsung_M301x_Series.ppd* Samsung_SCX-6x20_Series.ppd*
Samsung_M306x_Series.ppd* Samsung_SCX-6x22_Series.ppd*
Samsung_M332x_382x_402x_Series.ppd* Samsung_SCX-6x45_Series.ppd*
Samsung_M337x_387x_407x_Series.ppd* Samsung_SCX-6x55X_Series.ppd*
Samsung_M403x_Series.ppd* Samsung_SCX-6x55_Series.ppd*
Samsung_M408x_Series.ppd* Samsung_SCX-8030_8040_Series.ppd*
Samsung_M4370_5370_Series.ppd* Samsung_SCX-8123_8128_Series.ppd*
Samsung_M453x_Series.ppd* Samsung_SCX-8230_8240_Series.ppd*
Samsung_M458x_Series.ppd* Samsung_SCX-881x_Series.ppd*
Samsung_M5270_Series.ppd* Samsung_SCX-882x_Series.ppd*
Samsung_M536x_Series.ppd* Samsung_SF-760_Series.ppd*
Samsung_MFP_560_Series.ppd* Samsung_X3220_Series.ppd*
Samsung_MFP_65x_Series.ppd* Samsung_X401_Series.ppd*
Samsung_MFP_750_Series.ppd* Samsung_X4300_Series.ppd*
Samsung_ML-1520_Series.ppd* Samsung_X703_Series.ppd*
Samsung_ML-1610_Series.ppd* Samsung_X7600_Series.ppd*
Samsung_ML-1630W_Series.ppd* cms/
Samsung_ML-1630_Series.ppd*
./uld/noarch/share/ppd/cms:
./ CLP-320sc.cts* CLX-3160sc.cts* M262xsc.cts* M337xsc.cts* SCX-472xsc.cts*
../ CLP-360sc.cts* CLX-3170sc.cts* M267xsc.cts* ML-2160sc.cts* SF-760sc.cts*
C410sc.cts* CLP-600sc.cts* CLX-3180sc.cts* M283xsc.cts* ML-2540sc.cts*
C420sc.cts* CLP-610sc.cts* CLX-6220sc.cts* M288xsc.cts* ML-2950sc.cts*
C43xsc.cts* CLP-620sc.cts* K2200sc.cts* M301xsc.cts* SCX-3400sc.cts*
CLP-300sc.cts* CLP-660sc.cts* M2020sc.cts* M306xsc.cts* SCX-4650sc.cts*
CLP-310sc.cts* CLX-216xsc.cts* M2070sc.cts* M332xsc.cts* SCX-470xsc.cts*
./uld/x86_64:
./ gettext* libscmssc.so* rastertospl* usbresetter*
../ libsane-smfp.so.1.0.1* pstosecps* smfpnetdiscovery*
Пример одного из install.sh:
Код: Выделить всё
#!/bin/sh
SCRIPTS_DIR="$(dirname "$0")"
# load 'scripting' run-time support utility functions
. "${SCRIPTS_DIR}/scripting_utils"
# load 'package' run-time support utility functions
. "${SCRIPTS_DIR}/package_utils"
#. "${SCRIPTS_DIR}/packet.sh"
environment_init $(basename "$0" ".sh")
if [ $# -ne 1 ] ; then
show_nls_message "**** Usage: ${0} package"
exit 1
fi
load_package "$1"
MISSING_REQUIREMENTS="$(get_missing_requirements)"
log_variable MISSING_REQUIREMENTS
if [ -n "${MISSING_REQUIREMENTS}" ] ; then
report_missing_requirements "${MISSING_REQUIREMENTS}"
exit 1
fi
IS_INSTALL_NECESSARY="$(isInstallNecessary)"
log_variable IS_INSTALL_NECESSARY
if ! ${IS_INSTALL_NECESSARY} ; then
report_no_install_reason
log_message "Skipping package '${PACKAGE_NAME}'/'$(dist_version)' installation since version '$(version)' is already installed"
exit 0
fi
if ! have_root_permissions ; then
show_nls_message "**** Root privileges are required"
exit 1
fi
# attempt to install dependencies
DEPENDENCIES="$(dependencies)"
log_variable DEPENDENCIES
for DEPENDENCY in ${DEPENDENCIES} ; do
log_message "invoking: ${SCRIPTS_DIR}/package_install.sh" "${DEPENDENCY}"
if ! "${SCRIPTS_DIR}/package_install.sh" "${DEPENDENCY}" ; then
log_message "dependency installation failure"
exit 1
fi
done
log_message "removing previously installed files (if present)"
remove_package_files
# register package as dependency
register_dependency
# package specific install
log_message "installing package"
do_install
# install version file (if available)
DIST_VERSION_FILE="$(_dist_version_file "${PACKAGE_NAME}" "${PACKAGE_SUFFIX}")"
log_variable DIST_VERSION_FILE
if [ -r "${DIST_VERSION_FILE}" ] ; then
VERSION_FILE="$(_version_file "${PACKAGE_NAME}" "${PACKAGE_SUFFIX}")"
log_variable VERSION_FILE
install_p "${DIST_VERSION_FILE}" "${VERSION_FILE}" 2>&1 | log_redirected_output
else
log_message "'${DIST_VERSION_FILE}' is unavailable"
fi
# report end of install
after_install
log_message "finished"
Так вот, зашел я в папку noarch и с помощью makepkg создал пакет slackware и установил его.
Что мне это дало или должно было дать, я честно говоря не понял. Открыл cups указал файл ppd.
Принтер написал что он готов, но при отправке на печать ругался на отсутствие файла — rastertospl.
Скопировал я его,от root, в папку /usr/libs64/cups/filter, ошибка пропала, но получил теперь ошибку «filter failed»
В логах увидел следующее:
Код: Выделить всё
D [28/Nov/2020:16:19:38 +0300] [Job 4] Dictionary stack:
D [28/Nov/2020:16:19:38 +0300] [Job 4] --dict:739/1123(ro)(G)-- --dict:1/20(G)-- --dict:80/200(L)-- --dict:80/200(L)-- --dict:133/256(ro)(G)-- --dict:318/325(ro)(G)-- --dict:33/64(L)-- --dict:6/9(L)-- --dict:6/20(L)--
D [28/Nov/2020:16:19:38 +0300] [Job 4] Current allocation mode is local
D [28/Nov/2020:16:19:38 +0300] [Job 4] Last OS error: Broken pipe
D [28/Nov/2020:16:19:38 +0300] [Job 4] GPL Ghostscript 9.53.3: Unrecoverable error, exit code 1
D [28/Nov/2020:16:19:38 +0300] [Job 4] Rendering completed
D [28/Nov/2020:16:19:38 +0300] [Job 4] PID 3568 (/usr/lib64/cups/filter/gstoraster) stopped with status 1.
D [28/Nov/2020:16:19:38 +0300] [Job 4] Hint: Try setting the LogLevel to "debug" to find out more.
D [28/Nov/2020:16:19:38 +0300] [Job 4] Waiting for read thread to exit...
D [28/Nov/2020:16:19:38 +0300] [Job 4] Read thread still active, aborting the pending read...
D [28/Nov/2020:16:19:38 +0300] [Job 4] Resetting printer.
D [28/Nov/2020:16:19:38 +0300] [Job 4] PID 3570 (/usr/lib64/cups/backend/usb) exited with no errors.
D [28/Nov/2020:16:19:38 +0300] [Job 4] End of messages
D [28/Nov/2020:16:19:38 +0300] [Job 4] printer-state=3(idle)
D [28/Nov/2020:16:19:38 +0300] [Job 4] printer-state-message="Rendering completed"
D [28/Nov/2020:16:19:38 +0300] [Job 4] printer-state-reasons=none
Сканер, если верить этому
не поддерживается совсем. sane его не находит, в группу scanner пользователь добавлен. Что в таком случае дают драйвера,я так же не понял.
Правда вопрос чем он его считает, SCX-4×16 или 4200 Series, как указано в файле ppd принтера.
lsusb пишет это:
Код: Выделить всё
Bus 001 Device 004: ID 04e8:3409 Samsung Electronics Co., Ltd SCX-4216F Scanner
Простите меня за такие простыни, я просто слегка в шоке, от установки принтера и сканера в linux. Возможно я зашел не с того конца, не знаю.
«Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные»
-
Bizdelnick
- Модератор
- Сообщения: 19826
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Установка МФУ
Сообщение
Bizdelnick » 28.11.2020 17:54
UnixNoob писал: ↑
28.11.2020 17:30
получил теперь ошибку «filter failed»
Либ каких-нибудь, небось, не хватает. Попробуйте его руками запустить, что скажет?
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще |
в течение (часа) новичок нюанс по умолчанию |
приемлемо проблема пробовать трафик |
-
UnixNoob
- Сообщения: 1017
- ОС: Slackware
Re: Установка МФУ
Сообщение
UnixNoob » 28.11.2020 19:55
Bizdelnick
а что вы имеете в виду под руками? с консоли?
Мне тут подумалось что наверно мне перед сборкой в пакет Slackware, нужно было выполнить установку драйвера во временный каталог…
И уже потом собирать пакет Slackware. Т.к папка х86_64 осталась без дела, в моем варианте сборки… Хотя не уверен что оно бы установилось, надо пробовать.
«Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные»
-
Bizdelnick
- Модератор
- Сообщения: 19826
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Установка МФУ
Сообщение
Bizdelnick » 28.11.2020 20:30
UnixNoob писал: ↑
28.11.2020 19:55
что вы имеете в виду под руками? с консоли?
Да.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще |
в течение (часа) новичок нюанс по умолчанию |
приемлемо проблема пробовать трафик |
-
UnixNoob
- Сообщения: 1017
- ОС: Slackware
Re: Установка МФУ
Сообщение
UnixNoob » 28.11.2020 23:27
Bizdelnick, в ручном режиме он пишет:
Код: Выделить всё
id запроса Samsung_SCX-4x16_Series-6 (1 файл.)
А в очереди так же про «filter failed»
С установкой драйверов не понятно мне.
По логике если оно у меня не работает с установленными драйверами, значит я что-то не так сделал. Readme бы какой прикрутили, как-то не хочется мне скрипты, которые не ясно куда и что поставят запускать. Особенно учитывая что драйвер 2017г, может он вообще не должен у меня устанавливаться.
«Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные»
-
Bizdelnick
- Модератор
- Сообщения: 19826
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Установка МФУ
Сообщение
Bizdelnick » 29.11.2020 11:20
UnixNoob писал: ↑
28.11.2020 23:27
не хочется мне скрипты, которые не ясно куда и что поставят запускать
Ну препарируйте этот скрипт и разберитесь, что и куда он ставит.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще |
в течение (часа) новичок нюанс по умолчанию |
приемлемо проблема пробовать трафик |
-
Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн…
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Сообщение
Hephaestus » 29.11.2020 13:26
UnixNoob писал: ↑
28.11.2020 17:30
Так вот, зашел я в папку noarch и с помощью makepkg создал пакет slackware и установил его.
Расскажите, как создавали пакет.
UnixNoob писал: ↑
28.11.2020 17:30
Что мне это дало или должно было дать, я честно говоря не понял.
Чисто физически это должно было создать нужные структуры каталогов и раскидать туда файлы,
попутно выставив права доступа и т.п.
UnixNoob писал: ↑
28.11.2020 17:30
Сканер, если верить этому
не поддерживается совсем.
В этом нет ничего удивительного. Создатели sane не имеют возможности проверить все существующие на свете аппараты и добавить их поддержку.
Поддержка добавляется либо производителями устройств, либо пользователями, у кого есть такие устройства.
В самом простом случае берется блоб — бинарный файл с фирменной начинкой (прошивка, условно говоря) и скармливается sane.
После этого sane имеет возможность нормально общаться с аппаратом.
Но это возможно только в случае, если в sane существует драйвер для данного класса устройств.
Тогда работа с конкретными устройствами данного класса происходит с использованием этих прошивок.
Если же производитель всё-таки озаботился созданием драйверов сканера под Linux, то вполне вероятно,
предполагается использование sane. В этом случае при установке «фирменного драйвера» в систему добавляются нужные библиотеки, блобы и пр., и всё это хозяйство взаимодействует с sane.
UnixNoob писал: ↑
28.11.2020 17:30
Что в таком случае дают драйвера,я так же не понял.
Драйвера дают ту самую поддержку устройства в Linux, которой изначально нету.
UnixNoob писал: ↑
28.11.2020 17:30
Возможно я зашел не с того конца, не знаю.
Вообще, да. Немного не с того конца.
UnixNoob писал: ↑
28.11.2020 23:27
По логике если оно у меня не работает с установленными драйверами, значит я что-то не так сделал. Readme бы какой прикрутили, как-то не хочется мне скрипты, которые не ясно куда и что поставят запускать.
Скрипты запускать не советую, по крайней мере, на боевой системе.
Лучше в контейнере/виртуалке.
Я бы создал слакбилд, который раскидывает файлы по каталогам так, как это принято в системе.
Ну или так, как это делают скрипты. Там создается структура каталогов в /opt/ и туда раскидываются бинарные файлы, ppd и пр.
А вот куда это всё раскидывается по итогам установки Вашего пакета — это вопрос интересный.
Пускай скрипят мои конечности.
Я — повелитель бесконечности…
Мой блог
-
UnixNoob
- Сообщения: 1017
- ОС: Slackware
Re: Установка МФУ
Сообщение
UnixNoob » 29.11.2020 14:15
Hephaestus писал: ↑
29.11.2020 13:26
Расскажите, как создавали пакет.
Зашел в папку /noarch и выполнил команду sudo makepkg <название создаваемого пакета>.
Я подумал что он будет ругаться, если пакет создать не удастся,но он создался.
Установить его во временный каталог,с помощию make install предварительно не вышло. Точно файлы попадают в /usr/share и что-то в /etc.
Уходят ли куда-то файлы из папки x86_64 не знаю, думаю что нет. Readme там нет, make тоже нет.
Как в таком случае создаются пакеты Slackware правильно? Это и не исходник и даже не перепаковка?
«Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные»
-
Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн…
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Сообщение
Hephaestus » 29.11.2020 14:57
UnixNoob писал: ↑
29.11.2020 14:15
Зашел в папку /noarch и выполнил команду sudo makepkg <название создаваемого пакета>.
Я подумал что он будет ругаться, если пакет создать не удастся,но он создался.
Понятно. Что бы ему не создаться-то? Создастся, только бестолковый.
Он тупо упаковал содержимое каталога noarch в формат пакета tgz. Вот и всё.
Причем, упаковал «как есть»: эти вот скрипты попали в пакет, текст лицензии (нафиг оно не надо).
Структура каталогов создавалась? Нет. Значит, всё попадает в корень.
Единственное, что при таком раскладе оказывается более-менее на своём месте — каталог etc, поскольку он действительно должен быть в корне.
Бинарники/конфиги копировались в правильные места? Нет. Значит, они вообще в пакет не попадают, поскольку они расположены не в noarch, а в соседнем каталоге.
Естественно, оно в итоге не работает: ни одного бинарника нет.
UnixNoob писал: ↑
29.11.2020 14:15
Установить его во временный каталог,с помощию make install предварительно не вышло.
Там нет make-файла, поэтому make не поможет.
UnixNoob писал: ↑
29.11.2020 14:15
Уходят ли куда-то файлы из папки x86_64 не знаю, думаю что нет.
Как я уже сказал, никуда не уходят: они вообще в другом каталоге, который при создании пакета
даже не затрагивался.
UnixNoob писал: ↑
29.11.2020 14:15
Как в таком случае создаются пакеты Slackware правильно?
Вручную. Создаем слакбилд, в котором предварительно создаются все нужные каталоги,
а потом туда копируются файлы. Это тупо команды mkdir и cp. Ну или install, если больше нравится.
Я могу попробовать создать, но у меня устройства нет, поэтому проверять не на чем.
UnixNoob писал: ↑
29.11.2020 14:15
Это и не исходник и даже не перепаковка?
Да, это не исходник. Но это упаковка.
Посмотрите любой слакбилд, что там происходит с файлами документации.
Ровно это и происходит: создание каталогов и копирование.
Или посмотрите какой-нибудь слакбилд закрытой софтины (типа браузера Opera).
Там сплошные бинарники и всё что нужно сделать — раскидать их по местам — то же самое: создание каталогов и копирование.
Да, кстати.
В данном конкретном случае, может оказаться, что нужно воспроизвести структуру каталогов, которую создают скрипты. Здесь уже готовые бинарники, как они компилировались, мы не знаем. И где эти бинарники намерены друг друга искать, мы тоже не знаем. Поэтому размещение их по стандартным путям в системе может не сработать (хотя попробовать, конечно, можно). Достоверно я этого не знаю, разумеется. Просто этот вот момент с путями надо иметь в виду.
Пускай скрипят мои конечности.
Я — повелитель бесконечности…
Мой блог
-
UnixNoob
- Сообщения: 1017
- ОС: Slackware
Re: Установка МФУ
Сообщение
UnixNoob » 29.11.2020 15:45
Hephaestus писал: ↑
29.11.2020 14:57
Да, это не исходник. Но это упаковка.
Посмотрите любой слакбилд, что там происходит с файлами документации.
Ровно это и происходит: создание каталогов и копирование.
По Слакбилду я хотя бы понимаю куда и что ставится. Здесь же конкретного пути нет. Или я не понял где это смотреть.
Hephaestus писал: ↑
29.11.2020 14:57
Я могу попробовать создать, но у меня устройства нет, поэтому проверять не на чем.
Я такую задачу пока не осилю, я смотрел в эти скрипты, понимаю что он какие-то переменные дергает с PATH, что — то он хочет положить в /opt, так по-крайней мере показал bash -x. Но как из этого сформировать нужную мне структура каталогов я не понял.
Если есть время/желание — посмотрите.
Но честно говоря это уже выходит за рамки форумной помощи и мне не очень удобно о таком просить.
«Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные»
-
Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн…
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Сообщение
Hephaestus » 29.11.2020 20:33
UnixNoob
Ну, вот примерно так.
Решение, можно сказать, в лоб.
Создаются каталоги, раскидываются файлы, выставляются права.
Создаются симлинки, генерится конфиг.
Поскольку устройства у меня нет, ставить собранный пакет мне бессмысленно.
Возможно, я что-то упустил, но с виду всё нормально.
Тем не менее, это ещё не всё.
В оригинальных скриптах ещё выполняется генерация файлов для udev.
В принципе, нужный кусок можно выдернуть прямо из скрипта
и воткнуть в doinst.sh, но это я не пробовал. Там надо посмотреть, что к чему.
Попробуйте пока этот вариант. Возможно, что-то и взлетит.
Насчет правил udev подумаем.
Пускай скрипят мои конечности.
Я — повелитель бесконечности…
Мой блог
-
UnixNoob
- Сообщения: 1017
- ОС: Slackware
Re: Установка МФУ
Сообщение
UnixNoob » 29.11.2020 23:30
Hephaestus
Принтер заработал.
Сканер по команде sane-find-scanner пишет:
Код: Выделить всё
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.
А scanimage — L выдает это:
Код: Выделить всё
device `smfp:usb;04e8;3409;6758-04020434815' is a Samsung SCX-4x16 Series on USB Scanner
При открытии xsane в названии окна видно что он нашел сканер, так же при открытии Load Device settings он сам открывает путь к файлу .drc,
но при нажатии кнопки scan пишет:
Failed to start scanner. Error during device I/O.
А откуда вы узнали вот это все:
Код: Выделить всё
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/
mkdir -p $PKG/opt/samsung/printer/share/ppd/cms
mkdir -p $PKG/opt/smfp-common/printer/{lib,bin}/
mkdir -p $PKG/opt/smfp-common/scanner/lib/
mkdir -p $PKG/opt/smfp-common/scanner/share/locale/fr/
mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/cups/backend
mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/cups/filter
mkdir -p $PKG/usr/share/locale/fr/LC_MESSAGES/
#cp -R noarch/share/ppd $PKG/opt/samsung/printer/share
install -m644 noarch/share/ppd/*.ppd $PKG/opt/samsung/printer/share/ppd
install -m644 noarch/share/ppd/cms/* $PKG/opt/samsung/printer/share/ppd/cms
install -m755 $ARCH/libscmssc.so $PKG/opt/smfp-common/printer/lib/
install -m755 $ARCH/pstosecps $PKG/opt/smfp-common/printer/bin/
install -m755 $ARCH/rastertospl $PKG/opt/smfp-common/printer/bin/
install -m755 $ARCH/smfpnetdiscovery $PKG/opt/smfp-common/printer/bin/
install -m755 $ARCH/libsane-smfp.so.1.0.1 $PKG/opt/smfp-common/scanner/lib/
install -m644 noarch/share/locale/fr/LC_MESSAGES/sane-smfp.mo $PKG/opt/smfp-common/scanner/share/locale/fr/
install -m644 noarch/pagesize.xml $PKG/opt/smfp-common/scanner/share/
install -m644 noarch/libsane-smfp.cfg $PKG/opt/smfp-common/scanner/share/
install -m644 noarch/oem.conf $PKG/opt/smfp-common/scanner/share/
install -m644 noarch/etc/smfp.conf $PKG/$SANE_CONF_DIR/smfp-samsung.conf
ln -sf "/opt/smfp-common/printer/bin/smfpnetdiscovery" "$PKG/usr/lib${LIBDIRSUFFIX}/cups/backend"
ln -sf "/opt/smfp-common/printer/bin/rastertospl" "$PKG/usr/lib${LIBDIRSUFFIX}/cups/filter"
ln -sf "/opt/smfp-common/printer/bin/pstosecps" "$PKG/usr/lib${LIBDIRSUFFIX}/cups/filter"
ln -sf "$SANE_DIR"/libsane-smfp.so.1 "$PKG/$SANE_DIR"/libsane-smfp.so
ln -sf "$SANE_DIR"/libsane-smfp.so.1.0.1 "$PKG/$SANE_DIR"/libsane-smfp.so.1
ln -sf "/opt/smfp-common/scanner/lib/libsane-smfp.so.1.0.1" "$PKG/$SANE_DIR"
ln -sf "/opt/smfp-common/scanner/share/locale/fr/sane-smfp.mo" "$PKG/usr/share/locale/fr/LC_MESSAGES/"
cat <<EOF >$PKG/$SANE_CONF_DLL_DIR/smfp.conf
smfp
EOF
Кратенько порядок действий, если вас не затруднит. Потому что я смотрел в install.sh и package_install.sh и не понял куда и что
«Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные»
-
Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн…
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Сообщение
Hephaestus » 30.11.2020 01:07
UnixNoob писал: ↑
29.11.2020 23:30
А откуда вы узнали вот это все
На самом деле всё невероятно просто.
Я пошел по пути наименьшего сопротивления и запустил скрипты в контейнере.
Подменил в скрипте каталог назначения, чтобы установка прошла «в чистый каталог».
Таким образом стало известно, какие файлы куда ставятся.
Это всё не сразу, а по итогам нескольких запусков install/uninstall.
Потом я выставил в некоторых местах set -x, чтобы был отладочный вывод на экран.
Далее, я обратил внимание на сообщения типа «Registering CUPS backend» («Registering SANE backend») во время установки.
Прошерстив скрипты на предмет этих сообщений, нашел соответствующие функции.
Выставляя выборочно set -x в функциях, смотрел, что происходит в скрипте.
Таким образом, было выявлено остальное: симлинки, редактирование конфигов и пр.
Если действовать чисто аналитическим путем (без запуска скриптов), будет примерно то же самое,
только дольше: нужно смотреть скрипты от стартового и вглубь. Встретив вызов функции, искать в скриптах её реализацию и смотреть, что она делает. Просмотр отладочной информации в процессе выполнения проще в том смысле, что можно видеть уже присвоенные значения переменных. В самом скрипте не всегда понятно, чему равна переменная.
Кстати, обычный запуск этих скриптов завершится с ошибкой: не отрабатывает mktemp. Пришлось подправить.
UnixNoob писал: ↑
29.11.2020 23:30
Потому что я смотрел в install.sh и package_install.sh и не понял куда и что
Нужно смотреть дальше: printer.pkg. Там внутри функция do_install(), из которой
вызывается install_base_files(). Вот в ней как раз раскидывание файлов по каталогам (для принтера).
Для сканера всё аналогично в файле scanner.pkg.
Пускай скрипят мои конечности.
Я — повелитель бесконечности…
Мой блог
-
Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн…
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Сообщение
Hephaestus » 30.11.2020 08:22
UnixNoob писал: ↑
29.11.2020 23:30
А scanimage — L выдает это:
device `smfp:usb;04e8;3409;6758-04020434815′ is a Samsung SCX-4×16 Series on USB Scannerпри нажатии кнопки scan пишет:
Failed to start scanner. Error during device I/O.
Мда. Я подозреваю, что у Вас отсутствует файл устройства /dev/scanner или подобный.
А вообще, не исключено, что устройств в системе должно быть два: принтер и сканер,
потому что CUPS ничего не знает о сканерах, а SANE ни сном, ни духом о существовании принтеров.
Поскольку с udev мы ничего не делали, то устройство сейчас в лучшем случае одно.
Если SANE пытается обращаться к устройству, которое на самом деле принтер, то понятно, что будет ошибка.
Но это всё домыслы. В режиме экстрасенса сложновато анализировать ситуацию.
Реальную картину видно только Вам.
Короче, надо бы дожать правила udev.
Причем, не обязательно именно те, которые генерируются в скриптах, хотя и их тоже.
Правила udev там в основном для «горячего подключения» устройства.
А в данном случае они представляют интерес с точки зрения создания файлов устройств
и присвоения всяких там «правильных» имен.
Кстати, нажатие кнопки scan — это же в программе? Или на аппарате?
Аппаратная, скорее всего, сейчас не работает, но кто знает…
Пускай скрипят мои конечности.
Я — повелитель бесконечности…
Мой блог
-
UnixNoob
- Сообщения: 1017
- ОС: Slackware
Re: Установка МФУ
Сообщение
UnixNoob » 30.11.2020 20:17
Hephaestus писал: ↑
30.11.2020 01:07
На самом деле всё невероятно просто.
Да уж, проще не придумаешь.
Hephaestus писал: ↑
30.11.2020 01:07
Я пошел по пути наименьшего сопротивления и запустил скрипты в контейнере.
Это docker или что-то родное из linux?
Hephaestus писал: ↑
30.11.2020 01:07
Нужно смотреть дальше: printer.pkg. Там внутри функция do_install(), из которой
вызывается install_base_files(). Вот в ней как раз раскидывание файлов по каталогам (для принтера).
Посмотрю.
Hephaestus писал: ↑
30.11.2020 08:22
Мда. Я подозреваю, что у Вас отсутствует файл устройства /dev/scanner или подобный.
А он должен быть? Или появиться после установки драйвера?
Hephaestus писал: ↑
30.11.2020 08:22
Короче, надо бы дожать правила udev.
Я с радостью, куда смотреть?
Hephaestus писал: ↑
30.11.2020 08:22
Кстати, нажатие кнопки scan — это же в программе? Или на аппарате?
Программы, на аппарате нет отдельно кнопки сканирования, только режим копира, для этого ПК не нужен совсем.
«Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные»
-
Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн…
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Сообщение
Hephaestus » 30.11.2020 22:57
UnixNoob писал: ↑
30.11.2020 20:17
Да уж, проще не придумаешь.
Просто, в том смысле, что никаких чудес.
Берем картину мироздания
и тупо смотрим, что к чему (c).
В смысле, берем скрипты, разбираем по косточкам, пишем свои.
Эдакий «анализ и синтез», да.
На самом деле это всё проще, чем кажется на первый взгляд.
UnixNoob писал: ↑
30.11.2020 20:17
А он должен быть? Или появиться после установки драйвера?
Ну, какой-то файл должен быть. Иначе как обращаться к устройству? По идее, появление файла устройства происходит при загрузке драйвера в память.
От udev это не зависит. Но udev может помочь в другом: выставить права доступа, выполнить команду (или вызвать скрипт), присвоить более удобное имя (или создать симлинк).
Вывод scanimage -L должен показать нечто такое
smfp:/dev/scanner0
А в Вашем случае вместо этого мы видим
UnixNoob писал: ↑
29.11.2020 23:30
`smfp:usb;04e8;3409;6758-04020434815′
то есть вместо имени файла VID/PID и серийный номер, судя по всему.
Запуск сканирования из командной строки выглядит как-то так:
scanimage backend:/dev/scanner —format pnm > outfile.pnm
то есть для Вашего аппарата по идее должно быть так:
scanimage smfp:/dev/scanner —format pnm > outfile.pnm
А с учетом имеющихся данных получается как-то так:
scanimage `smfp:usb;04e8;3409;6758-04020434815′ —format pnm > outfile.pnm
я собственно, даже не соображу, как это правильно записать.
Не знаю, поможет ли здесь udev(думаю, можно его заставить), но в некоторых conf-файлах прописано имя /dev/scanner. Возможно, это стоит сделать, но целевой conf-файл слишком уж отличается от всех прочих. Так что здесь пока неясно.
Да, кстати, оригинальные скрипты редактируют dll.conf: добавляют туда строку «smfp», и «отключают» строку «geniusvp2». Я сделал немного иначе: создал отдельный файл и поместил его в подкаталог dll.d.
Почему так? Создать новый файл при установке пакета и удалить этот файл при удалении пакета — это проще, чем редактировать существующий файл при установке пакета, а потом «вертать взад» при удалении пакета.
Так вот, dll.conf я не трогал и соответственно, наличие строки «geniusvp2» не проверял. На что она влияет, судить не берусь. В моих файлах такой строки нет, но тем не менее.
UnixNoob писал: ↑
30.11.2020 20:17
Я с радостью, куда смотреть?
Да всё туда же — в скрипты.
Если есть энтузиазм, можете эту маленькую задачу решить в качестве упражнения на «анализ и синтез».
Итак, задача: Вытащить из скрипта кусок кода, который генерирует файл правил udev на основе шаблона.
Полученный кусок кода изменить таким образом, чтобы его можно было вставить в SlackBuild, например.
Это значит, что нужно оставить только значимую часть кода, убрав всю обвязку (сопутствующие функции, запись логов, словом всё, что не имеет отношения к слакбилду).
Отправная точка: модуль scanner-script.pkg, функция fill_full_template().
Инструменты: терминал, любимый текстовый редактор, grep (больше вроде бы ничего не нужно).
Сам файл правил udev, как оказалось, не содержит ничего интересного — всего лишь присваивает владельца/группу и выставляет права доступа. Я ожидал большего, честно говоря. С учетом того, что вместо имени файла устройства выводится всякая техническая премудрость, возможно имеет смысл запрячь udev на предмет присвоения имени или создания симлинка.
Вариант файла правил udev, как он создается оригинальными скриптами, представлен под спойлером.
Насколько я понимаю, он всегда выходит одинаковый.
В общем-то, можно не заморачиваться с генерацией, а взять его «как есть».
Spoiler
Код: Выделить всё
# This file is a part of Unified Linux Driver
# Rules to allow low level USB device access for smfpautoconf
#
# For new distributions,
# Permissions and group are set according to common libsane rules
#
ACTION!="add", GOTO="smfp_label_end"
# Check device type
ENV{DEVTYPE}=="usb_device", GOTO="smfp_create_usb_dev"
# Check SUBSYSTEM (should be either "usb" or "usb_device")
SUBSYSTEM=="usb", GOTO="smfp_create_usb_dev"
SUBSYSTEM=="usb_device", GOTO="smfp_create_usb_dev"
GOTO="smfp_label_end"
LABEL="smfp_create_usb_dev"
# Check Vendor ID
ATTR{idVendor}!="04e8", GOTO="smfp_label_end"
ATTRS{idProduct}=="3425", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3456", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="345a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3427", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3428", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3455", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3421", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3439", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3444", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3431", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="345c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3462", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3464", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3461", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3460", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="340e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3435", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="340f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3441", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3413", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3426", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3433", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3440", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3434", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="345b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3457", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3453", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3409", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3412", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3419", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3432", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3430", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3446", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3437", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3442", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3466", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="340d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3420", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3429", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3443", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3438", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="345d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3463", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3465", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3450", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3468", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3469", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3467", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="346b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="346a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="346e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3471", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3472", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="347d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="347c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="347e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3481", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3482", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3331", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3332", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3483", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3484", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3485", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3478", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3325", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3327", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="346f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3477", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3324", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3326", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3486", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3487", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3489", ENV{libsane_matched}="yes"
ENV{libsane_matched}=="yes", OWNER="root", MODE="664", GROUP="lp"
LABEL="smfp_label_end"
Пускай скрипят мои конечности.
Я — повелитель бесконечности…
Мой блог
-
UnixNoob
- Сообщения: 1017
- ОС: Slackware
Re: Установка МФУ
Сообщение
UnixNoob » 01.12.2020 00:16
Hephaestus писал: ↑
30.11.2020 22:57
Если есть энтузиазм, можете эту маленькую задачу решить в качестве упражнения на «анализ и синтез».
Итак, задача: Вытащить из скрипта кусок кода, который генерирует файл правил udev на основе шаблона.
Посмотрю на днях, отпишусь потом о результатах.
«Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные»
-
UnixNoob
- Сообщения: 1017
- ОС: Slackware
Re: Установка МФУ
Сообщение
UnixNoob » 03.12.2020 22:18
Hephaestus писал: ↑
30.11.2020 22:57
Вариант файла правил udev, как он создается оригинальными скриптами, представлен под спойлером.
Насколько я понимаю, он всегда выходит одинаковый.
Посмотрел немного файлы.
Он извлекает из sane.rules имя я так понял, для будущего файла rules.
Код: Выделить всё
80 RULES=$(ls /etc/udev/rules.d/*sane*.rules /lib/udev/rules.d/*sane*.rules 2>/dev/null)
181 NUMBER=100
182 for RULE in ${RULES}
183 do
184 RULE=$(basename ${RULE})
185 CUT1=$(echo ${RULE} | cut -f1 -d'-')
186 if [ ${#RULE} -ne ${#CUT1} ]; then
187 NUM=$CUT1
188 else
189 CUT1=$(echo ${RULE} | cut -f1 -d'_')
190 if [ ${#RULE} -ne ${#CUT1} ]; then
191 NUM=$CUT1
192 fi
193 fi
194 if [ ${NUMBER} -gt ${NUM} ]; then
195 NUMBER=${NUM}
196 fi
197 done
198 RULE_NUMBER=$((NUMBER-1))
А для генерации этого файла берется файл /etc/smfp.rules.in
Т.е получается мне надо создать файл smfp.rules и положить в /etc/udev/rules.d
Только там еще правила HAL создаются дальше и hotplug. Но hotplug я так понял не обязателен, а вот на счет hal не знаю.
Еще я что-то в /dev/ и принтера то не нашел. Но я так понял для него они не создаются, все только с cups связано.
Я конечно не знаю как ребята с HP предполагают это устанавливать в Linux. Сейчас еще у одних systemd у других нет.
Надо про контейнеры почитать в итоге. На случай таких вот драйверов и скриптов установки.
«Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные»
-
Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн…
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Сообщение
Hephaestus » 04.12.2020 07:37
UnixNoob писал: ↑
03.12.2020 22:18
Он извлекает из sane.rules имя я так понял, для будущего файла rules.
Конкретно этот момент я не отслеживал. Меня интересовало содержимое, а не имя.
Имя-то присвоить — вообще не проблема.
UnixNoob писал: ↑
03.12.2020 22:18
А для генерации этого файла берется файл /etc/smfp.rules.in
Т.е получается мне надо создать файл smfp.rules и положить в /etc/udev/rules.d
Правильно. Вот эту самую генерацию я и предлагал Вам выдернуть из скриптов. В качестве «домашнего задания».
Получиться должно то, что я показывал по спойлером.
Впрочем, как я уже говорил, можно сохранить текст из спойлера в файл и просто включить в пакет.
Поскольку этот файл всегда один и тот же. Хотя я бы его модифицировал. А заодно поэкспериментировал бы с конфигами. Есть там одна идея.
UnixNoob писал: ↑
03.12.2020 22:18
а вот на счет hal не знаю.
Чего Вы не знаете? Нет его. Сдох он. Уже лет десять как. Последняя версия в апстриме была в 2009 году.
В состав Slackware входил во времена версии 13.37. В 14.0 уже не было.
На смену HAL, кстати, пришел как раз udev. Так что тут и сомневаться нечего.
На кой ляд в этих скриптах предусмотрен вариант для HAL, я не знаю. Скорее всего, тянется ещё с тех времен.
UnixNoob писал: ↑
03.12.2020 22:18
Я конечно не знаю как ребята с HP предполагают это устанавливать в Linux.
Ну, как? Обыкновенно. Распаковали тарбол, запустили скрипты, всё сгенерировалось/раскидалось, симлинки создались.
А дальше перезапуск — всё должно работать.
Все эти «установщики от производителя» — они практически все такие. Более продвинутые предлагают разные режимы запуска и даже генерируют пакеты под разные дистры.
В данном случае рестарт CUPS в процессе работы скрипта, правда, не сработал, но это в контейнере. В основной системе, может, и сработал бы. Я с этим не разбирался, поскольку для создания пакета это несущественно.
UnixNoob писал: ↑
03.12.2020 22:18
Надо про контейнеры почитать в итоге.
Про контейнеры могу поделиться опытом. В контексте их использования в Slackware.
Пускай скрипят мои конечности.
Я — повелитель бесконечности…
Мой блог
-
UnixNoob
- Сообщения: 1017
- ОС: Slackware
Re: Установка МФУ
Сообщение
UnixNoob » 04.12.2020 11:04
Hephaestus писал: ↑
04.12.2020 07:37
Сдох он. Уже лет десять как.
Понятно.
Hephaestus писал: ↑
04.12.2020 07:37
Про контейнеры могу поделиться опытом. В контексте их использования в Slackware.
Поделитесь, буду знать в какую сторону смотреть хотя бы, чтобы ознакомиться с вопросом.
«Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные»
-
Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн…
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Сообщение
Hephaestus » 04.12.2020 14:45
UnixNoob писал: ↑
04.12.2020 11:04
Поделитесь, буду знать в какую сторону смотреть хотя бы, чтобы ознакомиться с вопросом.
Сначала я остановился на варианте с LXC. В частности потому, что нашлись материалы на русском языке.
Затем, немного вникнув в тему, понял, что лучше запускать непривилегированные контейнеры,
и таким образом перешел к использованию связки LXC/LXD. Разбирался с помощью цикла статей (это не в контексте Slackware, а вообще), плюс на оф. сайте есть некоторые материалы на русском.
Что могу отметить по опыту использования.
Непривилегированный контейнер разворачивается из готового (заранее подготовленного) образа системы.
Образ загружается из Сети. Также можно создать собственный образ. И даже опубликовать его.
Сложность в том, что LXC/LXD изначально заточены под Ubuntu, соответственно, и образы убунтовские (не все, но многие).
Но контейнер — это не виртуальная машина, то есть не полностью изолированная среда. Это, скорее, chroot с дополнительными мерами изоляции. Следовательно, нельзя, скажем, находясь в Slackware, развернуть в контейнере Windows7.
Развернуть Ubuntu, находясь в Slackware, может быть, и можно, но я не пробовал. Точнее, пробовал, но сразу оно не взлетело, а разбираться мне было некстати. Мне нужно было иметь в контейнере Slackware, и я копал в этом направлении.
А раз нужна Slackware, значит, нужен образ Slackware. Один такой образ нашелся, но мне не подошел (уже не помню, почему).
И я создал свой.
Вкратце это так:
Подготавливаем файл нужного размера (пустой). Это будет «диск», на который поставим систему.
Настраиваем chroot к этому «диску» (со всеми сопутствующими манипуляциями).
Устанавливаем Slackware на этот «диск» (в chroot).
Получается такой «виртуальный диск» с установленной системой внутри.
Упаковываем его для создания образа системы под контейнер.
Полученный образ используем для разворачивания контейнера.
Разумеется, нужно подготовить файлы конфигурации контейнера, в которых будут настройки сети, указаны устройства (в том числе наш «диск») и т.п.
При установке системы в chroot нужно не забыть включить туда необходимые пакеты (пакеты можно поставить и позже),
но если есть готовые, лучше включить сразу. Понадобятся базовые настройки системы (создание пользователя, например).
Кроме того, я создал файлы профилей в числе прочего содержащие определенные настройки приглашения командной строки.
Таким образом, в терминале сразу видно, когда мы в контейнере, а когда за пределами.
Также пригодится каталог обмена (share) через него можно будет перекидывать файлы в контейнер и обратно.
О возможных проблемах.
Поскольку LXC/LXD ориентирован на Ubuntu, он хочет systemd, а точнее, cgroup/systemd.
В Slackware этой штуки нет, поэтому для контейнера необходимые элементы создаются.
Вообще, это происходит ещё на этапе установки lxd, но нужно иметь в виду.
По умолчанию используется файловая система zfs.
Но я несколько раз столкнулся с тем, что при очередном запуске контейнера дисковые устройства попросту отсутствовали.
Соответственно, контейнер не запускается. И вместо работы с контейнером начинаешь ковырять zfs.
Лично я грешу на то, что поддержки zfs нет в ядре linux, она подгружается отдельным модулем.
Когда устройства исчезли в очередной раз, я плюнул и перешел к использованию btrfs, которая в этом смысле значительно стабильнее.
В btrfs я вижу ещё и тот плюс, что она представлена файлом на диске. И этот файл можно примонтировать при случае (без запуска контейнера). Насколько я помню, zfs в системе представлена иначе, и прицепиться к ней вне контейнера может быть сложнее (во всяком случае, менее удобно).
Существует мнение, что btrfs старая, нестабильная и вообще, zfs лучше, но я не расположен спорить на эту тему. Я сделал выбор, исходя из практики.
Все эти манипуляции по созданию «виртуального диска», установке системы в chroot, настроек, созданию конфигов для контейнера,
созданию самого контейнера — это довольно много «ручной работы». Мне это быстро надоело и я обернул это дело в скрипты.
Кроме того, бывает нужно разные этапы процесса выполнять по отдельности, то есть только те, которые нужны (скажем, если образ уже создан, не нужно создавать его ещё раз), с этой целью был создан Makefile, который позволяет нормально этим рулить.
Это всё касается LXC/LXD. Насколько это проще (или сложнее), например, в docker, я судить не берусь.
Пускай скрипят мои конечности.
Я — повелитель бесконечности…
Мой блог
-
UnixNoob
- Сообщения: 1017
- ОС: Slackware
Re: Установка МФУ
Сообщение
UnixNoob » 04.12.2020 17:17
Hephaestus
хорошо, спасибо, посмотрю тогда этот вариант и может какое-то сравнение с docker. Про docker я читал и так понял там образы берутся готовые, по-крайней мере по началу, а образ слепок файловой системы. А контейнером там называют запущенное приложение, которое думает что оно работает одно, просто нет гипервизора, как в виртуалке. А вот что считать таким вот «приложением» в задаче установки пакета я пока не понимаю. Но возможно пойму почитав про LXC/LXD.
Я когда вижу что что-то требует systemd иду в gentoo wiki сейчас. Так как там оно на выбор,бывает там какая-то полезная информация встречается. Но думаю это вы все знаете,это так,мысли в слух.
«Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные»
-
Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн…
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Сообщение
Hephaestus » 05.12.2020 10:51
UnixNoob
Забыл один важный момент.
LXC и LXD — это две части одного инструмента.
LXD — демон, LXC — клиент.
Причем, LXC ставится из официальной репы (и может работать самостоятельно, но это будут привилегированные контейнеры).
А LXD ставится из SBo (и соответственно, работает в паре с LXC, обеспечивая создание непривилегированных конетейнеров).
Так вот, версия LXC в репе — 2.0.9, а версия LXD в SBO — 3.0.1. В какой-то момент это перестало работать в таком сочетании. И мне пришлось собрать пакет LXC версии 3.0.3.
Кроме того, при сборке LXD из SBo у меня была какая-то проблема (что-то там не собиралось, уже не помню, из-за чего) и я накладывал патч.
Так что не исключено, что придется повозиться, но в целом, всё вполне решаемо.
Пускай скрипят мои конечности.
Я — повелитель бесконечности…
Мой блог
-
UnixNoob
- Сообщения: 1017
- ОС: Slackware
Re: Установка МФУ
Сообщение
UnixNoob » 06.12.2020 19:13
Либо я что-то еще не понимаю, либо какие-то проблемы с xsane и драйверами samsung.
Создал в /etc/udev/rules.d/ файл smfp.rules, перезапустил udev (ну и в процессе поисков было еще парочку перезагрузок), но он как не работал, так и не работает.
Добавлял в /etc/sane.d/dll.conf строчку smfp, ,но в итоге снова ошибка — «Failed to start scanner. Error during device I/O»
В /var/log/syslog падает это:
Код: Выделить всё
xsane: io/hpmud/pp.c 627: unable to read device-id ret=-1
Пробовал закомментировать «hpio» в /etc/sane.d/dll.conf, в итоге сканнер как-будто готовится сканировать, происходит пару движений и снова та же ошибка failed to start.
После комментирования hpio, в лог еще падает это:
Код: Выделить всё
Dec 6 18:55:48 darkstar /hp-toolbox: hp-toolbox[2244]: warning: Reportlab not installed. Fax coverpages disabled.
Dec 6 18:55:48 darkstar /hp-toolbox: hp-toolbox[2244]: warning: Please install version 2.0+ of Reportlab for coverpage support.
В остальном я не вижу перемен.
scanimage -L:
Код: Выделить всё
device `smfp:usb;04e8;3409;6758-04020434815' is a Samsung SCX-4x16 Series on USB Scanner
Или правила нужно создавать как-то сложнее?
Если открыть в /etc/sane.d файл hp.conf:
Код: Выделить всё
1 scsi HP
2 # Uncomment the following if you have "Error during device I/O" on SCSI
3 # option dumb-read
4 #
5 # The usual place for a SCSI-scanner on Linux
6 /dev/scanner
7 #
8 # USB-scanners supported by the hp-backend
9 # HP ScanJet 4100C
10 usb 0x03f0 0x0101
11 # HP ScanJet 5200C
12 usb 0x03f0 0x0401
13 # HP ScanJet 62X0C
14 usb 0x03f0 0x0201
15 # HP ScanJet 63X0C
16 usb 0x03f0 0x0601
17 #
18 # Uncomment the following if your scanner is connected by USB,
19 # but you are not using libusb
20 # /dev/usb/scanner0
21 # option connect-device
т.е в случае usb я так понимаю не используется /dev/scanner. Нужно ли udev правило в целом я не знаю.
Не знаю что ему от меня еще хочется, кто-то при решении подобной проблемы на WinXP в виртуалке уходил.
«Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные»
-
Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн…
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Сообщение
Hephaestus » 06.12.2020 20:13
UnixNoob
UnixNoob писал: ↑
06.12.2020 19:13
Создал в /etc/udev/rules.d/ файл smfp.rules
Какой именно? Который я предъявлял под спойлером выше? Или ещё какой?
UnixNoob писал: ↑
06.12.2020 19:13
Добавлял в /etc/sane.d/dll.conf строчку smfp
Это излишне. Я в слакбилде предусмотрел этот момент.
Если всё, отработало как нужно, то в каталоге /etc/sane.d/dll.d/ есть файл smfp.conf.
UnixNoob писал: ↑
06.12.2020 19:13
Пробовал закомментировать «hpio» в /etc/sane.d/dll.conf
Почему именно эту строчку, а не какую-то другую?
Я писал выше, что в оригинальных скриптах предусмотрено комментирование строки geniusvp2.
Почему? Я не знаю. Вероятно, что-то с чем-то конфликтует. В моей системе такой строки нет, а Вы у себя проверьте. На всякий.
UnixNoob писал: ↑
06.12.2020 19:13
device `smfp:usb;04e8;3409;6758-04020434815′
Я бы начал решение проблемы именно с этого. Эта штука не дает мне покоя.
Здесь должен быть файл устройства. Если его нет, то как обращаться к устройству? Непонятно.
UnixNoob писал: ↑
06.12.2020 19:13
Или правила нужно создавать как-то сложнее?
Сложнее, чем что? Синтаксис правил всегда один и тот же.
Напихаем ли мы туда больше инструкций или меньше — зависит от ситуации.
UnixNoob писал: ↑
06.12.2020 19:13
т.е в случае usb я так понимаю не используется /dev/scanner
Используется. Какой-то файл устройства должен быть в любом случае.
UnixNoob писал: ↑
06.12.2020 19:13
Нужно ли udev правило в целом я не знаю.
Нужно. Как минимум, выставляет владельца/группу и права доступа.
Как максимум — выполняет дополнительные действия (это для разных устройств — по-разному).
С 3G/4G-модемом, например, без дополнительных действий вообще работать невозможно — он просто не переходит в нужный режим. Со сканерами в этом смысле попроще, но всё равно нюансы могут быть.
UnixNoob писал: ↑
06.12.2020 19:13
Не знаю что ему от меня еще хочется
Ничего особенного. Эти скрипты сделаны довольно лихо — под все линуксы сразу. Обычно это означает, что без дополнительных манипуляций оно не взлетит нигде — разные версии ядер, разные механизмы инициализации, разный состав библиотек, разные версии sane.
Но у Вас есть шанс — scanimage -L обнаруживает устройство (и похоже, что именно то устройство, которое нужно). Осталось добиться нормального взаимодействия с этим устройством.
Сейчас главное — чтобы у Вас энтузиазм не иссяк раньше времени. Впрочем, это ведь Вам нужно, а не кому-то ещё.
UnixNoob писал: ↑
06.12.2020 19:13
кто-то при решении подобной проблемы на WinXP в виртуалке уходил.
Самы простой вариант, но это скучно.
Пускай скрипят мои конечности.
Я — повелитель бесконечности…
Мой блог
-
UnixNoob
- Сообщения: 1017
- ОС: Slackware
Re: Установка МФУ
Сообщение
UnixNoob » 06.12.2020 20:34
Hephaestus писал: ↑
06.12.2020 20:13
Который я предъявлял под спойлером выше?
Да, этот.
Hephaestus писал: ↑
06.12.2020 20:13
Если всё, отработало как нужно, то в каталоге /etc/sane.d/dll.d/ есть файл smfp.conf.
Есть, но я решил попробовать и в dll.conf попробовать добавить.
Hephaestus писал: ↑
06.12.2020 20:13
Почему именно эту строчку, а не какую-то другую?
Кому-то в интернете это помогло, при решении похожей проблемы.
Hephaestus писал: ↑
06.12.2020 20:13
Я писал выше, что в оригинальных скриптах предусмотрено комментирование строки geniusvp2.
Забыл про это, проверю.
Hephaestus писал: ↑
06.12.2020 20:13
Здесь должен быть файл устройства. Если его нет, то как обращаться к устройству? Непонятно.
По адресу шины? Или так нельзя?
Hephaestus писал: ↑
06.12.2020 20:13
Сложнее, чем что? Синтаксис правил всегда один и тот же.
Ну может ему права доступа нужны или чтобы имя было строго конкретное.
Hephaestus писал: ↑
06.12.2020 20:13
Сейчас главное — чтобы у Вас энтузиазм не иссяк раньше времени. Впрочем, это ведь Вам нужно, а не кому-то ещё.
Меня беспокоит не столько мой энтузиазм, сколько вопрос, а решаемо ли это в целом. Может есть какие-то проблемы именно между sane и samsung драйверами, ошибка в логах слишком абстрактная, не указывает ни на что конкретное.
«Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные»
-
Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн…
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Сообщение
Hephaestus » 06.12.2020 21:23
UnixNoob писал: ↑
06.12.2020 20:34
Кому-то в интернете это помогло, при решении похожей проблемы.
Похожая — не значит, что такая же. Рискну предположить, что там устройство всё-таки было другое.
Или проблема другая.
UnixNoob писал: ↑
06.12.2020 20:34
По адресу шины? Или так нельзя?
А какой он — этот адрес шины? И sane знает, что нужно обращаться по адресу шины?
UnixNoob писал: ↑
06.12.2020 20:34
Ну может ему права доступа нужны
Вот правила udev, которые под спойлером как раз права доступа и выставляют.
Кстати, Вы обратили внимание, что там группа устанавливается как «lp»?.
Это для принтера, скорее всего.
Не исключено, что для сканера нужно что-то иное.
UnixNoob писал: ↑
06.12.2020 20:34
чтобы имя было строго конкретное
А вот именем стоит заняться. Есть одна мысль, которую стоит проверить.
Изложу ниже.
UnixNoob писал: ↑
06.12.2020 20:34
Меня беспокоит не столько мой энтузиазм, сколько вопрос, а решаемо ли это в целом.
Я склонен думать, что решаемо. Самое главное: устройство обнаруживается и определяется. Это уже полдела.
UnixNoob писал: ↑
06.12.2020 20:34
ошибка в логах слишком абстрактная, не указывает ни на что конкретное.
Ну почему же? Кое-что извлечь всё-таки можно.
UnixNoob писал: ↑
06.12.2020 19:13
xsane: io/hpmud/pp.c 627: unable to read device-id ret=-1
Буквально написано следующее: не могу прочитать идентификатор устройства. И возвращает -1 как признак неудачного завершения (в случае успеха возращался бы 0).
Если идентификатор прочитать невозможно, значит, либо его нет вообще (пустой), либо он есть, но какой-то неправильный. Сама по себе эта ошибка мало что дает, остается надеяться, что это не баг в драйвере, и решение проблемы где-то уровнем выше — в настройках.
UnixNoob писал: ↑
06.12.2020 19:13
Dec 6 18:55:48 darkstar /hp-toolbox: hp-toolbox[2244]: warning: Reportlab not installed. Fax coverpages disabled. Dec 6 18:55:48 darkstar /hp-toolbox: hp-toolbox[2244]: warning: Please install version 2.0+ of Reportlab for coverpage support.
А это вообще не ошибка. Это предупреждение о том, что титульные страницы для факса работать не могут без установленного ReportLab версии 2.0 или выше. К Вашей проблеме это относится лишь постольку, поскольку есть у Вас факс.
Что касается имени устройства.
Если посмотреть конфиги в /etc/sane.d/, то можно видеть, что они все устроены примерно одинаково.
Однако файл для Вашего устройства принципиально другой: это xml с каким-то своим содержимым.
Между тем, в файле epson.conf сказано следующее:
# USB scanner:
# There are two different methods of configuring a USB scanner: libusb and the kernel module
# For any system with libusb support (which is pretty much any recent Linux distribution) the
# following line is sufficient. This however assumes that the connected scanner (or to be more
# accurate, it’s device ID) is known to the backend.
То есть существует два способа конфигурации usb-сканера: libusb и модуль ядра.
Для начала проверьте, создается ли файл устройства (какой-нибудь /dev/scanner0 или /dev/usb/scanner0).
Если нет, то опробуйте следующий вариант.
Существующий в /etc/sane.d/ файл конфига (smfp-samsung.conf) временно уберите куда-нибудь.
И по аналогии с другими файлами создайте для Вашего устройства конфиг smfp.conf такого содержания:
Если моя гипотеза верна, то вот здесь
device `smfp:usb;04e8;3409;6758-04020434815′
Вы увидите нормальное имя файла. И, может быть, даже что-то заработает.
Если действительно появится имя файла, попробуйте запустить сканирование из командной строки.
Команды я давал выше.
Пускай скрипят мои конечности.
Я — повелитель бесконечности…
Мой блог
В настоящее время Python считается зрелым языком программирования, который широко используется специалистами по обработке данных и инженерами по искусственному интеллекту (ИИ) из-за его простоты и легкочитаемого синтаксиса.
В данном руководстве мы обсудим [Errno 32] Broken pipe в Python, известное сообщение об ошибке, которое мы часто видим при взаимодействии с файловой системой. Мы разберем причину ее возникновения, а также способы ее избежать и исправить в коде.
«Сломанный канал» обычно считается ошибкой IOError (сокращение от «Ошибка ввода-вывода»), которая произошла на уровне системы Linux. Обычно она возникает при чтении и записи файлов или, другими словами, при выполнении ввода / вывода файлов или сетевого ввода / вывода (через сокеты).
Эквивалентная системная ошибка Linux – EPIPE, взятая из кодов ошибок GNU libc.
Макрос: int EPIPE
“Broken pipe.” означает, что на другом конце конвейера нет считывания процесса. Каждая функция библиотеки, вызывающая код ошибки, также выдает сигнал SIGPIPE; этот сигнал завершает программу, если не обрабатывается или не блокируется. Следовательно, программа никогда не отобразит EPIPE до тех пор, пока она не обработает или не заблокирует SIGPIPE.
Из приведенного выше утверждения мы можем сделать вывод, что система, отправляющая сигнал SIGPIPE, вызывает ошибку [Errno 32] Broken pipe в механизме межпроцессного взаимодействия Linux.
Например, система Linux внутренне использует другой сигнал, называемый SIGINT. В Linux команда Ctrl + C отправит сигнал SIGINT, чтобы завершить процесс, или мы можем использовать команду kill для достижения того же эффекта.
Python по умолчанию не игнорирует SIGPIPE. Однако он преобразует сигнал в исключение и вызывает ошибку – IOError: [Errno 32] Сломанный канал каждый раз, когда он получает SIGPIPE.
Ошибка “сломанный канал” при подключении к терминалу Linux
Всякий раз, когда мы сталкиваемся с ошибкой [Errno 32] Broken pipe при попытке передать вывод скрипта Python другой программе, например:
$ python file_name.py | head
Объяснение:
Вышеупомянутый синтаксис конвейера создаст процесс, отправляющий данные в восходящем направлении, и процесс, читающий данные в нисходящем направлении. Когда нисходящему потоку не нужно читать данные восходящего потока, он отправит сигнал SIGPIPE процессу восходящего потока.
Когда нисходящий поток не должен читать данные восходящего потока? Давайте разберемся в этом на примере. Команда head в этом примере должна прочитать достаточно строк, чтобы сообщить восходящему потоку, что нам больше не нужно его читать, и она отправит сигнал SIGPIPE процессу восходящего потока.
Всякий раз, когда восходящий процесс является программой Python, возникает ошибка типа IOError: [Errno 32] Broken pipe.
Как избежать ошибки “сломанный канал”?
Если мы не заботимся о правильном перехвате SIGPIPE и нам нужно быстро запустить процесс, вставьте следующий фрагмент кода в начало программы Python.
Синтаксис:
from signal import signal, SIGPIPE, SIG_DFL #Ignore SIG_PIPE and don't throw exceptions on it...(http://docs.python.org/library/signal.html) signal(SIGPIPE,SIG_DFL)
Объяснение:
В приведенном выше фрагменте кода мы перенаправили сигналы SIGPIPE на стандартный SIG_DFL, который система обычно игнорирует.
Однако рекомендуется остерегаться руководства Python по библиотеке сигналов, чтобы предостеречь от такой обработки SIGPIPE.
Перехват IOError во избежание ошибки Broken pipe
Поскольку ошибка Broken pipe является ошибкой IOError, мы можем разместить блок try / catch, чтобы ее перехватить, как показано в следующем фрагменте кода:
Синтаксис:
import sys, errno
try:
### IO operation ###
except IOError as e:
if e.errno == errno.EPIPE:
### Handle the error ###
Объяснение:
В приведенном выше фрагменте кода мы импортировали модуль sys и errno и разместили блок try / catch, чтобы перехватить возникшее исключение и обработать его.
Возможное решение проблемы в многопроцессорной программе
В программах, которые используют рабочие процессы для ускорения обработки и многоядерные процессоры, мы можем попытаться уменьшить количество рабочих процессов, чтобы проверить, сохраняется ли ошибка или нет.
Большое количество рабочих процессов может конфликтовать друг с другом при попытке взять под контроль ресурсы системы или разрешение на запись на диск.

Изучаю Python вместе с вами, читаю, собираю и записываю информацию опытных программистов.
The broken pipe is a TCP/IP error occurring when you write to a stream where the other end (the peer) has closed the underlying connection. The first write to the closed connection causes the peer to reply with an RST packet indicating that the connection should be terminated immediately. The second write to the socket that has already received the RST causes the broken pipe error. To detect the broken pipe in Go, check if the error returned by the peer is equal to syscall.EPIPE. Usually, this error can be seen when the server crashes while the client is sending data to it.
Reproduce the broken pipe error
In the following example, we reproduce the broken pipe error by creating a server and client that do the following:
- the server reads a single byte and then closes the connection
- the client sends three bytes with an interval of one second between them
The server receives the first client byte and closes the connection. The next byte of the client sent to the closed connection causes the server to reply with an RST packet. The socket that received the RST will return the broken pipe error when more bytes are sent to it. This is what happens when the client sends the last byte to the server.
package main
import (
"errors"
"log"
"net"
"os"
"syscall"
"time"
)
func server() {
listener, err := net.Listen("tcp", ":8080")
if err != nil {
log.Fatal(err)
}
defer listener.Close()
conn, err := listener.Accept()
if err != nil {
log.Fatal("server", err)
os.Exit(1)
}
data := make([]byte, 1)
if _, err := conn.Read(data); err != nil {
log.Fatal("server", err)
}
conn.Close()
}
func client() {
conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
log.Fatal("client", err)
}
// write to make the connection closed on the server side
if _, err := conn.Write([]byte("a")); err != nil {
log.Printf("client: %v", err)
}
time.Sleep(1 * time.Second)
// write to generate an RST packet
if _, err := conn.Write([]byte("b")); err != nil {
log.Printf("client: %v", err)
}
time.Sleep(1 * time.Second)
// write to generate the broken pipe error
if _, err := conn.Write([]byte("c")); err != nil {
log.Printf("client: %v", err)
if errors.Is(err, syscall.EPIPE) {
log.Print("This is broken pipe error")
}
}
}
func main() {
go server()
time.Sleep(3 * time.Second) // wait for server to run
client()
}
Output:
2021/10/21 19:10:01 client: write tcp 127.0.0.1:50389->127.0.0.1:8080: write: broken pipe
2021/10/21 19:10:01 This is broken pipe error
Handle the broken pipe error
To handle the broken pipe, you need to check if the error returned from the other end of the connection is an instance of syscall.EPIPE. In the example above, we perform this check using the errors.Is() function and print the message "This is broken pipe error" if it occurs. The broken pipe can be seen on either the client or server side, depending on which one is trying to write to the closed connection. Typically there is no need to handle it in any special way since it is normal that a connection may be interrupted by either side of the communication. For example, you can ignore the error, log it or reconnect when it occurs.
Difference between broken pipe and connection reset by peer
Usually, you get the broken pipe error when you write to the connection after the RST is sent, and when you read from the connection after the RST instead, you get the connection reset by peer error. Check our article about connection reset by peer error to better understand the difference between these two errors.
In this article, we will discuss Pipe Error in python starting from how an error is occurred in python along with the type of solution needed to be followed to rectify the error in python. So, let’s go into this article to understand the concept well.
With the advancement of emerging technologies in the IT sector, the use of programming language is playing a vital role. Thus the proper language is considered for the fast executions of the functions. In such a case, Python emerges as the most important language to satisfy the needs of the current problem execution because of its simplicity and availability of various libraries. But along with the execution, the errors during the execution also comes into existence and it becomes difficult for the programmers to rectify the errors for the processing of the problem.
The Emergence of Broken Pipe Error
A broken Pipe Error is generally an Input/Output Error, which is occurred at the Linux System level. The error has occurred during the reading and writing of the files and it mainly occurs during the operations of the files. The same error that occurred in the Linux system is EPIPE, but every library function which returns its error code also generates a signal called SIGPIPE, this signal is used to terminate the program if it is not handled or blocked. Thus a program will never be able to see the EPIPE error unless it has handled or blocked SIGPIPE.
Python interpreter is not capable enough to ignore SIGPIPE by default, instead, it converts this signal into an exception and raises an error which is known as IOError(INPUT/OUTPUT error) also know as ‘Error 32’ or Broken Pipe Error.
Broken Pipe Error in Python terminal
python <filename>.py | head
This pipeline code written above will create a process that will send the data upstream and a process that reads the data downstream. But when the downstream process will not be able to read the data upstream, it will raise an exception by sending SIGPIPE signal to the upstream process. Thus upstream process in a python problem will raise an error such as IOError: Broken pipe error will occur.
Example:
Python3
for i in range(4000):
print(i)
When we run this file from unix commands:
python3 main.py | head -n3000
Procedure to avoid Broken Pipe Error
Approach 1: To avoid the error we need to make the terminal run the code efficiently without catching the SIGPIPE signal, so for these, we can add the below code at the top of the python program.
from signal import signal, SIGPIPE, SIG_DFL signal(SIGPIPE,SIG_DFL)
Python3
from signal import signal, SIGPIPE, SIG_DFL
signal(SIGPIPE,SIG_DFL)
for i in range(4000):
print(i)
Output:
0 1 20 1 2 3 4 5 6 7 8 9 3 4 5 6 7 8 9
Explanation:
The above code which is placed on the top of the python code is used to redirect the SIGPIPE signals to the default SIG_DFL signal, which the system generally ignores so that the rest part of the code can be executed seamlessly. But Approach 11 is not effective because in the Python manual on the signal library, which is mentioned that this type of signal handling should be avoided and should not be practiced in any part of the code. So for this reason we will go for the second approach.
Approach 2: We can handle this type of error by using the functionality of try/catch block which is already approved by the python manual and is advised to follow such procedure to handle the errors.
import sys, errno
try:
# INPUT/OUTPUT operation #
except IOError as e:
if e.errno == errno.EPIPE:
# Handling of the error
Example:
Python3
import sys
import errno
try:
for i in range(4000):
print(i)
except IOError as e:
if e.errno == errno.EPIPE:
pass
Output:
0 1 2 3 4 5 6 7 8 9
Explanation:
In the above piece of code, we have used the built-in library of python which is the Sys and Errno module, and use the try/catch block in order to catch the raised SIGPIPE exception and handle it before it stops the program execution.





