Programming Identity Strings

OVERVIEW

The printed document is a key element of most business applications. Keeping an "electronic copy" of printout is important part of the process. Typically, captured print documents are in Page Description Language(PDL) formats like PCL, PostScript or AFP. RedTitan EscapeE will reprocess print data "PDL" to create electronic documents, like PDF, or reprocess to extract data in to other formats. Capturing printer data may simply require redirecting output to a disk file or intercepting TCP/IP traffic but if the host computer is a "locked down black box" or is completely isolated from a network (like many medical or diagnostic devices), print capture presents more of a challenge. In some cases (particularily type approved equipment) it may not be possible to change or update the host computer software at all.

RedTitan makes two hardware interfaces that solve these problems.
  1. PRINT2PC - UP1. Legacy systems using parallel(centronics) ports. UP1 captures parallel port printout and re-directs the data to a PC. Parallel to USB.
  2. PRINT2USB - UU2. Modern equipment may print directly to a laser or inkjet printer connected to a USB port. USB to USB.
This document is concerned with the special configuration of the PRINT2USB UU2 model.

The PRINT2USB box (UU2) completely emulates a chosen printer. The "virtual printer" hardware appears to a host computer as a USB attached printer. PRINT2PC is a "plug and play device" that is programmed to have the same configuration as the physical printer it replaces. The host computer can continue to print as normal but the completed print file is captured by RedTitan EscapeE for further processing or printing.

UU2 Hardware.

The UU2 hardware is pre-programmed as a generic "printer class" device. To correctly emulate a particular printer the UU2 must be re-programmed with appropriate identification strings.
host - management interface
The UU2 has two USB interfaces. The green USB B "management" interface plugs directly into a Windows PC running the RedTitan PRINT2USB application. Power for the UU2 micro-controller is derived from this interface.

The red USB B "host" interface will be programmed to a virtual printer identity to replace a physical printer. The RED USB INTERFACE IS NOT ATTACHED to the host computer until the UU2 hardware has been programmed to an appropriate identity using the management interface in the PRINT2USB application.

Plug and Play printer emulation.

A number of modern printer identities have been tested by RedTitan. A list is published at https://www.pclviewer.com/uu2

To emulate one of these printers is simply a matter of installing the selected identification strings (*.VID file) using the ADVANCED option in the USB2PC configuration dialogue. The new configuration is saved in non-volatile memory on the UU2. It is now possible to unplug the physical printer and attach the host computer to the UU2 using a suitable cable attached to the red "host" interface. If the operation was successful the host can now print directly to the capture process running in the USB2PC application.

Notes
  • PNP also defines a CLASS identity for a device. UU2 presents the class as "PRINTER" at the device interface level; a seperate identity string is not required.
  • USB2PC does not provide support for double byte characters

CID

Microsoft recommended a way of creating a "CID" as part of the CHICAGO(NT) development. In summary, the MFG and MDL strings are concatonated. A 16 bit checksum is computed from the complete string. The constructed string has space characters replaced by underscore characters and it is truncated to twenty characters. The checksum is added as 4 hex character to produce the completed CID. RedTitan has published a utility to test this computation (see CIDOMAT.EXE in utilities.zip)
   e.g. CIDOMAT
      MFG: HP
      MDL: Deskjet F2200 series
      CID: HPDeskjet_F2200_seri87C7
The best way of deriving the a suitable set of Device Identification Strings is best found by attaching the target physical printer to a Windows or Linux computer. . . .

Understanding LINUX printer install.

A Linux distribution (like SUSE) often requires user intervention to complete a new driver printer install. e.g. Using YasT to configure a printer attachment to a spooler.

A complete install may not be required to check printer identities. As soon as the new printer is attached, the command line utility LSUSB may be used to list printer characteristics. The "root" password is required e.g.
      sudo lsusb -v
See example output at https://www.pclviewer.com/uu2/

Replacing obsolete printers.


Creating a UU2 configuration is more problematic if an example of the physical printer is no longer available. (Note that a printer that will no longer "print" may still present identity strings!) If possible locate an INF file for the printer.

The Linux community provide a number of databases that can help. See http://www.linux-usb.org/usb.ids for VID and PID data.

Where the "back box" host computer has a user interface it is often possible to choose an alternative printer model. In this case it is a good idea to select a printer with the best profile. Most INKJET printer drivers create output as a graphic image (e.g. PCL3GUI). Although RedTitan EscapeE will view and convert this material to other formats it becomes difficult to recover textual information for collation puposes. (Note: RedTitan EscapeE supports a number of OCR systems but users should be aware of the limitations of this technology). If possible, test a color laser printer emulation; it has the best chance of being both graphic and textual output.


LICENCE: The user is prohibited from using the UU2 device to emulate a printing system where this may infringe a third party licence.

DISCLAIMER OF WARRANTIES: RedTitan provide the hardware and software know as UU2 and UP1 described above "as is" without warranty of any kind. RedTitan disclaims all warranties with regard to these devices; expressed or implied; including without limitation any implied warranties or fitness for a particular purpose; merchantability; or noninfringement of third party rights.

LIMITATION OF LIABILITY: In no event will RedTitan be liable for any loss of use; interuption to business or consequential damages of any kind arising from the use of this device.

Virtual USB Printer

USB Virtual Printer

Plug and Play


"Plug and Play"(PNP) in the context of a USB attached printer is a process that automatically installs driver software for a particular MAKE and MODEL of a printer. Depending on the particular host operating system, the detection of a new printer may initiate a search for appropriate drivers. When the same printer is replugged the process of making the printer available to the user is much faster.

The objective in the deployment of the RedTitan Virtual Printer is usually the configuration of a device that will "mount" without any user intervention. (The host computer may not have a user interface capable of installing "new" hardware).

PNP Identity strings.


The PNP standards were developed when parallel port centronics interfaces were adapted to return small identity strings to host computers. The confused adoptation of PNP on USB devices by printer manufacturers has led to some compromises that complicate the process. In the absence a simple central registration scheme for a VENDOR INDENTIFICATION (VID) / PRODUCT IDENTIFICATION (PID), Microsoft extended the proposed standards to prevent "collisions" between different manufacturers when selecting drivers. The (still informal) VID/PID is used as the overriding identity on Linux platforms but Microsoft platforms also use COMPATIBLE ID (CID) created from hashing the MANUFACTURER (MFG) and the printer MODEL (MDL).

UU2 presents the following identity strings in response to an identity query
 ID use origin format example
VID Vendor ID Assigned by the USB organisation Four hexadecimal values 03F0
PID Product Identification Assigned by the manufacturer Four hexadecimal values 6C17
RID Revision ID Version of driver assigned by author Four hex digits (endian swapped) 0100
MFG Manufacturer Informal String Hewlett Packard
MDL Model Informal String Color LaserJet 4610
DES Description Informal String HP Deskjet 9800 Printer
CMD Commands Informal list of PDL supported String MLC,PCL,PML,DW-PCL,DYN,DESKJET
SN Serial number Unique device identification String YN9B9CB3RV05CY
CID Compatible ID See CIDOMAT below 24 character string HPDeskjet_9800541F


Virtual Printer Configuration from Management Console


configuring printer personality

Understanding Windows PNP printer install.


A modern Windows platform come with a number of Windows Hardware Quality Labs (WHQL) certified printer drivers available on disk. When a new USB printer is attached, the INF files that accompany each driver is scanned to find a suitable driver that matches the identity strings from the printer. This is a "best match" process ordered in VID/PID,CID rank.

On a Windows 7 platform the drivers are located in the folder - C:\Windows\System32\DriverStore\FileRepository\ A complete summary of the relevant parts of pre-installed database on Windows 7 (64bit) is available as an XML file at https://www.pclviewer.com/uu2/dlist.xml

A single INF may describe a number of different printer drivers

Inspecting the "manufacturer" section of a ".INF" file list a number of parameter value pairs in the format driver=compatability list . . .
   e.g.

      HP LaserJet 5200 Series PCL 5=HPC5200F.GPD.ICM_LH_PHASE5,Hewlett-PackardHP_LaB67C,Vid_03f0&Pid_6417&Rev_0100,HP_LaserJet_5200_Series_pcl5,HP_LaserJet_5200_Series_PCL_5 ; Hardware ID
In this sequence the appropriate identity strings can be deduced
      DES=HP LaserJet 5200 Series PCL 5
      CID=Hewlett-PackardHP_LaB67C
      MFG=HP
      MDL=LaserJet 5200 Series PCL 5
      VID=03f0
      PID=6417
      RID=0100

A UU2 configured with these characteristics would cause Windows to install this driver on attachment without prompting for a disk.

Other fields (the serial number) can be found from the registry after the printer is installed. (See USBX.EXE USB Explorer utility in https://www.pclviewer.com/uu2/utilities.zip)
  • Fields may be omitted.
  • SN may be used to distinguish between several instances of the same printer type.
  • If the SN is omitted the USB port last mounted is used to distinguish "instances"
  • DOT4 printers are not supported
  • USB printer support is always installed
On most Windows platforms the DES field is rarely used. When the install "wizard" is activated the tray pop-up will announce that it is installing "HPLaserJet 5200 Series PCL 5" driver. i.e. MFG an MDL are concatonated without a space character. On completion the name will be extracted from the driver INF file. The pop-up will announce - installed "HP LaserJet 5200 Series PCL 5"