Implementing a DNS-SD solution to advertise iPrint printers

  • 7015848
  • 30-Oct-2014
  • 12-Aug-2015

Environment

iPrint Appliance
DNS

Situation

When attempting to print from an App which searches for printers using AirPrint, the message "No AirPrint Printers Found" is returned.

iOS Apps which use AirPrint are:
  • Camera
  • Notes
  • Mail
  • Safari
  • Chrome
  • Dropbox
Note 1: Not all apps are listed.
Note 2: The following iOS Apps are known to work with the Novell iPrint App:
  • Adobe Reader
  • Attachments in Mail app (except for photos)
This error message cited above appears even though the AirPrint option is enabled for one or more printers through the iPrint Appliance Management Console.

Novell is investigating the possibility of adding the below workaround as an officially supported feature within the iPrint Appliance Management Console interface.  Until that is done, the below steps are not supported by Novell engineering.  However, if you open a Service Request with Novell Technical Services, we will work with you to implement this solution. 

Resolution

Click this link to watch a video demonstrating the steps below.

Steps to resolve:

1. Download the Printer Agent DNS script and copy the padbtxt.xml:
wget -P /tmp ftp://ftp.novell.com/outgoing/PaDNSConverter-0.6.sh
chmod 775 /tmp/PaDNSConverter-0.6.sh
cp /var/opt/novell/iprint/print_manager.iPrintAppliance.psm/padbtxt.xml /tmp/
2. Configure the DNS server to Allow updates from the iPrint Appliance server.
Not all methods to configure a DNS server to allow updates are listed here.

Microsoft DNS:
Open a DOS prompt in "Run As Administrator" mode, or "Run As..." and log in as an admin account.
Run this command:
Syntax:
dnscmd <ServerName> /Config {<ZoneName>|..AllZones} /AllowUpdate 1
Example:
dnscmd 159.167.54.22 /Config mycompany.com /AllowUpdate 1
Note: you will want to run the dnscmd command a second time, after running the PaDNSConvert script, to turn off the AllowUpdate feature.  This is accomplished by changing the AllowUpdate to 0.
Novell DNS
Novell and SuSE Linux DNS has the ability to allow updates from a specific IP address.  Add the iPrint Appliance IP address.  A restart is required for this change to take effect.
Novell DNS
rcnovell-named restart
SuSE Linux DNS
rcnamed restart
Linux DNS
The steps to accomplish this are documented in TID 7014948.

Once DDNS updates are configured to be allowed from the iPrint Appliance server, test to see if that configuration is working.

3. Test if updates are allowed:
From the iPrint Appliance, type:
nsupdate
server <ipOfdnsServer>
zone <Zone>.com
update add iprinttest.<Zone>.com 86400 A 1.2.3.4
send
quit
Replace <ipOfdnsServer> with the IP Address of the DNS server.
Replace <Zone> with the DNS zone which you want to update with printer information.
Did an error return?  If no, then it succeeded and proceed to the next step.

4. Populate the DNS server with printer information:
./PaDNSConverter-0.6.sh -z <Zone>.com -s <ipOfdnsServer>
Note: If you want printers added to multiple zones, run the script multiple times, identifying a different <Zone>.com each time.
Configuration is complete. 

Cause

The solution listed in this TID changes the way that printers are made available to mobile devices. With this workaround, the devices are not relying on Bonjour advertisement, or multi-cast DNS to find printers.  The devices unicast to the DNS server and the DNS server returns a list of printers.  This TID explains how to correctly populate the DNS server with printer information.  This is an extremely efficient and speedy way to return a long list of printers across subnets. 

You do NOT need to check the box for printer advertisement in the iPrint Appliance and you are encouraged to leave that off while using this workaround.

iOS7 consideration:
Once the printer is found by the iOS7 device, one of the two following must happen to be able to print:
a) end user to turn "Double-sided" off for the print job to be submitted. 
        or
b) Apply an updated novell-iprint-server RPM
wget -P /tmp ftp://ftp.novell.com/outgoing/novell-iprint-server-6.6.1.20131022-12.1.x86_64.rpm
rpm -Uvh /tmp/novell-iprint-server-6.6.1.20131022-12.1.x86_64.rpm
rcapache2 restart
rcnovell-idsd restart
rcnovell-ipsmd restart

Additional Information

The script referenced above is possible because of the publicly accessible Apple Bonjour specifications.

Below are ideas to troubleshoot the listing of printers on the iOS device.
1. Printers are available via DNS
:
From the iPrint Appliance server, type this command in a terminal session, putty or otherwise:
Syntax:
dig <PAName>._ipp._tcp.<Zone> txt @<IPofDNS>
Example:
dig printer01._ipp._tcp.novell.com txt @10.100.58.2
Look for the number which follows ANSWER: 
If a 0 appears, the printer is not available from the DNS server. 
If a 1 appears, the printer is available from the DNS server.
2. Correct DNS Server configured on iOS device:
The iOS6 wireless connection must show the same DNS address which had the printers populated to.
Note: to find which DNS server is being used by your iOS6 device:
iOS6 Device -> Settings -> Wi-Fi -> tap the blue arrow pointing right for the current wireless connection -> DNS
3. Search Domains populated:
The Search Domain value within the iOS device must show the zone which the printers were populated to.
Same screen as DNS, but one row lower.
4. UDP Port 53
Devices on the network which the iOS device connects must be able to communicate to the DNS server over port 53 UDP.  To test this:
a. Connect a Windows laptop to the same wireless network as the iOS device.
b. Ensure the Windows connection has the same DNS server configured as the iOS device
Within a DOS prompt, type:
ipconfig /all
Look for the "DNS Servers" value under the Wireless adapter connection output.
Does that match what is found in the iOS Settings -> Wi-Fi configuration?
c. Download the snmp test tool to the Windows workstation:
http://dl.dropboxusercontent.com/u/21134858/snmptester.zip
Unzip snmptester.zip
Double-click snmptest.exe
Enter the following values:
Device IP: DNS IP address
Port: 53
SNMP Version: SNMP V1
Blank or default for everything else.
Click Run Test
Port 53 UDP is reachable if "Value: Protocol error (Exp....." is returned.
Port 53 UDP is not reachable if "Value: No response (chec....." is returned.
5. TCP Port 631
Submitting the print job requires port 631 to be open to the iPrint Appliance server.  You can test whether port 631 is reachable by going to the following web site from the iOS device:
Syntax:
http://<IPorDNSofiPrintAppliance>:631/ipp
Example:
http://myiprintappliance.company.com:631/ipp
If a page is returned with a list of printers, then TCP port 631 is open from the device to the iPrint Appliance server.