How USB Printer Sharing Worked in Mac OS 9

Mac OS 9 introduced native USB Printer Sharing, a software-based solution that allowed users to share inexpensive, direct-connect USB printers across a local area network without requiring dedicated hardware print servers. By leveraging Apple's Open Transport networking architecture and custom extensions, the operating system enabled a host computer to act as a print server, broadcasting availability to other classic Mac systems on the network.

System Software and Architecture

USB Printer Sharing was implemented through a dedicated control panel and a set of system extensions (principally USB Printer Sharing Extension and USB Device Extension). Prior to its introduction, network printing on Macintosh computers generally required expensive PostScript printers equipped with LocalTalk or Ethernet cards. With the widespread adoption of USB starting with the 1998 iMac, consumer-grade desktop printers became standard. Apple's software bridged the gap between these direct-attach USB peripherals and local networks.

Host Configuration and Discovery

On the host Mac—the computer physically connected to the printer via a USB cable—the user configured sharing via the USB Printer Sharing control panel:

  1. The control panel listed all currently connected and compatible USB printers.
  2. The user selected the target printer, clicked "Start" to activate the sharing daemon, and designated a share name.
  3. Access controls could be assigned, including optional password protection to limit who on the local network could submit jobs.

Once activated, the host broadcast the printer's availability across the local network primarily using AppleTalk over Ethernet or Open Transport protocols, making the device discoverable to other network nodes.

Client-Side Setup and Job Transmission

Client Macs running Mac OS 9 required the same USB Printer Sharing software installed, along with the appropriate device driver for the target printer.

  1. Discovery: The client opened the Chooser or used the Desktop Printer Utility. By selecting the relevant printer driver icon and choosing the network zone, the shared USB printer appeared in the list alongside traditional network printers.
  2. Creation: Selecting the device created a standard Desktop Printer icon on the client's desktop.
  3. Printing: When a user printed a document, the client Mac's system software rendered the print file locally into the printer's native spool format.
  4. Network Transfer: Rather than directing raw data to a local USB port, the client's print pipeline routed the spooled packets over AppleTalk/IP to the host Mac.
  5. Host Output: The background daemon on the host received the network stream and piped it directly into the physical USB driver, executing the print job on the hardware.

Operational Requirements and Limitations

Because the architecture relied entirely on the host machine’s resources, it had distinct operational constraints:

  • Host Availability: The host Mac had to remain powered on and awake. If the host entered system sleep, network discovery failed and queued jobs stalled.
  • Driver Compatibility: The feature required cooperation from printer drivers. Some low-end, host-based (GDI) printers used proprietary, non-reentrant drivers that failed to handle network redirection correctly.
  • Host Performance: Spooling large print jobs consumed CPU cycles and memory on the host computer, which could cause brief interface latency during intensive graphics printing.