root@debian:~# dmesg | tail --lines=6 [ 130.042983] usb 5-1: new full-speed USB device number 2 using ohci-pci [ 130.232289] usb 5-1: New USB device found, idVendor=1a86, idProduct=7584 [ 130.232297] usb 5-1: New USB device strings: Mfr=0, Product=2, SerialNumber=0 [ 130.232301] usb 5-1: Product: USB2.0-Print [ 130.399415] usblp 5-1:1.0: usblp0: USB Bidirectional printer dev 2 if 0 alt 1 proto 2 vid 0x1A86 pid 0x7584 [ 130.399507] usbcore: registered new interface driver usblp
CUPS installation also happens without any visible error.
Basically, I'm following the steps available at OpenPrinting installation:
apt install lsb
- download the 64bit driver for Debian
dpkg -i openprinting-lm1100_1.0.2a-6lsb3.2_amd64.deb
- Start Menu > Preferences > Print Settings
- Add printer to CUPS
(sometimes the device is listed as "Unknown" sometimes as "Lexmark 1000", although the correct would be "Lexmark 1100", and the connection is always listed as "USB")
Unfortunately, after such installation steps, the printer simply doesn't print. When I try to print a test page, most of the time the printer remains quiet like dead. The only info I've got from CUPS is "Printer State: Processing - Sending data to printer."
Looking at the driver package, there are two simple scripts (
lm1100back) that moves the print head to service and parking position:
root@debian:~# cat /opt/OpenPrinting-lm1100/bin/lm1100change #!/bin/sh dd if=/opt/OpenPrinting-lm1100/share/lexmarkchange of=/dev/lp0 root@debian:~# cat /opt/OpenPrinting-lm1100/bin/lm1100back #!/bin/sh dd if=/opt/OpenPrinting-lm1100/share/lexmarkback of=/dev/lp0
They are hardcoded to use
/dev/lp0 and should probably be edited to use the USB-to-Parallel adapter instead. However, even replacing
/dev/usb/lp0 such scripts still don't work.
I'm sure this issue is not due to broken hardware because:
- The printer works fine via a PCI parallel card.
- The USB-to-parallel adapter works fine with an Epson Stylus Color 480 printer.
- Any idea how to make the scripts
- Does the Lexmark 1100 driver supports an USB-to-Parallel adapter?
If not, is there any workaround? ex: symbolic links?
- Any idea how to install the Lexmark 1100 printer via an USB-to-Parallel adapter?
- Operating System: Debian Stretch LXDE
- USB-to-Parallel Printer Adapter: BF-1284 | Manual
- Printer: Lexmark 1100 Color Jetprinter | User's Guide
root@debian:~# lpstat -lp Lexmark-Lexmark-1000-3 root 1024 Tue 19 Nov 2019 12:26:55 PM -03 Status: Sending data to printer. Alerts: job-printing queued for Lexmark-Lexmark-1000 root@debian:~# lpstat -v device for Lexmark-Lexmark-1000: usb://Lexmark/1000 root@debian:~# cat /var/log/daemon.log | tail Nov 19 13:16:30 debian systemd: Stopped target Printer. Nov 19 13:16:36 debian systemd: cups.socket: Socket service cups.service already active, refusing. Nov 19 13:16:36 debian systemd: Failed to listen on CUPS Scheduler. Nov 19 13:16:36 debian systemd: Dependency failed for Configure Plugged-In Printer. Nov 19 13:16:36 debian systemd: email@example.com: Job firstname.lastname@example.org/start failed with result 'dependency'. Nov 19 13:16:36 debian systemd: Reached target Printer. Nov 19 13:17:15 debian dbus: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' Nov 19 13:17:15 debian systemd: Starting Hostname Service... Nov 19 13:17:15 debian dbus: [system] Successfully activated service 'org.freedesktop.hostname1' Nov 19 13:17:15 debian systemd: Started Hostname Service. root@debian:~# systemctl cat email@example.com # /lib/systemd/system/configure-printer@.service [Unit] Description=Configure Plugged-In Printer Requires=cups.socket After=cups.socket [Service] ExecStart=/lib/udev/udev-configure-printer add "%i"
Considering that the scripts
lm1100back where hardcoded with
/dev/lp0 instead of
/dev/usb/lp0, at first you might guess that the executable
lm1100 would also be hardcoded as
/dev/lp0 instead of
However, a careful look at the source code shows that the only reference to
/dev/lp0 were in the comments and in the readme:
lx.c * Usage: * Create the script 'lp': * !/bin/sh * gs -q -sDEVICE=pbmraw -r288 \ * -dNOPAUSE -dSAFER -dBATCH \ * -sOutputFile=- \ * $1 | lx > /dev/lp0 * then call: * lp <file>.ps README A way to print a postscript file would be to run: gs -q -sDEVICE=ppmraw \ -r300 \ -sPAPERSIZE=(Letter|A4|Legal) \ -dNOPAUSE \ -dSAFER \ -sOutputFile=- \ - | lm1100 - > /dev/lp(0|1|2)
Therefore, it seems that
lx is device path agnostic and the source code doesn't need to be recompile. It would be just a matter of calling:
gs -q -sDEVICE=pbmraw -r288 \ -dNOPAUSE -dSAFER -dBATCH \ -sOutputFile=- \ $1 | lx > /dev/usb/lp0
in order to make it print via the USB-to-Parallel adapter.
Recently, I've talked to one of the developers which explained the following:
The program 'lx' is very simple: it gets the pixels and send them to the printer without any strong conversion. If the binary flow sent by the program is the same as the one the printer receives, it should work. As it does not, this means the binary flow is changed somewhere in the system (USB to parallel driver, USB driver) and/or in the USB to parallel device. I cannot know where.
Your problem is not easy to solve: it asks for low level debug. The first things to check are the creation of the printer (/dev/lp0 or some other name), and, then, if simple commands (head move) are working...
Finally, since the developer is having trouble with this issue, I will have to give up and continue using the cumbersome Desktop PCI-Parallel card.