Using Network Printers

## Network Printer URIs

Once you have set the IP address you can access the printer or print server using the `ipp`, `lpd`, or `socket` backends. The following is a list of common network interfaces and printer servers and the settings you should use with CUPS:

Table 1: Common Device URIs
Model/Manufacturer | Device URI(s)
--- | ---
Apple LaserWriter | lpd://address/PASSTHRU
Axis w/o IPP Axis OfficeBasic (see directions) | socket://address:9100 socket://address:9101 socket://address:9102
Axis w/IPP | ipp://address/LPT1 ipp://address/LPT2 ipp://address/COM1
Castelle LANpressTM | lpd://address/pr1 lpd://address/pr2 lpd://address/pr3
DPI NETPrint | lpd://address/pr1 lpd://address/pr2 lpd://address/pr3
DLink DP-301P+ | socket://address
EFI® Fiery® RIP | lpd://address/print
EPSON® Multiprotocol Ethernet Interface Board | socket://address
Extended System ExtendNET | lpd://address/pr1 lpd://address/pr2 lpd://address/pr3
Hewlett Packard JetDirect w/o IPP | socket://address:9100 socket://address:9101 socket://address:9102
Hewlett Packard JetDirect w/IPP | ipp://address/ipp ipp://address/ipp/port1 ipp://address/ipp/port2 ipp://address/ipp/port3
Intel® NetportExpress XL, PRO/100 | lpd://address/LPT1_PASSTHRU lpd://address/LPT2_PASSTHRU lpd://address/COM1_PASSTHRU
LexmarkTM MarkNet | lpd://address/ps
Linksys EtherFast® (see directions) | socket://address:4010 socket://address:4020 socket://address:4030
Linksys PSUS4 | lpd://address/lp
Kodak® | lpd://address/ps
QMS® CrownNetTM | lpd://address/ps
Tektronix® PhaserShareTM | socket://address:9100
XEROX® 4512 NIC | lpd://address/PORT1
XEROX® XNIC | lpd://address/PASSTHRU
XEROX® (most others) | socket://address:5503

## Getting the IP Address

When you first install a network printer or print server on your LAN, you need to set the Internet Protocol ("IP") address. On most higher-end "workgroup" printers, you can set the address through the printer control panel. However, in most cases you will want to assign the addresses remotely from your workstation. This makes administration a bit easier and avoids assigning duplicate addresses accidentally.

To setup your printer or print server for remote address assignment, you'll need the Ethernet Media Access Control ("MAC") address, also sometimes called a node address, and the IP address you want to use for the device. The Ethernet MAC address can often be found on the printer test page or bottom of the print server.

### Configuring the IP Address Using ARP

The easiest way to set the IP address of a network device is to use the `arp(8)` command. The `arp` sends an Address Resolution Protocol ("ARP") packet to the specified Ethernet MAC address, setting the network device's IP address:

    arp -s ip-address ethernet-address
    arp -s host.domain.com 08:00:69:00:12:34
    arp -s 192.0.2.2 08:00:69:00:12:34

### Configuring the IP Address Using RARP

The most flexible way to remotely assign IP addresses under UNIX is through the Reverse Address Resolution Protocol ("RARP"). RARP allows a network device to request an IP address using its Ethernet MAC address, and one or more RARP servers on the network will respond with an ARP packet with the IP address the device can use.

RARP should be used when you have to manage many printers or print servers, or when you have a network device that does not remember its IP address after a power cycle. If you just have a single printer or print server, the `arp` command is the way to go.

Some UNIX operating systems use a program called `rarpd(8)` to manage RARP. Others, like Linux, support this protocol in the kernel. For systems that provide the `rarpd` program you will need to start it before RARP lookups will work:

    rarpd

Under IRIX you can enable this functionality by default using:

    chkconfig rarpd on

Both the `rarpd` program and kernel RARP support read a list of Ethernet and IP addresses from the file /etc/ethers. Each line contains the Ethernet address (colon delimited) followed by an IP address or hostname like:

    08:00:69:00:12:34 myprinter.mydomain.com
    08:00:69:00:12:34 192.0.2.2

Add a line to this file and cycle the power on the printer or print server to set its address.

### Configuring the IP Address Using BOOTP

The BOOTP protocol is used when you need to provide additional information such as the location of a configuration file to the network interface. Using the standard `bootpd(8)` program supplied with UNIX you simply need to add a line to the /etc/bootptab file; for IRIX:

    myprinter 08:00:69:00:12:34 192.0.2.2 myprinter.boot

Newer versions of `bootpd` use a different format:

    myprinter:ha=080069001234:ip=192.0.2.2:t144=myprinter.boot

The myprinter.boot file resides in the /usr/local/boot directory by default. If you do not need to provide a boot file you may leave the last part of the line blank.

> Note:

> Some versions of UNIX do not enable the BOOTP service by default. The /etc/inetd.conf usually contains a line for the BOOTP service that can be uncommented if needed.

## Verifying the Printer Connection

To test that the IP address has been successfully assigned and that the printer is properly connected to your LAN, type:

    ping ip-address

If the connection is working properly you will see something like:

    ping myprinter
    PING myprinter (192.0.2.2): 56 data bytes
    64 bytes from 192.0.2.2: icmp_seq=0 ttl=15 time=5 ms
    64 bytes from 192.0.2.2: icmp_seq=1 ttl=15 time=3 ms
    64 bytes from 192.0.2.2: icmp_seq=2 ttl=15 time=3 ms
    64 bytes from 192.0.2.2: icmp_seq=3 ttl=15 time=3 ms

If not, verify that the printer or print server is connected to the LAN, it is powered on, the LAN cabling is good, and the IP address is set correctly. You can usually see the current IP address and network status by printing a configuration or test page on the device.

## Configuring Axis Print Servers

The Axis print servers can be configured using ARP, RARP, or BOOTP. However, on models that do not provide IPP support an additional step must be performed to configure the TCP/IP portion of the print server for use with CUPS.

Each print server contains a configuration file named config that contains a list of network parameters used by the server. To modify this file you must first download it from the print server using the `ftp(1)` program:

    ftp ip-address
    Connected to ip-address.
    220 Axis NPS ### FTP Printer Server V#.## MON DD YEAR ready.
    ftp> user root
    331 User name ok, need password
    Password: pass (this is not echoed)
    230 User logged in
    ftp> get config
    local: config remote: config
    200 PORT command successful.
    150 Opening data connection for config (192,0,2,2),
    (mode ascii).
    226 Transfer complete.
    ##### bytes received in #.## seconds (##### Kbytes/s)
    ftp> quit
    221 Goodbye.

Next, edit the file with your favorite text editor and locate the lines beginning with:

    RTN_OPT.     : YES
    RTEL_PR1.    : 0
    RTEL_PR2.    : 0
    RTEL_PR3.    : 0
    RTEL_PR4.    : 0
    RTEL_PR5.    : 0
    RTEL_PR6.    : 0
    RTEL_PR7.    : 0
    RTEL_PR8.    : 0

Change the `RTN_OPT` line to read:

    RTN_OPT.     : NO

This disables the Reverse TELNET protocol and enables the standard TELNET protocol on the print server. Next, assign a port number for each parallel and serial port on the server as follows:

    RTEL_PR1.    : 9100
    RTEL_PR2.    : 9101
    RTEL_PR3.    : 9102
    RTEL_PR4.    : 9103
    RTEL_PR5.    : 9104
    RTEL_PR6.    : 9105
    RTEL_PR7.    : 9106
    RTEL_PR8.    : 9107

This essentially makes the Axis print server look like a Hewlett Packard JetDirect EX print server. Save the file and then upload the new config file using the `ftp` command:

    ftp ip-address
    Connected to ip-address.
    220 Axis NPS ### FTP Printer Server V#.## MON DD YEAR ready.
    ftp> user root
    331 User name ok, need password
    Password: pass (this is not echoed)
    230 User logged in
    ftp> put config CONFIG
    local: config remote: CONFIG
    200 PORT command successful.
    150 Opening data connection for config (192,0,2,2), (mode ascii).
    226 Transfer complete.
    ##### bytes received in #.## seconds (##### Kbytes/s)
    ftp> get hardreset
    local: hardreset remote: hardreset
    200 PORT command successful.
    421 Axis NPS ### hard reset, closing connection.
    ftp> quit
    221 Goodbye.

Your Axis print server is now ready for use!

## Configuring Linksys Print Servers

The Linksys print servers can be configured using ARP, RARP, or BOOTP. Like older Axis print servers, an additional step must be performed to configure the TCP/IP portion of the print server for use with CUPS.

Each print server contains a configuration file named CONFIG that contains a list of network parameters used by the server. To modify this file you must first download it from the print server using the `ftp(1)` program:

    ftp -n ip-address
    Connected to ip-address.
    220 Print Server Ready.
    Remote system type is Print.
    ftp> get CONFIG
    local: CONFIG remote: CONFIG
    200 Command OK.
    150 Open ASCII Mode Connection.
    WARNING! 68 bare linefeeds received in ASCII mode
    File may not have transferred correctly.
    226 Transfer complete.
    ##### bytes received in #.## seconds (##### Kbytes/s)
    ftp> quit
    221 Goodbye.

Next, edit the file with your favorite text editor and locate the lines beginning with:

    0100 L1_PROUT:P1
    0120 L2_PROUT:P1
    0140 L3_PROUT:P1

Change the port number for each parallel and serial port on the server as follows:

    0100 L1_PROUT:P1
    0120 L2_PROUT:P2
    0140 L3_PROUT:P3

This maps each virtual printer with a physical port. Save the file and then upload the new CONFIG file using the `ftp` command:

    ftp -n ip-address
    Connected to ip-address.
    220 Print Server Ready.
    Remote system type is Print.
    ftp> put CONFIG
    local: CONFIG remote: CONFIG
    200 Command OK.
    150 Open ASCII Mode Connection.
    226 Transfer complete.
    ##### bytes received in #.## seconds (##### Kbytes/s)
    ftp> quit
    221 Goodbye.

Your Linksys print server is now ready for use!