HP OfficeJet Linux driver
HP PSC 950 all-in-one
SourceForge Logo

Bugs and TODO list for hpoj-0.8

If you have problems with this or older hpoj versions, then you should try upgrading to the latest hpoj version.

Known bugs in 0.8, not yet fixed or documented as appropriate:

  • Reported by Pablo de V. (Debian kernel 2.4.16) and Neil S. (Kernel 2.4.14 - RedHat 7.2, then 2.4.16) (both using usb-ohci): "ptal-init setup" hangs indefinitely (not just 15 seconds) on /dev/usb/lp0. gdb reports that ptal-mlcd is blocked writing data to the USB fd.

  • Reported by M. Braeutigam: With a parallel-connected G85, ptal-mlcd is able to activate, but sometimes gives "statusWaitSetClear(event=147) timed out!" error messages, and eventually something else breaks, usually a "Reply timer popped" error message. TIMEVAL_BUSY_TIMEOUT is already set to 1 second, which should be more than enough time for this "virtual" event. A (not very good) workaround is to invoke ptal-mlcd with "-porttype spp".

Known bugs in 0.8, fixed or documented as appropriate and checked into CVS:

  • Newer versions of CUPS refuse to print to arbitrary device filenames (such as /dev/ptal-printd/mlc_usb_officejet_d_series). Mark Horn has developed a CUPS "ptal" backend which works with hpoj-0.8. A slightly modified version is now in CVS.

  • If you submit jobs to multiple print queues which map to the same single instance of ptal-printd, then the print job data may get mixed up, causing the printer to output garbage. To prevent this, you can start multiple instances of ptal-printd for the same device, specifying a different "-pipename" switch for each, and map each print queue to a different instance of ptal-printd. The fix in CVS is to have ptal-printd create additional pipes for the device and assign a different pipe to each queue.

  • Many versions of the Linux kernel have SMP-related bugs in the USB subsystem, manifested as randon OOPSes or even hard lockups. If you have an SMP system and experience instability associated with USB I/O, try booting your system in non-SMP mode (pass the "nosmp" option to the kernel), or try upgrading to the latest stable kernel release.

  • For USB, you may need to arrange for printer.o to be loaded before the host controller driver (usb-uhci.o, uhci.o, or usb-ohci.o) in order to get your peripheral recognized at bootup, if you don't have hotplugging set up.

  • The "ex" and "bp" symlinks in the "mlcd" directory cause problems with tar-based backups and other applications that recursively traverse a file system and follow symbolic links. For tar, don't use the "-h" or "--dereference" switches. Running "make clean" in the hpoj directory removes the symlinks.

  • In some cases ptal-mlcd and ptal-printd may get killed with a "SIGHUP" (hangup) signal during bootup. To work around this, edit ptal-start.conf and add "nohup" before the command lines that start ptal-mlcd and ptal-printd.

  • hpoj breaks when devfs is enabled (which is the case on Mandrake 8.1), because it assumes the directories created by "make install" under /dev (ptal-mlcd and ptal-printd) are persistent. A patch is available for the generated ptal-init script to fix this problem. To apply this patch, cd into the directory where ptal-init is installed (/usr/sbin in the case of Mandrake 8.1), and issue the command "patch <ptal-init.patch". Alternatively, you may apply the patch for ptal-init.in before configuring/building the package.

  • SuSE 7.3's "hp_officeJet" RPM fails to create the /dev/ptal-mlcd and /dev/ptal-printd directories, causing ptal-mlcd to exit with a "bind() failed!" fatal error. To fix this, either create these directories manually, or apply the ptal-init patch recommended above for Mandrake 8.1.

  • If you're having USB connectivity problems, such as a "Reply timer popped" error message from ptal-mlcd or problem getting the device ID string, and you're using one of "usb-uhci" or "uhci" kernel modules, then try switching to the other one. Depending on what distribution you're running, you may need to edit /etc/modules.conf or /etc/conf.modules, find the line that says "alias usb-controller usb-uhci", and change "usb-uhci" to "uhci". You may need to reboot or completely power your computer off and back on again after making this switch to your configuration files, to ensure that the new module isn't affected by any hardware state left over by the old module.

  • In order to make ptal-mlcd work with RedHat 7.2 kernel, RedHat 7.1 updated kernel, or (for hpoj-0.8 but not CVS) RedHat 7.3 2.4.18 kernel, or any 2.4.19 or 2.5.7 or later kernel, you must do the following as root:
    • Add the line "options printer proto_bias=3" to /etc/modules.conf.
    • Issue the command "ptal-init stop".
    • Issue the command "/sbin/rmmod printer".
    • Issue the command "/sbin/modprobe printer".
    • Issue the command "ptal-init start".
    • If you use insmod to load printer.o, then you must use the command line "insmod printer proto_bias=3".

  • This updated patch corrects the following two problems with ptal-hp. Download the patch into the hpoj-0.8 directory, and issue the command "patch -p0 <hpoj-0.8-ptal-hp.patch".
    • Compiler error "directives may not be used inside a macro argument" when compiling ptal-hp with gcc-3.0.
    • Error message "Unexpected upload state=...!" in certain timing-sensitive situations when scanning on LaserJets, especially the 3300 series.

  • Files in the mlcd and mlcd/transport directories for hpoj-0.8 fail to compile with gcc3.1.

  • This patch corrects occasional parallel-port signalling problems with the OfficeJet Pro 11xx and possibly other models as well (including "event=36" timeouts and "Host Transfer Recovery" messages). (Thanks to Dan Osterrath.) Download the patch into the hpoj-0.8 directory, and issue the command "patch -p0 <hpoj-0.8-ParPort.cpp.patch".

  • "ptal-init setup" neglects to convert slashes in the model name into underscores. This is especially a problem with some of the LaserJet 3300 series (with USB connection), due to the model name "HP LaserJet 3300/3310/3320".

  • When looking up service names, if the lookup fails, ptal-mlcd incorrectly returns a successful lookup with socket ID 0. A subsequent open of socket 0 may annoy the peripheral, and in MLC mode causes ptal-mlcd to die with a "FATAL ERROR at transport/ExTransport.cpp:450" message.

  • The configure script incorrectly assumes sys/io.h is present on all Linux platforms, and compilation subsequently fails on platforms where this isn't true. A workaround for 0.8 is to give the "--without-par" switch to the configure script.

  • After rebooting a 500/600/700/PSC300 from a system error, ptal-mlcd fails to re-establish parallel communications until it's killed and restarted.

  • If you start LPRng with the peripheral powered off or disconnected, ptal-printd and ptal-mlcd periodically log messages to /var/log/messages about retrying a print job (caused by checkpc). A workaround is to either power on and connect the peripheral, or to invoke "ptal-init start" to restart ptal-printd.

Known issues with related software:

  • The "uhci" host controller driver in the "stock" Linux kernel 2.4.18 is broken. Mandrake 8.2's 2.4.18 package contains a fix. Non-Mandrake users may download and apply ("patch <linux-2.4.17-rc4-usb-je-uhci-update.patch") this patch to the "linux-2.4.18/drivers/usb" directory.

  • Linux USB printer.c doesn't allow "normal" printing (without hpoj) to a USB-connected HP LaserJet 1200 and 2200, and in fact any peripheral that advertises a 7/1/3 interface (MLC/1284.4 packets) before a 7/1/2 interface (raw print data). There are several possible solutions:
    • Use the hpoj software, including the ptal-mlcd and ptal-printd daemons.
    • RedHat 7.2 has a partial fix, but see above for information on the "proto_bias" fix required to make hpoj work.
    • Use David's modified version of printer.c that builds on the RedHat 7.2 solution and makes the latest CVS version of ptal-mlcd work automatically.
    • Use a kernel that has incorporated David's changes: 2.5.7 or later, 2.4.19 or later, with future 2.2 incorporation planned.


Last changed December 10, 2003