My household consists of mainly Macs, iPhones and iPads. Printing from iOS devices is a real pain since my 20 year old LaserJet 4050N printer doesn't support AirPrint. We can only print by transferring them to a MacOS or Windows machine. I am hoping to make the printer AirPrint accessible using my Linksys E1500 or WNDR3300v1 router, but I am confused about how to proceed.
I couldn't find an ready-made OpenWRT firmware suitable for this purpose. The instructions I've read require installing CUPS and a bunch if other packages such as USB support. I am afraid of exceeding the RAM capacity on my router and I'm unsure many of the packages are required. My printer may be old, but it already has a very capable built-in JetDirect Network Server. It also doesn't have nor needs a USB interface and neither do my routers.
As I mentioned, I am trying to make the printer discoverable as an AirPrint device. I can already print without the need for CUPS wirelessly from any of my desktops or laptops, just not on any iOS device.
OpenWrt does have a p910nd print server but I think its main utility is to connect a usb printer to the LAN. I have not seen anything to suggest that the p910nd opkg would be discovered by AirPrint. I also suspect that a printer of that vintage likely has an ethernet card or parallel port and no usb port.
Sorry I'm so late to reply but Lantronix xprintserver is the way to go. Pricey at MSRP but available elsewhere for less. I have the ios xprintserver and android (Google) xprintserver. The ios edition is many years old. Doesn't matter what network config you have, just works, everytime. I wish all network attached devices were this good. Shows up immediately in ios print que after configuring, and by configuring I mean choosing your printing devices. Gives Printer properties and options right from the ios print dialog box. Doesn't need to connect to printer(s), just ethernet to your network. It can handle a multitude of printers from the one device. Has it's own local webpage for serious configuring. Have you already chosen something else? If so let us know. Thanks.
Printers can be distinguished by interface, such as USB or network, and printer language. When buying a printer, make sure that the printer has an interface that is supported (USB, Ethernet or Wi-Fi) and a suitable printer language. Printers can be categorized on the basis of the following three classes of printer languages:
PostScript is the printer language in which most print jobs in Linux and Unix are generated and processed by the internal print system. If PostScript documents can be processed directly by the printer and do not need to be converted in additional stages in the print system, the number of potential error sources is reduced.
Currently PostScript is being replaced by PDF as the standard print job format. PostScript+PDF printers that can directly print PDF (in addition to PostScript) already exist. For traditional PostScript printers PDF needs to be converted to PostScript in the printing workflow.
For known printer languages, the print system can convert PostScript jobs to the respective printer language with Ghostscript. This processing stage is called interpreting. The best-known languages are PCL (which is used by HP printers and their clones) and ESC/P (which is used by Epson printers). These printer languages are normally supported by Linux and produce an adequate print result. Linux may not be able to address certain special printer functions. Except for HP and Epson, there are currently no printer manufacturers who develop Linux drivers and make them available to Linux distributors under an open source license.
The user creates a print job. The print job consists of the data to print plus information for the spooler. This includes the name of the printer or the name of the print queue, and optionally, information for the filter, such as printer-specific options.
At least one dedicated print queue exists for every printer. The spooler holds the print job in the queue until the desired printer is ready to receive data. When the printer is ready, the spooler sends the data through the filter and back-end to the printer.
The filter converts the data generated by the application that is printing (normally PostScript or PDF, but also ASCII, JPEG, etc.) into printer-specific data (PostScript, PCL, ESC/P, etc.). The features of the printer are described in the PPD files. A PPD file contains printer-specific options with the parameters needed to enable them on the printer. The filter system makes sure that options selected by the user are enabled.
If you use a PostScript printer, the filter system converts the data into printer-specific PostScript. This does not require a printer driver. If you use a non-PostScript printer, the filter system converts the data into printer-specific data. This requires a printer driver suitable for your printer. The back-end receives the printer-specific data from the filter then passes it to the printer.
There are multiple possibilities for connecting a printer to the system. The configuration of CUPS does not distinguish between a local printer and a printer connected to the system over the network. For more information about the printer connection, read the article CUPS in a Nutshell at :CUPS_in_a_Nutshell.
IBM Z Printers and similar devices provided by the z/VM that connect locally with the IBM Z mainframes are not supported by CUPS. On these platforms, printing is only possible over the network. The cabling for network printers must be installed according to the instructions of the printer manufacturer.
When connecting the printer to the machine, do not forget that only USB devices can be plugged in or unplugged during operation. To avoid damaging your system or printer, shut down the system before changing any connections that are not USB.
Be careful if a printer manufacturer wants you to install entire software packages. This kind of installation may result in the loss of the support provided by SUSE Linux Enterprise Server. Also, print commands may work differently and the system may no longer be able to address devices of other manufacturers. For this reason, the installation of manufacturer software is not recommended.
A network printer can support multiple protocols. Although most of the supported protocols are standardized, certain manufacturers modify the standard. Manufacturers then provide drivers for only a few operating systems and Linux drivers are rarely provided. The current situation is such that you cannot act on the assumption that every protocol works smoothly in Linux. Therefore, you may need to experiment with several options to achieve a functional configuration.
The LPD protocol is described in RFC 1179. Under this protocol, specific job-related data, such as the ID of the print queue, is sent before the actual print data is sent. Therefore, a print queue must be specified when configuring the LPD protocol. The implementations of diverse printer manufacturers are flexible enough to accept any name as the print queue. If necessary, the printer manual should indicate what name to use. LPT, LPT1, LP1 or similar names are often used. The port number for an LPD service is 515. An example device URI is lpd://192.168.2.202/LPT1.
The protocol supported by the printer must be determined before configuration. If the manufacturer does not provide the needed information, the command nmap (which comes with the nmap package) can be used to ascertain the protocol. nmap checks a host for open ports. For example:
CUPS can be configured with command line tools like lpinfo, lpadmin and lpoptions. You need a device URI consisting of a back-end, such as USB, and parameters. To determine valid device URIs on your system use the command lpinfo -v grep ":/":
During printer setup, certain options are set as default. These options can be modified for every print job (depending on the print tool used). Changing these default options with YaST is also possible. Using command line tools, set default options as follows:
Several applications rely on the lp command for printing. In this case, enter the correct command in the application's print dialog, normally without specifying FILENAME, for example, lp -d QUEUENAME.
When firewalld is active, you may need to configure it to allow clients to browse network printers by allowing mdns and ipp through the internal network zone. The public zone should never expose printer queues.
Normally, a CUPS client runs on a regular workstation located in a trusted network environment behind a firewall. In this case, it is recommended to configure the network interface to be in the Internal Zone, so the workstation is reachable from within the network.
If the CUPS server is part of a trusted network environment protected by a firewall, the network interface should be configured to be in the Internal Zone of the firewall. It is not recommended to set up a CUPS server in an untrusted network environment unless you ensure that it is protected by special firewall rules and secure settings in the CUPS configuration.
CUPS servers announce their print queues over the network either via the traditional CUPS browsing protocol, or via Bonjour/DNS-SD. To enable browsing network print queues, the service cups-browsed needs to run on all clients that print via CUPS servers. cups-browsed is not started by default. To start it for the active session, use sudo systemctl start cups-browsed. To ensure it is automatically started after booting, enable it with sudo systemctl enable cups-browsed on all clients.
In case browsing does not work after having started cups-browsed, the CUPS servers announce the network print queues via Bonjour/DNS-SD. In this case, you need to additionally install the package avahi and start the associated service with sudo systemctl start avahi-daemon on all clients.
The YaST printer configuration sets up the queues for CUPS using the PPD files installed in /usr/share/cups/model. To find the suitable PPD files for the printer model, YaST compares the vendor and model determined during hardware detection with the vendors and models in all PPD files. For this purpose, the YaST printer configuration generates a database from the vendor and model information extracted from the PPD files.
c80f0f1006