ftp.nice.ch/pub/next/system/driver/parallel/ParallelPortDriver.1.5.README

This is the README for ParallelPortDriver.1.5.I.bs.tar.gz [Download] [Browse] [Up]

README-file for the ParallelPort-driver Version 1.5
===================================================

What does it do?
    Par.config is a replacement for NeXT's ParallelPort.config.

Who needs this driver?
    If you have no problems with NeXT's driver, you probably don't need
    Par.config. There are a few systems where NeXT's driver does not work
    at all or does not load reliably at boot time. Par.config is intended
    for these rare cases. If you are really short of IRQs, you might want
    to save the printer interrupt and use this driver. It might also be
    interesting for you (as an example) if you are planning to write your
    own kernel server.

What do I need to run Par.config?
    You need NEXTSTEP User for Intel Processors version 3.2 or 3.3. If
    you run 3.1 you probably won't need Par.config anyway, because the
    driver that shipped with this version worked more reliably (at least
    on my machine). You will also need NEXTSTEP Developer if you want to
    recompile the sources.

What changed since version 1.2?
    * A race condition was finally found, which caused occasional system
      panics or hangs.
    * The interrupt is supervised now. If it does not work correctly, a
      message is printed to /usr/adm/messages telling you about it.
    * If the interrupt does not work, printing is done from a timer interrupt
      (contribution by Axel Habermann <kiwi@buran.fb10.tu-berlin.de>).
    * Statistics about each print job are written to /usr/adm/messages. This
      is also a contribution by Axel Habermann.
    * rewrote much of the README file

How to install the driver
=========================
1.) Compile the distributed source code.
   This step is optional since the package contains a compiled version.
   You will, however, need to recompile if you want to change 'config.h'.
   You need NEXTSTEP Developer to do this.
   Simply load PB.project (in the main-folder, not that in one of the
   subprojects *.tproj) into ProjectBuilder by double-clicking it and
   click on 'BUILD'. This compilation need not be done as root. Maybe you
   will get the compiler-error

 /NextDeveloper/Headers/bsd/sys/user.h:40: header file 'kern/lock.h' not found

   this is an error in the NEXTSTEP-Headers, a possible workaround is to
   make a link from /NextDeveloper/Headers/kernserv to
   /NextDeveloper/Headers/kern (must be done as root!).
   The compilation-process should leave a directory 'Par.config' in the
   main-folder. If you want to save disc-space, you can run the command
   'strip Par.config/PostLoad' now.

2.) Double-click on 'Par.config', the application 'Configure' will be
   started and ask you to install Par; confirm this. You will be asked
   for the root-password, because drivers must be installed as root.
   After installing the driver you can remove the original NeXT-driver
   from the list of active drivers in the 'Other'-section of
   'Configure.app' and add the 'New Parallel Port Driver'. The default
   settings should be OK for the usual configuration.

3.) save the configuration and reboot the machine

Compile time options
====================
There are two options available in config.h:
#define ALLOW_SET_TIMEOUT
    This option enables the PPIOCSETTIMO-ioctl. This is not normally
    desirable! Most of the output filters that drive /dev/pp0 use this
    ioctl to set the timeout to a ridiculous low value (thanks to Marc
    Salvatori <salvo@eskimo.com> who helped finding this out).
#define DEBUG
    This option enables debug output into /usr/adm/messages. All calls of
    open, read, write and close are printed out as well as the success on
    return. This may be a great help in debugging the driver itself.

One option can be set in Par_reloc.tproj/Par.m:
#define PP_TIMEOUT  180
    This is the time (in seconds) the driver waits for a busy printer. If
    you make this time too short, you won't have the time to refill the
    paper feed if it is empty. If you make it too long, you will have to
    wait this time until a process which prints to a busy printer (or a
    switched off printer) can be killed. 180 seconds (equal to 3 minutes)
    were chosen as a compromise.

Troubleshooting
===============
Most problems are related to IRQ and IO-address problems. IO-address
problems are not checked at all. IRQ-problems are checked during
printing. If your IRQ does not work, you get a message like this:

    ParallelPort0: IRQ 7 (or printer's ACK line) does not work!

The physical reason for this is that no interrupt is received when the
printer changes from busy to non-busy state. Possible reasons for this
are:
    * The IRQ is not jumpered correctly
    * The printer cable is damaged (ACK-line)
    * The power management on your motherboard is enabled
I have no explanation for the last reason, but power management has an
influence on how the IRQs work on some systems.

It is always best to cure the cause of a problem. If your interrupt does not
work, you should try to find the cause. However, this driver does not depend
on the interrupt any more. If you can't find the problem, it should still
work.

If your system crashes with a system panic or just hangs during printing,
mail me. This problem should be solved.

--
Christian Starkjohann <cs@hal.kph.tuwien.ac.at> or <cs@ds1.kph.tuwien.ac.at>
finger cs@hal.kph.tuwien.ac.at for PGP Public Key.

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.