2

I am attempting to get an Epson PictureMate 100 working with a Raspberry Pi 3 running Raspian (Jessie).

According to Open Printing the PictureMate should work perfectly with Gutenprint 5.2.7. I chose the printer because of this and because a few photobooth tutorials (my project) mentioned using the PictureMate 100 with a Pi, so in theory it should work.

I have successfully installed the printer using CUPS with the PictureMate 100 driver from Gutenprint. However, whenever I try to print a test page the printer freezes just as it is about to start printing (it sounds like the print head has moved into position).

The CUPS status shows:

Processing - "Printing page 1, 19%"

And does not move any further even after waiting for an hour. The job can be cancelled in CUPS but this has no effect on the printer. Turning the printer off causes it to hang with an hourglass icon on the screen.

The printer works perfectly on my Mac laptop running El Capitan with CUPS 2.1.0 and Gutenprint 5.2.3. But obviously the PPD is Apple-specific.

I thought that the version of CUPS on Raspian Jessie might be out of date so I updated to CUPS 2.2.1 with Gutenprint 5.2.11. This has had no effect. I have also changed the USB cable and tried a new ink cartridge.

Looking at /var/log/cups/error_log (with log level set to 'debug') everything seems ok until it gets to this point:

D [07/Aug/2017:18:31:58 +0000] [Job 31] Set job-printer-state-message to "Printing page 1, 16%", current level=INFO D [07/Aug/2017:18:31:58 +0000] [Job 31] ATTR: job-media-progress=16 D [07/Aug/2017:18:31:58 +0000] Discarding unused job-progress event... D [07/Aug/2017:18:31:58 +0000] Discarding unused job-progress event... D [07/Aug/2017:18:31:58 +0000] Discarding unused printer-state-changed event... D [07/Aug/2017:18:31:58 +0000] [Job 31] Read 8192 bytes of print data... D [07/Aug/2017:18:31:58 +0000] [Job 31] Wrote 8192 bytes of print data... D [07/Aug/2017:18:31:58 +0000] [Job 31] Read 8192 bytes of print data... D [07/Aug/2017:18:31:58 +0000] [Job 31] Wrote 8192 bytes of print data... D [07/Aug/2017:18:31:58 +0000] [Job 31] Read 8192 bytes of print data... D [07/Aug/2017:18:31:58 +0000] [Job 31] Printing page 1, 17% D [07/Aug/2017:18:31:58 +0000] cupsdMarkDirty(---J-) D [07/Aug/2017:18:31:58 +0000] cupsdSetBusyState: newbusy="Printing jobs and dirty files", busy="Printing jobs and dirty files" D [07/Aug/2017:18:31:58 +0000] [Job 31] Set job-printer-state-message to "Printing page 1, 17%", current level=INFO D [07/Aug/2017:18:31:58 +0000] [Job 31] ATTR: job-media-progress=17 D [07/Aug/2017:18:31:58 +0000] Discarding unused job-progress event... D [07/Aug/2017:18:31:58 +0000] Discarding unused job-progress event... D [07/Aug/2017:18:31:58 +0000] Discarding unused printer-state-changed event... D [07/Aug/2017:18:31:58 +0000] [Job 31] Printing page 1, 18% D [07/Aug/2017:18:31:58 +0000] cupsdMarkDirty(---J-) D [07/Aug/2017:18:31:58 +0000] cupsdSetBusyState: newbusy="Printing jobs and dirty files", busy="Printing jobs and dirty files" D [07/Aug/2017:18:31:58 +0000] [Job 31] Set job-printer-state-message to "Printing page 1, 18%", current level=INFO D [07/Aug/2017:18:31:58 +0000] [Job 31] ATTR: job-media-progress=18 D [07/Aug/2017:18:31:58 +0000] Discarding unused job-progress event... D [07/Aug/2017:18:31:58 +0000] Discarding unused job-progress event... D [07/Aug/2017:18:31:58 +0000] Discarding unused printer-state-changed event... D [07/Aug/2017:18:32:01 +0000] [Client 47] GET /printers/EPSON_PictureMate_100 HTTP/1.1 D [07/Aug/2017:18:32:01 +0000] cupsdSetBusyState: newbusy="Active clients, printing jobs, and dirty files", busy="Printing jobs and dirty files" D [07/Aug/2017:18:32:01 +0000] [Client 47] Read: status=200 D [07/Aug/2017:18:32:01 +0000] [Client 47] Authorized as "pi" using Basic. D [07/Aug/2017:18:32:01 +0000] [Client 47] Processing GET /printers/EPSON_PictureMate_100

The rest of the log after this appears to be a couple of different clients querying information about the printer - 'Job 31' no longer appears. Possibly this is related to the printer-state-change event that is being discarded?

lpstat -a -p while the printer is in this frozen state is simply:

EPSON_PictureMate_100 accepting requests since Mon 07 Aug 2017 18:31:49 UTC printer EPSON_PictureMate_100 now printing EPSON_PictureMate_100-31. enabled since Mon 07 Aug 2017 18:31:49 UTC Printing page 1, 19%

The pi user is part of the lpadmin group.

Questions

  • If the PictureMate should work with Gutenprint 5.2.7 can I assume that later versions should work without regressions? Is there any point in me building Gutenprint 5.2.7?
  • Why is the printer-state-changed event unused and is it possible to view it?

Edit

Attempting to print with lp -d EPSON_PictureMate_100 pic00001.jpg generates a similar set of messages about reading and writing and then the printer freezes a split second after it starts to print.

0

I.

First, run the command lsusb -v | less.

The output will help you to identify two items:

  1. Vendor USB ID
  2. Product USB ID

Both these are in the format 0xABCD, where ABCD is a hex representation of the ID.

What you may need for this particular model (Epson PictureMate 100) is to apply a certain USB quirk for its operation.

I believe, that the USB Vendor ID for Epson is 0x04b8, but you better check with your printer attached and running lsusb -v. The USB Product ID you have to find out yourself.

II.

Make yourself familiar with the USB quirks currently known to CUPS. CUPS knows the following USB quirks:

#   blacklist     Printer is not functional at all with the USB backend.
#   no-reattach   Do no re-attach usblp kernel module after printing.
#   soft-reset    Do a soft reset after printing for cleanup.
#   unidir        Only supported unidirectional I/O.
#   usb-init      Needs vendor USB initialization string.
#   vendor-class  Uses vendor-specific class or subclass.
#   whitelist     The printer is functional with the USB backend.

III.

Have a look into the file /usr/share/cups/usb/org.cups.usb-quirks for a list of pre-defined, well-known USB quirks for more than 80 different printers. Here is, to give an impression for readers who cannot lookup this file on their own systems, a listing of the first and the last three models:

# HP DeskJet 895C
0x03f0 0x0004 unidir

# HP DeskJet 880C
0x03f0 0x0104 unidir

# HP DeskJet 815C
0x03f0 0x0204 unidir

[...]

# Canon SELPHY CP780
0x04a9 0x31dd blacklist

# Lexmark E238 ()
0x043d 0x00d7 no-reattach

# Lexmark E238 (STR #4448)
0x043d 0x009a no-reattach

IV.

The format of these lines is described in the initial comments of the same file:

# USB backend 'quirks' file.
#
# This file lists known issues with various vendors or printers.  Each
# line contains either a comment (starting with #) or the USB vendor ID,
# product ID (omit for all vendor products), and a list of known issues:

V.

From your description I guess that the quirk you need to enable for your printer is the no-reattach one.

VI.

Therefor, now add the following lines to the org.cups.usb-quirks file:

 # Seiko Epson PictureMate 100:
 0x04b8 0x<ABCD> no-reattach

(Replace the 0x<ABCD> with the actual USB Product ID which you found out with lsusb -v!)

VII.

Alternatively, instead of adding above lines to the existing quirks file (which will be overwritten by Raspian package updates), you can also create a new file in the same directory with a name of, say, epson-picturemate-100.usb-quirks where you put in the two lines.

CUPS will read all the quirks files in the /usr/share/cups/usb/ directory before running the USB backend.

This way you protect your local modification(s) from being overwritten by the Raspian package management actions.

VIII.

If above single USB quirk (no-reattach) does not work, you may need to enable multiple quirks, like that:

 # Seiko Epson PictureMate 100:
 0x04b8 0x<ABCD> no-reattach soft-reset unidir

IX.

I'm not really sure about this point... but you may be able to test the effectiveness of my above advice in advance by running this command (without starting to mess around with *.usb-quirks files):

lpadmin -p name_of_your_printer -o usb-no-reattach-default=true
  • Thanks for your detailed answer but unfortunately changing the quirks settings for my printer didn't make any difference. The error log shows the same thing as the one I originally quoted. – Thomas Barrett Aug 13 '17 at 16:12
  • @ThomasBarrett: I'm sorry that this doesn't work then... (Maybe this answer can still be helpful to other users with similar problems, but running a different printer model which is USB-attached.) – Kurt Pfeifle Aug 13 '17 at 18:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.