  HP Printers and Blank Pages? 
 The Question is:
 
How can I print to HP Laserjets via UCX?
 
What can you tell me about UCX$TELNETSYM* logicals.
 
I have looked, found several articles, and as a result upgraded to the
latest version of UCX.
And installed the ECO.
 
But I still get a leading blank page. One message says to utilize the
UCX$TELNETSYM* logicals.
What can you tell me about them? Any suggested values? What files should I
have these logical definitions.
 
Thanks in advance,
 
Lyndon
 
 The Answer is :
 
  The following discusses a variety of common questions concerning IP
  printing using telnet and lpr/lpd, including commonly-seen problems
  such as blank pages and the printer-generated banner pages, and the
  configuration of various Compaq and third-party printers, DECserver
  terminal server printing, and discussions of device control libraries,
  and a variety of device-control issues.  Numerous pointers to topics
  associated with IP printing are included at the end of this topic.
 
	--
 
  For blank-pages using standard serial queues and device control libraries:
 
    Include a reset module in the device control library that sends the
    OpenVMS print symbiont the appropriate string.
 
      $ LIBRARY/TEXT/EXTRACT=reset_module_name -
        /OUTPUT=reset_module_name.TXT
        SYS$LIBRARY:devctl-name.TLB
 
    If you are using the default device control library SYSDEVCTL.TLB
    and cannot locate it, see below for creation instructions.
 
    Use any editor to add the blank page suppression control sequence to
    the reset module text extracted from the library.  The sequence is:
 
      {ESC}]VMS;2{ESC}\
 
    Where {ESC} indicates the ASCII escape character.  (This sequence
    is processed by and controls the activities of the OpenVMS print
    symbiont, and the sequence -- when correctly formated -- will not
    be sent to the printer for processing.  This sequence is specific
    to OpenVMS and the OpenVMS Print symbiont, and not the printer.)
 
    Alternatively, depending on the particular printer, you may need to
    use the following PCL reset module sequence to suppress the formfeed:
 
      {ESC}P{ESC}E{ESC}\
 
    Where {ESC} represents the Escape character, {ESC}E is a PCL command,
    and {ESC}\ is the PCL terminator.  (This sequence will be sent to the
    printer, and will be interpreted by the printer.)
 
    As shown above, device control modules requiring any embedded HP PCL
    sequences should always be bracketed between the sequence {ESC}P and
    the sequence {ESC}\.
 
    Stop all queues using the device control library, and then insert the
    (updated) module back into the device control library:
 
       $ STOP/QUEUE/NEXT queue-name
 
       $ LIBRARY/INSERT/TEXT -
         SYS$LIBRARY:devctl_name.TLB -
         reset_module_name.TXT
 
    Restart each queue using this device control library.
 
    Certain printers may require a different approach when suppressing
    the formfeed (when accessing the printer via telnet symbiont), via
    the definition of the appropriate logical name:
 
    $ DEFINE/SYSTEM/EXECUTIVE UCX$TELNETSYM_SUPPRESS_FORMFEEDS 1
    $ DEFINE/SYSTEM/EXECUTIVE TCPIP$TELNETSYM_SUPPRESS_FORMFEEDS 1
 
    If you wish individual control over the settings for specific telnet
    queues, you can define the logical name appropriately, start the
    queue(s) requiring the particular setting, and then redefine the
    logical name and start the remainder of the telnet queues.
 
    For additional information on device control libraries, see topic
    (2771).
 
    Also determine if the print queue should be set to /NO_INITIAL_FF:
 
      INITIALIZE/QUEUE/NO_INITIAL_FF or SET QUEUE/NO_INITIAL_FF
 
    For additional information and pointers for TELNETSYM printing an
    blank pages, please see the TCP/IP Services management documentation
    and please see topic (8175).
 
	--
 
  The HP PCL code for portrait mode follows:
 
    {ESC}&amp;amp
 
  This is the escape character, an ampersand, a lowercase letter L,
  a zero, and an uppercase letter O.
 
	--
 
  To associate a device control library module with a particular defined
  printing form, use a DCL command similar to the following:
 
    $ DEFINE/FORM -
      /PAGE_SETUP=page_setup_module_name -
      /SETUP=device_setup_module_name -
      form_name form_number
 
  The /PAGE_SETUP qualifier causes module page_setup_module_name to
  be sent to the printer before each page is printed, while the
  /SETUP qualifier causes the device_setup_module_name to be sent
  for each new print file sent to the printer.
 
  Also of interest here can be the /STOCK qualifier (not shown),
  as this can control the behaviour of the printer when specific
  printing stock is (or is not) loaded into the printer.  Using
  the stock, you can prevent program listings from being printed
  out on, say, the blank check or the mailing label stock that
  happens to be loaded into the printer.  The name of the stock
  defaults to the name of the form.  If you do not wish to
  specify the stock, you will want to use /STOCK=DEFAULT when
  defining the form.
 
  To associate the form with a particular print queue for all jobs
  printed to the queue, use the DCL command:
 
    $ INITIALIZE/QUEUE/DEFAULT=(FORM=form_name) queue_name
 
  Related commands include SET QUEUE, START/QUEUE, and PRINT/FORM.
 
  The default device control library is named SYSDEVCTL.TLB.  See
  below for library creation instructions.
 
	--
 
  For blank-pages using TCP/IP Services for OpenVMS symbionts:
 
    For information on the printer port, contact the printer vendor.
    Various HP printers have traditionally used port 9100.  (See
    the section on printer ports below for other printers.)  You can
    confirm this with the vendor, or with commands such as:
 
      $ telnet printername 9100
      $ SET HOST/TELNET printername/port=9100
 
    Issue the above command to connect to the printer's raw port (NOT
    the telnet port!) via telnet, type some text, and then enter a
    printer specific command (such as {CTRL/L} or {CTRL/D} on HP
    printers) to flush the buffer.  If the printer accepts this
    sequence and prints something resembling what was entered, then
    you know that is the right port.  9100 is typically a raw TCP port.
 
    For example:
 
      $ telnet prtnic /port=9100
      %TELNET-I-TRYING, Trying ... ww.xx.yy.zz
      %TELNET-I-SESSION, Session 01, host prtnic, port 9100
      -TELNET-I-ESCAPE, Escape character is ^]
 
      Now enter a {CTRL/T} character.
 
      If the printer is set to Postscript and is functioning correctly,
      the response should appear similar to the following:
 
      %%[ status: idle ]%%
 
 
    Port 9100 may or may not be the port used on any particular printer
    NIC.  (No, the OpenVMS Wizard does not have a list of the ports used
    on arbitrary printers -- please check the printer documentation or
    check with the printer vendor.)
 
    DIGITAL TCP/IP Services for OpenVMS (UCX) V4.1 or V4.2 (or later,
    as available) is recommended.  Use of the appropriate ECO kits is
    also recommended.
 
    The typical command to create and start the symbiont queue under
    UCX can look like this:
 
    $ initialize/queue/start queue_name -
      /on="UCX$QUEUE:insert_port_here" -
      /process=ucx$telnetsym
 
	--
 
  IP Printer Ports:
 
    For information on ports chosen for various printers, NICs, terminal
    servers, or DECserver devices, please see the documentation that is
    associated with the device.  Also please see listings in topics (3960),
    (4045), and (6975).
 
	--
 
  TCP/IP Services Logical names:
 
    Related logical names -- covered in the TCP/IP Services documentation
    in rather more detail -- can include (on releases prior to TCP/IP
    Services V5.0) UCX$TELNETSYM_IDLE_TIMEOUT, UCX$TELNETSYM_RAW_TCP, and
    UCX$TELNETSYM_SUPPRESS_FORMFEEDS.  Alternatively, see the documentation
    for TCPIP$TELNETSYP_IDLE_TIMEOUT, TCPIP$TELNETSYM_RAW_TCP, and
    TCPIP$TELNETSYM_SUPPRESS_FORMFEEDS on TCP/IP Services V5.0 and later.
 
    Messages such as "open_socket_ast invoked with bad IOSB 660: connect
    to network object rejected." in the log file can be triggered by a
    retry interval that is too short for the particular printer -- faster
    printers can use shorter intervals, though faster polling can also
    increase host overhead.  (Values such as 15 to 30 seconds can be
    appropriate for many printers.)  To tell TCP/IP Services LPD to retry
    the print job every minute:
 
    $ DEFINE/SYSTEM/EXECUTIVE UCX$LPD_RETRY_INTERVAL "0 00:01:00.00"
    $ DEFINE/SYSTEM/EXECUTIVE TCPIP$LPD_RETRY_INTERVAL "0 00:01:00.00"
 
    In particular, you may also need to define one (or more) of
    the following logical names:
 
    $ DEFINE/SYSTEM/EXECUTIVE UCX$TELNETSYM_RAW_TCP 1
    $ DEFINE/SYSTEM/EXECUTIVE TCPIP$TELNETSYM_RAW_TCP 1
 
    $ DEFINE/SYSTEM/EXECUTIVE UCX$TELNETSYM_SUPPRESS_FORMFEEDS 1
    $ DEFINE/SYSTEM/EXECUTIVE TCPIP$TELNETSYM_SUPPRESS_FORMFEEDS 1
 
    $ DEFINE/SYSTEM/EXECUTIVE UCX$TELNETSYM_IDLE_TIMEOUT "0 00:00:30.0"
    $ DEFINE/SYSTEM/EXECUTIVE TCPIP$TELNETSYM_IDLE_TIMEOUT "0 00:00:30.0"
 
    Similar messages such as "open_socket_ast invoked with bad IOSB 556:
    device timeout" can be triggered by device sharing, such as another
    host system printing to the same printer.  If the idle timeout setting
    (or the equivilent mechanism on the other host) is set to a relatively
    large value, the host with the long timeout can block this and other
    hosts from accessing the printer.  It is possible that the symbiont
    within the printer itself has its own timeout setting or is otherwise
    busy and is simply not responding sufficiently quickly.  (Accordingly,
    this IOSB 556 error can be benign, and you can silence the OPCOM
    message using the NO_OPCOM logical name described below, or by by
    adjusting the idle timeouts involved.)  It is also possible that the
    IOSB 556 device timeout error indicates a network problem, as this
    error can also result from IP routing problems between the host and
    the printer.  (Use ping, and also try to telnet into the printer.)
 
    Also consider the settings of the NO_OPCOM and LOG_KEEP logical names.
    NO_OPCOM is a binary value, with 1 to disable OPCOM messages and 0 to
    enable reception:
 
    $ DEFINE/SYSTEM/EXECUTIVE UCX$TELNETSYM_NO_OPCOM 1
    $ DEFINE/SYSTEM/EXECUTIVE TCPIP$TELNETSYM_NO_OPCOM 1
 
    LOG_KEEP is set to the number of log files to retain:
 
    $ DEFINE/SYSTEM/EXECUTIVE UCX$TELNETSYM_LOG_KEEP 9
    $ DEFINE/SYSTEM/EXECUTIVE TCPIP$TELNETSYM_LOG_KEEP 9
 
    Check your TCP/IP Services documentation for further details.
 
	--
 
  HP JetDirect Printer Banner Page Settings:
 
    For information on the configuration, commands, and operation of
    HP (formerly known as Hewlett-Packard) printers, and for information
    on the current printer firmware version and on any associated upgrade
    procedures, please contact HP.
 
    Various HP JetDirect printer settings can clearly become involved
    in how the printer functions, and some of the printer settings are
    visible via the HP JetAdmin tool (and some are reportedly not visible
    via JetAdmin).
 
    One of the most common items folks wish to control is the printer's
    own printer-generated banner page.  This printer-generated banner
    displays the user, host, class and job, and generally looks similar
    to the following:
 
      User: user
      Host: host
      Class:  Job: job
 
    Using the instructions for accessing the printer via telnet that
    are listed in an earlier section, enter the following administrative
    commands directly to the HP printer:
 
      &amp;gt; banne
      &amp;gt; 
 
    Other JetAdmin options are visible via the ? (help) command at the
    dead private (&amp;gt;) pro
 
    Other potential options that can be involved include the processing
    of linefeed (LF) and carriage return (CR) in the printer -- please
    contact the printer vendor for assistance with this configuration,
    and determining how to alter these settings.
 
	--
 
  Web-based Printer Management Interface:
 
 
    Some printers may have an integrated web (httpd) server for printer
    configuration and control, check the printer documentation for the
    printers capabilities.  If the printer does contain a web server as
    a management interface, direct your web browser at the printer's IP
    address and management port.  Check the printer documentation for the
    IP port -- common httpd ports include 80 and 8080 -- and for details
    of the management interface.
 
	--
 
  Typical Postscript Printing:
 
    With Postscript printers on OpenVMS, the usual approach is the DCPS
    package.  DCPS has raw TCP/IP support in V1.4 and later -- the telnet
    symbiont also uses the raw TCP/IP support.  (Postscript printers use
    bidirectional communications, and the DPCS-OPEN PAK enables support
    for a variety of third-party Postscript printers.)
 
	--
 
  If you need and do not have a default device control library (which is
  the case if a device control library has not already been created for
  you on your system), you can create one with the command:
 
    $ LIBRARY/CREATE/TEXT SYS$COMMON:[SYSLIB]SYSDEVCTL.TLB
 
	--
 
  With HP 4000 and HP 5000 series printers (and with printers in general),
  ensure that the printers are running the latest firmware version.  In
  the case of the HP 4000 and HP 5000 series printers, these printers must
  be running a minimum of "19980714 MB3.68".  This firmware version number
  is displayed as Firmware Datecode on the printer's configuration page.
  (Also see topic (1797).)
 
  If you are using an HP 4000 or HP 5000 or derivative printer -- or a
  printer from another vendor -- please contact the vendor and request
  the proper firmware version.  The HP 4000 and HP 5000 series printer
  firmware is shipped by HP on a SIMM, and this SIMM is installed directly
  into the printer.
 
  Depending on the operation of the symbiont and the speed at which the
  printer is available, TCP/IP Services may need to back off and retry
  the submission -- having a value that is too large can result in delays
  before jobs are started, and having a value that is too low can result
  in polling overhead.  To adjust the interval, use the following:
 
    $
    $! Tell the LPD symbiont to retry the job every minute:
    $!   on V5.0 and later...
    $ DEFINE/SYSTEM/EXECUTIVE TCPIP$LPD_RETRY_INTERVAL "0 00:01:00.00"
    $!   on versions prior to V5.0...
    $ DEFINE/SYSTEM/EXECUTIVE UCX$LPD_RETRY_INTERVAL "0 00:01:00.00"
 
	--
 
  Printer Character or Print Format Interpretation Problems:
 
    If you are seeing printouts sent to a remote printer appearing with all
    output sent to the printer printed on a single line on the paper, then
    check the settings of the target LPD or (more commonly) Telnet server
    in use -- if you are printing via a DECserver terminal server, then see
    the SET PORT commands for the TELNET CLIENT and the TELNET SERVER.
    (Topic (4811) here in the Ask The Wizard area has an introduction to
    these particular DECserver settings.)  How other servers on other boxes
    might control these particular settings will vary.
 
    Most printers have programmable settings for the interpretation of tab
    characters, line feeds (see previous, and see topic (4811)), and other
    such characters.   Also, most printers will maintain these and other
    settings for the active print job, the default settings when the printer
    powers up, and the factory default settings for the printer.  In other
    words, if the printer is not printing your output correctly -- but the
    data is getting to the printer -- then you will need to check the
    printer-specific documentation for details, commands, and options that
    will be available to you.  And once you get it working, make sure you
    save the settings.
 
    If you wish to control the settings of the printer as part of the
    processing of the OpenVMS print job, you will need a device control
    library.  (See the section on device control libraries for additional
    details.)
 
	--
 
  HP PCL Landscape Printing:
 
  For HP PCL landscape processing, as well as an example of a device
  control library and a device control library module, see topic (5271).
 
	--
 
  The TCP/IP Services package typically expects to use the host name of
  a printer.  If this name is not known via DNS, you will want to declare
  it via a command such as the TCP/IP Services management utility (TCPIP
  on V5.0 and later, UCX on earlier releases) command:
 
    SET HOST "printer.domain.etc"/alias="myhost"/address=w.x.y.z
 
	--
 
  As for some of the various discussions of the HP LaserJet 4000 series
  printers, other HP printers, and various IP printing discussions, please
  see the following topics here in the Ask The Wizard area:
 
    (546), (919), (1020), (1429), (1781), (1797), (2221), (2267),
    (2276), (2312), (2631), (2696), (2771), (3041), (3280), (3960),
    (4045), (4811), (5271), (5431), (5737), (6975), (8175), etc.
 
  This topic (1020) is the best starting point.
 
 
 
 
 Answer written or last revised on  27-AUG-2004 
