I'm trying to add an HP LaserJet 6L printer to CUPS, that is connected to linux printing server via a homemade serial - parallel adapter based on this diagram: diagram

Adding a printer as a serial printer doesn't work and probably will never work. Is there some way to tell CUPS or Linux that there is a parallel printer connected to this serial port?

  • 1
    The HP uses the parallel port as parallel port, i.e. it will require parallel data on D0-D7 (pins 2-9) at the same time. Your homemade cable cannot transfer this data. in fact, I don't see how your cable does anything useful at all. So even if you tell CUPS that the transport is serial, and not parallel (and IIRC transport in CUPS is independent of printer model, anyway), it won't work. Unless you somehow can put the HP LJ 6L in a mode where it behaves like a printer with a serial port (which I've never heard about, but who knows...) – dirkt Dec 6 at 15:24
up vote 0 down vote accepted

You cannot make a serial <-> parallel adapter by just wires, and that diagram is not of a serial <-> parallel adapter. I think I recognize the diagram: it looks like a DTE-DTE serial cable with one-way hardware flow control, between a 9-pin DTE serial port and a 25-pin DTE serial port.

In other words, the cable is just the kind of oddball one you might expect to use with a serial-connected printer that supports "DTR flow control". The gender of the printer-side connector is not a reliable indication on whether the port is parallel or serial: historically, some serial-connected printers had non-standard pin-outs and required custom cables, sometimes including non-standard connector gender.

(Back in year 1998 or so, I used to have a HP DeskJet 500 printer, which had both serial and parallel ports available. In order to use its serial port, I had to make a cable that I think might have been exactly like your adapter. I soon found out that a parallel port connection was significantly faster than the serial one.)

As @dirkt said, a parallel port requires data transferred 8 bits at a time in a parallel fashion on pins 2-9. A pulse on the STROBE pin (pin 1) is essential for data transfer. Since your cable has pins 1, 4-6, 8 and 9 unconnected in the 25-pin connector, that adapter cannot possibly work as a parallel adapter.

A true serial -> parallel adapter would require a dedicated chip (or a small pile of individual logic gates) that would detect the serial start bit, receive and store in a buffer the 8 data bits until a valid serial stop bit was received, then place all 8 bits on the parallel output lines and pulse the STROBE line to output one character in parallel mode. A truly bi-directional adapter would be even more complicated.

According to its user manual, HP LaserJet 6L has only a parallel port and cannot support serial-port connections at all.

In short, the set-up you're asking about has no chance of working. Since a serial port may have voltages up to +/- 12V and a parallel port only 0 .. +5V, the worst case is that the adapter may burn out some parallel port data lines in the printer side. (However, modern serial ports are unlikely to use the maximum voltages, so the worst-case scenario is not too likely.)

I'd suggest using a USB->parallel adapter on the Linux side instead, but apparently finding a Linux-compatible USB parallel port adapter can be tricky. If the printing server can take add-on cards, you could probably find a parallel-port add-on card for a reasonable price.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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