### Complete example configuration Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-known-host Example configuration combining all required and optional JSON policies. Use as a template, updating the values to match your own environment. ```json { "MobilityPrintServerHosts": { "Value": ["192.168.1.100"] }, "PrinterDiscoveryCacheTTLSeconds": { "Value": 86000 }, "EnabledDiscoveryModes": { "Value": ["known_host"] } } ``` -------------------------------- ### BIND zone file example Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns Example zone file content showing the standard records. Add the required Mobility Print records to this file. ```bind $TTL 604800 @ IN SOA localhost. root.localhost. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost. @ IN A 127.0.0.1 @ IN AAAA ::1 ``` -------------------------------- ### Example printer.conf.toml with subnet filter rules Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/advanced-configuration/restrict-printer-access-per-subnet Example `printer.conf.toml` file for restricting printer access per subnet. Defines subnet filter rules using `[[SubnetFilterRule]]` entries with `PrinterName` and `Subnets` arrays, plus an `[Authentication]` section. Use as a starting point for configuring which printers are available on which subnets. ```toml DefaultEnabled = true [DisabledPrinters] [EnabledPrinters] # Rule to make Physics Lab and Physics Classroom available on the student subnet. [[SubnetFilterRule]] PrinterName = "Physics*" Subnets = ["192.168.1.0/24"] # Rule to make Art Room available on the student subnet. [[SubnetFilterRule]] PrinterName = "Art Room" Subnets = ["192.168.1.0/24"] # Rule to make Administration Printer and HR Printer available on the staff subnet. [[SubnetFilterRule]] PrinterName = "*Printer" Subnets = ["10.100.1.0/24"] # Rule to make Principal available on the staff subnet [[SubnetFilterRule]] PrinterName = "Principal" Subnets = ["10.100.1.0/24"] # Rule to make Library available on both the staff and student subnet [[SubnetFilterRule]] PrinterName = "Library" Subnets = ["192.168.1.0/24", "10.100.1.0/24"] # Rule to make make all printers available for import into Print Deploy (change 127.0.0.1 to the IP address of PaperCut server if different than Mobility) [[SubnetFilterRule]] PrinterName = "*" Subnets = ["127.0.0.1/32"] [Authentication] PerJob = [] PerPrinter = [] Default = "per-printer" ``` -------------------------------- ### BIND zone definition example Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns Example zone definition in /etc/bind/named.conf.local. Find the one that matches your local zone and copy the file path to edit the zone file. ```bind zone "nyc3.example.com" { type master; file "/etc/bind/zones/db.nyc3.example.com"; # zone file path allow-transfer { 10.128.20.12; }; # ns2 private IP address - secondary }; ``` -------------------------------- ### Configure App Server connection in papercut-server.conf Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/advanced-configuration/network-load-balancers Example configuration for data/config/papercut-server.conf when the App Server is behind a load balancer relative to the Mobility Print server. Add the load balancer's hostname and port to target the active instance in an active/passive HA failover setup. Note that ApplicationServerPort may be set to 80 for older installations; PaperCut NG/MF Print Provider versions prior to 23.0 only support HTTP, and the Mobility Print Server will special-case this and use 443 when connecting. ```text ApplicationServer=app.example.org ApplicationServerPort=80 ``` -------------------------------- ### BIND NS and A records for printer discovery Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns Example records in the pdx.paper.cut forward lookup zone. Ensure the pc-printer-discovery NS record points to the name of your print server's A record. ```dns pc-printer-discovery IN NS pane pane.pdx.paper.cut. IN A 10.1.9.127 ``` -------------------------------- ### Create reverse lookup zones and pointer records with dnscmd Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns-record-examples Use these dnscmd commands to create the reverse lookup zones and pointer records for Mobility Print when clients use a .local DNS search suffix or when restricting printer access per subnet. The example assumes the Mobility Print server is at 10.0.0.6 and clients connect to 10.0.0.0/24 and 10.0.1.0/24. The reverse lookup zones always have 4 octets. ```text dnscmd /ZoneAdd pc-printer-discovery. /dsforwarder 10.0.0.6 dnscmd /ZoneAdd 0.0.0.10.in-addr.arpa. /dsprimary dnscmd /RecordAdd 0.0.0.10.in-addr.arpa. b._dns-sd._udp PTR 0.0.0.10.pc-printer-discovery. dnscmd /RecordAdd 0.0.0.10.in-addr.arpa. lb._dns-sd._udp PTR 0.0.0.10.pc-printer-discovery. dnscmd /ZoneAdd 0.1.0.10.in-addr.arpa. /dsprimary dnscmd /RecordAdd 0.1.0.10.in-addr.arpa. b._dns-sd._udp PTR 0.1.0.10.pc-printer-discovery. dnscmd /RecordAdd 0.1.0.10.in-addr.arpa. lb._dns-sd._udp PTR 0.1.0.10.pc-printer-discovery. ``` -------------------------------- ### Add Mobility Print DNS records with dnscmd in a forward lookup zone Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns-record-examples Use these dnscmd commands to create the DNS records for Mobility Print in a forward lookup zone. The example assumes the Mobility Print server IP is 10.0.0.6 and clients have a DNS search suffix of papercutsoftware.com. These records are automatically generated by the Mobility Print server and are the simplest to set up and troubleshoot. ```plaintext dnscmd /RecordAdd papercutsoftware.com b._dns-sd._udp PTR pc-printer-discovery.papercutsoftware.com dnscmd /RecordAdd papercutsoftware.com lb._dns-sd._udp PTR pc-printer-discovery.papercutsoftware.com dnscmd /RecordAdd papercutsoftware.com pc-mobility-print-host A 10.0.0.6 dnscmd /RecordAdd papercutsoftware.com pc-printer-discovery NS pc-mobility-print-host.papercutsoftware.com ``` -------------------------------- ### Disable auto-updates on Windows Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/advanced-configuration/disable-auto-updates Run this command in an elevated command prompt from the Mobility Print server install location to disable auto-updates. Requires a manually installed version greater than v1.0.3202. ```bash updaterconfigtool.exe auto-update -disable ``` -------------------------------- ### Validate BIND zone file with named-checkzone Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns Validate the zone file after editing. The first command is the general form; the second is an example with a specific zone name and file path. ```bash sudo named-checkzone db. ``` ```bash sudo named-checkzone nyc3.example.com db.nyc3.example.com ``` -------------------------------- ### Disable auto-updates on Mac/Linux Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/advanced-configuration/disable-auto-updates Run this command in Terminal from the Mobility Print server install location to disable auto-updates. Requires a manually installed version greater than v1.0.3202. ```bash sudo /mobility-print/updaterconfigtool auto-update -disable ``` -------------------------------- ### Cloud Print invite links policy JSON for managed Chromebooks Source: https://www.papercut.com/help/manuals/mobility-print/setting-up-cloud-print-for-mobility-print/setting-up-cloud-print-on-clients/configure-chrome-app-in-gsuite Use these JSON objects in the Policy for extensions field to configure Cloud Print invite links for managed Chromebooks. Replace the placeholder with your own Cloud Print setup link. For multiple links, include each link as a separate value in the array. ```json { "CloudPrintInviteLinks": { "Value":[ ""] } } ``` ```json { "CloudPrintInviteLinks": { "Value":[ "", "", ""] } } ``` -------------------------------- ### Mobility Print TLS config load error log Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/advanced-configuration/server-custom-security-settings Example error log from the Mobility Print server when the tls.conf.toml file contains an unrecognized value in MinVersion or CipherSuites. The error indicates the file failed to load and identifies the line and character position of the issue. ```plaintext 2025/10/03 10:36:11 mobility-print: STDOUT|ERROR failed to initialise tls config. error: failed to load existing config file, fields: [{"error":{"Message":"","Usage":"","Position":{"Line":16,"Start":604,"Len":1},"LastKey":"CipherSuites","Line":16},"path":"/Applications/PaperCut Mobility Print/data/config/tls.conf.toml"}] [ err=failed to load existing config file, fields: [{"error":{"Message":"","Usage":"","Position":{"Line":16,"Start":604,"Len":1},"LastKey":"CipherSuites","Line":16},"path":"/Applications/PaperCut Mobility Print/data/config/tls.conf.toml"}] ] config.go:169 ``` -------------------------------- ### Disable unused printer discovery methods Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-known-host Optional JSON configuration to disable unused printer discovery methods. Use only the discovery methods you expect, for example known_host. Replace the array with the modes you want to enable. ```json "EnabledDiscoveryModes": { "Value": ["known_host", "dns", "mdns", "cloud_print"] } ``` -------------------------------- ### Increase Mobility Print server log file size Source: https://www.papercut.com/help/manuals/mobility-print/faq Modify the LogFileMaxSizeMb value in the pc-mobility-print.conf file to increase the maximum log file size. The example shows changing the value from 200 to 2048, which increases total log retention from 200 megabytes to 2 gigabytes. ```json "ServiceConfig": { "LogFile": "data/logs/${ServiceName}.log", "LogFileMaxSizeMb": 2048 } ``` -------------------------------- ### Mobility Print iOS profile printer entry (XML) Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/advanced-configuration/install-mobility-print-queues-onto-managed-ios-ipados-devices-microsoft-intune Shows the XML structure of a printer entry inside the generated Mobility Print iOS profile. Use it to identify the resource path for a printer when constructing the Intune AirPrint settings. The example uses a printer named 'My Printer' with a space, encoded as '%20' in the resource path. ```xml IPAddress myServerFQDN ResourcePath /printers/My%20Printer Port9164 ForceTLS ``` -------------------------------- ### Mobility Print client log error: connection forcibly closed Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/troubleshooting-mobility-print-cloud-print Example log entry from the Mobility Cloud Print client showing the 'An existing connection was forcibly closed by the remote host' error. This error indicates a network connection issue, often due to blocked ports or firewall termination. ```plaintext mobility-print-client.exe: STDOUT|turnc ERROR: 2021/01/0100:00:00 fail to refresh permissions: write tcp4 x.x.x.x:port→ x.x.x.x:443: wsasend: An existing connection was forcibly closed by the remote host. ``` -------------------------------- ### Mobility Print server log error for printer.conf.toml syntax error Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/subnet-filtering Example log entry showing the error message 'failed to read saved printer config file' with a syntax error at line 93, where the parser expected a comma or array terminator but got an open bracket. This appears in the Mobility Print server log when the printer.conf.toml file has a formatting error. ```log 2020/08/10 14:31:47 mobility-print.exe: STDOUT|ERROR: failed to read saved printer config file at "C:\\Program Files (x86)\\PaperCut Mobility Print\\data\\config/printer.conf.toml", err: Near line 93 (last key parsed 'SubnetFilterRule.Subnets'): expected a comma or array terminator ']', but got '[' instead. All printers will be published {"src":"printer_config.go:298"} ``` -------------------------------- ### Create DNS records for pc-printer-discovery zones Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns Sample script for creating DNS records for two sites. Site 1 uses a Mobility Print server at 10.0.0.5 serving subnet 10.1.0.0/24; Site 2 uses a server at 10.0.0.6 serving subnets 10.2.0.0/24 and 10.3.0.0/24. Run these commands in an elevated command prompt on the DNS server after removing any previously created Mobility Print DNS records. ```batch ::Site 1, where the Mobility Print server (10.0.0.5) is serving the subnet 10.1.0.0/24 dnscmd /ZoneAdd pc-printer-discovery-1. /dsforwarder 10.0.0.5 dnscmd /ZoneAdd 0.0.1.10.in-addr.arpa. /dsprimary dnscmd /RecordAdd 0.0.1.10.in-addr.arpa. b._dns-sd._udp PTR 0.0.1.10.pc-printer-discovery-1. dnscmd /RecordAdd 0.0.1.10.in-addr.arpa. lb._dns-sd._udp PTR 0.0.1.10.pc-printer-discovery-1. ::Site 2, where the Mobility Print server (10.0.0.6) is serving two subnets, 10.2.0.0/24 and 10.3.0.0/24 dnscmd /ZoneAdd pc-printer-discovery-2. /dsforwarder 10.0.0.6 dnscmd /ZoneAdd 0.0.2.10.in-addr.arpa. /dsprimary dnscmd /RecordAdd 0.0.2.10.in-addr.arpa. b._dns-sd._udp PTR 0.0.2.10.pc-printer-discovery-2. dnscmd /RecordAdd 0.0.2.10.in-addr.arpa. lb._dns-sd._udp PTR 0.0.2.10.pc-printer-discovery-2. dnscmd /ZoneAdd 0.0.3.10.in-addr.arpa. /dsprimary dnscmd /RecordAdd 0.0.3.10.in-addr.arpa. b._dns-sd._udp PTR 0.0.3.10.pc-printer-discovery-2. dnscmd /RecordAdd 0.0.3.10.in-addr.arpa. lb._dns-sd._udp PTR 0.0.3.10.pc-printer-discovery-2. ``` -------------------------------- ### Create DNS records for multiple Mobility Print servers with dnscmd Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns Use this script to create unique Forward Lookup Zones and DNS records for each Mobility Print server. Each zone corresponds to a DNS search suffix (e.g., site0001.domain.org) and points the pc-printer-discovery NS record to the appropriate Mobility Print host. The script assumes the zones already exist and that each Mobility Print server has a host record (pc-mobility-print-host) with the correct IP address. ```batch ::Site 1, where the Mobility Print server (10.0.1.1) will serve clients with a DNS Search Suffix of "site0001.domain.org" dnscmd /RecordAdd site0001.domain.org b._dns-sd._udp PTR pc-printer-discovery.site0001.domain.org dnscmd /RecordAdd site0001.domain.org lb._dns-sd._udp PTR pc-printer-discovery.site0001.domain.org dnscmd /RecordAdd site0001.domain.org pc-mobility-print-host A 10.0.1.1 dnscmd /RecordAdd site0001.domain.org pc-printer-discovery NS pc-mobility-print-host.site0001.domain.org ::Site 2, where the Mobility Print server (10.0.1.2) will serve clients with a DNS Search Suffix of "site0002.domain.org" dnscmd /RecordAdd site0002.domain.org b._dns-sd._udp PTR pc-printer-discovery.site0002.domain.org dnscmd /RecordAdd site0002.domain.org lb._dns-sd._udp PTR pc-printer-discovery.site0002.domain.org dnscmd /RecordAdd site0002.domain.org pc-mobility-print-host A 10.0.1.2 dnscmd /RecordAdd site0002.domain.org pc-printer-discovery NS pc-mobility-print-host.site0002.domain.org ::Site 3, where the Mobility Print server (10.0.1.3) will serve clients with a DNS Search Suffix of "site0003.domain.org" dnscmd /RecordAdd site0003.domain.org b._dns-sd._udp PTR pc-printer-discovery.site0003.domain.org dnscmd /RecordAdd site0003.domain.org lb._dns-sd._udp PTR pc-printer-discovery.site0003.domain.org dnscmd /RecordAdd site0003.domain.org pc-mobility-print-host A 10.0.1.3 dnscmd /RecordAdd site0003.domain.org pc-printer-discovery NS pc-mobility-print-host.site0003.domain.org ``` -------------------------------- ### Configure listen ports in pc-mobility-print.conf Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/advanced-configuration/network-load-balancers Shows the default "Services" section in pc-mobility-print.conf and the modified version with additional Args to specify the listen ports (-httpPort=80, -httpsPort=443). Use the modified version when the Mobility Print server's listen ports need to be changed, such as with a non-proxying (forwarding) network / TCP / L4 load balancer. After saving and restarting the Mobility service, the /setup pages will use the new port. ```json "Services": [ { "Path": "v*/mobility-print", "Args": ["-dataDir=${ServiceRoot}/data", "-pclog.dev", "-features=\"fullIPPLogging\""], "GracefulShutdownTimeoutSecs": 10, "RestartDelaySecs": 5, "MaxCrashCount": 10 } ], ``` ```json "Services": [ { "Path": "v*/mobility-print", "Args": ["-dataDir=${ServiceRoot}/data", "-pclog.dev", "-features=\"fullIPPLogging\"", "-httpPort=80", "-httpsPort=443"], "GracefulShutdownTimeoutSecs": 10, "RestartDelaySecs": 5, "MaxCrashCount": 10 } ], ``` -------------------------------- ### BIND zone file with Mobility Print records Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns Complete zone file with the required Mobility Print records added. Replace print-server-host and XXX.XXX.XXX.XXX with your values. Delete the last three lines if your server already has a host name assigned. ```bind $TTL 604800 @ IN SOA localhost. root.localhost. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ;---------------- Mobility Print records -------------- b._dns-sd._udp IN PTR pc-printer-discovery lb._dns-sd._udp IN PTR pc-printer-discovery pc-printer-discovery IN NS print-server-host print-server-host IN A XXX.XXX.XXX.XXX ;--------------- End of Mobility Print records --------- @ IN NS localhost. ; delete this line @ IN A 127.0.0.1 ; delete this line @ IN AAAA ::1 ; delete this line ``` -------------------------------- ### Convert .p12/.pfx certificate to tls.pem and tls.cer with OpenSSL Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/advanced-configuration/implement-a-trusted-ssl-certificate-for-the-mobility-print-administrator-interface Use these OpenSSL commands to convert a .p12/.pfx certificate file into the required tls.pem and tls.cer files. First extract the private key, then remove its passphrase, and finally extract the certificate. The resulting files are used to configure the Mobility Print Server. ```bash openssl pkcs12 -in certificate.pfx -nocerts -out priv.pem ``` ```bash openssl rsa -in priv.pem -out tls.pem ``` ```bash openssl pkcs12 -in certificate.pfx -nokeys -out tls.cer ``` -------------------------------- ### Check mDNS discovery service with dns-sd -B _banksias._tcp Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/discovery-mdns Run in macOS Terminal to check for the Mobility Print discovery service. Should return the instance name pc-printer-discovery-[mobility print server name]. Useful when Chrome/Windows/Android devices have trouble finding printers. ```bash dns-sd -B _banksias._tcp ``` -------------------------------- ### Configure TLS 1.2 and cipher suites in tls.conf.toml Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/advanced-configuration/server-custom-security-settings Configuration snippet for the `tls.conf.toml` file to enable TLS 1.2 and specify the cipher suites for inbound connections. Uncomment the `MinVersion` and `CipherSuites` lines as indicated. The `CipherSuites` list must be comma-separated and includes the ECDHE ciphers required for forward secrecy. ```toml # Valid TLS versions: # VersionTLS10 # VersionTLS11 # VersionTLS12 # VersionTLS13 # MinVersion = "VersionTLS12" # <= This Line # # # CipherSuites is the list of enabled cipher suites used for inbound connections by the server. # It requires a comma separated list like in this example below: # CipherSuites = [ # <= This Line "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", # <= This Line "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", # <= This Line "TLS_RSA_WITH_AES_128_GCM_SHA256", "TLS_RSA_WITH_AES_256_GCM_SHA384" # <= This Line ] # <= This Line ``` -------------------------------- ### Set PC_PRINTER_CAPS_DISCOVERY to IPP Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/troubleshooting-large-scale-import-of-printers-into-papercut-mobility-print-servers-on-mac-or-linux-hosts Add the environment variable to the service override file to switch printer capability discovery to IPP. ```ini [Service] Environment="PC_PRINTER_CAPS_DISCOVERY=IPP" ``` -------------------------------- ### PTR records for /etc/bind/zones/db.0.10.160.10 Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns Add these PTR records to /etc/bind/zones/db.0.10.160.10 for the subnet 10.160.10.0/22. The records enable DNS-based discovery for the b and lb service instances. ```text b.\_dns-sd.\_udp IN PTR 0.10.160.10.pc-printer-discovery. lb.\_dns-sd.\_udp IN PTR 0.10.160.10.pc-printer-discovery. ``` -------------------------------- ### CUPS error output: lpr: Not allowed to print Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/missing-print-jobs Example error output from CUPS when a print job fails on macOS. The message 'stderr=Failed to print, error The command returned with error, lpr: Not allowed to print.' indicates a CUPS permission issue. Users have resolved this by clearing the 'Allowed Users' list within CUPS. ```plaintext stderr=Failed to print, error The command returned with error, lpr: Not allowed to print. ``` -------------------------------- ### Test Browse record with nslookup Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/discovery-dns Use this nslookup command to query the Browse record for the discovery domain. The OK output shows the expected response, while the Error output indicates the record is missing. ```bash C:\>nslookup -query=ptr b._dns-sd._udp.myorg.com ``` ```text Server: ns1.myorg.com Address: 10.100.64.100 Non-authoritative answer: b._dns-sd._udp.myorg.com name = pc-printer-discovery.myorg.com. ``` ```text Server: ns1.myorg.com Address: 10.100.64.100 *** ns1.myorg.com can't find b._dns-sd._udp.myorg.com: Non-existent domain ``` -------------------------------- ### PTR records for /etc/bind/zones/db.0.8.160.10 Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns Add these PTR records to /etc/bind/zones/db.0.8.160.10 for the subnet 10.160.8.0/22. The records enable DNS-based discovery for the b and lb service instances. ```text b.\_dns-sd.\_udp IN PTR 0.8.160.10.pc-printer-discovery. lb.\_dns-sd.\_udp IN PTR 0.8.160.10.pc-printer-discovery. ``` -------------------------------- ### Test Legacy Browse record with nslookup Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/discovery-dns Use this nslookup command to query the Legacy Browse record for the discovery domain. The OK output shows the expected response, while the Error output indicates the record is missing. ```bash C:\>nslookup -query=ptr lb._dns-sd._udp.myorg.com ``` ```text Server: ns1.myorg.com Address: 10.100.64.100 Non-authoritative answer: lb._dns-sd._udp.myorg.com name = pc-printer-discovery.myorg.com. ``` ```text Server: ns1.myorg.com Address: 10.100.64.100 *** ns1.myorg.com can't find lb._dns-sd._udp.myorg.com: Non-existent domain ``` -------------------------------- ### BIND DNS records for Mobility Print discovery Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns Add these records to your BIND zone file to publish Mobility Print printers across your network. Replace print-server-host with your chosen server name and XXX.XXX.XXX.XXX with your Mobility Print server's IP. If your server already has a host name assigned, you can skip the last line and put the host name in the third line. ```dns ;---------------- Mobility Print records -------------- b._dns-sd._udp IN PTR pc-printer-discovery lb._dns-sd._udp IN PTR pc-printer-discovery pc-printer-discovery IN NS print-server-host print-server-host IN A XXX.XXX.XXX.XXX ;--------------- End of Mobility Print records --------- ``` -------------------------------- ### Test A record with ping Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/discovery-dns Use to verify the A record for the Mobility Print server hostname. The command pings mobility.myorg.com. The OK output shows successful replies; the first error output indicates the hostname cannot be resolved, and the second error output shows timeouts with 100% loss. ```text C:\\>ping mobility.myorg.com ``` ```text Pinging mobility.myorg.com\[10.100.64.35\] with 32 bytes of data: Reply from 10.100.64.35: bytes=32 time=1ms TTL=127 Reply from 10.100.64.35: bytes=32 time=1ms TTL=127 Reply from 10.100.64.35: bytes=32 time=1ms TTL=127 Reply from 10.100.64.35: bytes=32 time=4ms TTL=127 Ping statistics for 10.100.64.128: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 1ms, Maximum = 4ms, Average = 1ms ``` ```text Ping request could not find host mob1ility.myorg.com. Please check the name and try again. ``` ```text Pinging mobility.myorg.com\[10.100.64.35\] with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out. Ping statistics for 10.100.64.128: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss), ``` -------------------------------- ### BIND forward zone for pc-printer-discovery Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns Add this zone to your named.conf.default-zones file (or equivalent). Replace 10.10.31.22 with your Mobility Print server's IP. ```bind zone "pc-printer-discovery" { type forward; forwarders Unknown macro: {10.10.31.22;} ;` }; ``` -------------------------------- ### Set MaxResponseRecords to 1 in dns.conf.toml Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/discovery-mdns Configure the Mobility Print mDNS advertisement to send one printer per packet by setting MaxResponseRecords to 1. Place this in the dns.conf.toml file under PaperCut Mobility Print/data/config. Restart the Mobility Print server after making the change. ```toml [Mdns] MaxMTU = 0 Compress = false AnnouncementTimer = "0s" MaxResponseRecords = 1 ``` -------------------------------- ### Multiple servers known host configuration Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-known-host Required JSON configuration for the Mobility Print Chrome extension when deploying to multiple Mobility Print servers. List each known host value in the array. Ensure all formatting and parentheses are included exactly as shown. ```json { "MobilityPrintServerHosts": { "Value": ["MobServerIP 1", "MobServerIP 2", "MobServerIP 3"] } } ``` -------------------------------- ### Test IPPS pointer records with nslookup Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/discovery-dns Use this nslookup command to query the IPPS pointer record for the discovery domain. The OK output shows the expected response with multiple printer names, while the Error output indicates the record is missing. ```bash C:\>nslookup -query=ptr _ipps._tcp.pc-printer-discovery.myorg.com. ``` ```text Server: ns1.myorg.com Address: 10.100.64.100 Non-authoritative answer: _ipps._tcp.pc-printer-discovery.myorg.com name = reception._ipps._tcp.pc-printer-discovery.myorg.com _ipps._tcp.pc-printer-discovery.myorg.com name = north-building._ipps._tcp.pc-printer-discovery.myorg.com _ipps._tcp.pc-printer-discovery.myorg.com name = south-buiding._ipps._tcp.pc-printer-discovery.myorg.com ``` ```text Server: ns1.myorg.com Address: 10.100.64.100 *** ns1.myorg.com can't find _ipps._tcp.pc-printer-discovery.myorg.com: Non-existent domain ``` -------------------------------- ### DNSSEC configuration for named.conf.options Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns Add this DNSSEC configuration to your named.conf.options (or equivalent) to allow insecure DNS records for the pc-printer-discovery service. The trailing backtick in the first line is present in the source. ```text dnssec-enable yes` dnssec-validation yes; dnssec-must-be-secure pc-printer-discovery no; ``` -------------------------------- ### Restart BIND service Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns Restart the named daemon after the zone file is successfully validated. ```bash sudo service bind9 restart ``` -------------------------------- ### Test NS record with nslookup Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/discovery-dns Use to verify the NS record for the Mobility Print discovery domain. The command queries the NS record for pc-printer-discovery.myorg.com. The OK output shows the nameserver and its address; the error output indicates the record is missing. ```text C:\>nslookup -query=ns pc-printer-discovery.myorg.com ``` ```text Server: ns1.myorg.com Address: 10.100.64.100 Non-authoritative answer: pc-printer-discovery.myorg.com nameserver = mobility.myorg.com mobility.myorg.com internet address = 10.100.64.35 ``` ```text Server: ns1.myorg.com Address: 10.100.64.100 *** ns1.myorg.com can't find pc-printer-discovery.myorg.com: Non-existent domain ``` -------------------------------- ### Test IPPS pointer records with nslookup Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/discovery-dns Use to verify the IPPS pointer records on the Mobility Print server. The command queries the PTR record for _ipps._tcp.pc-printer-discovery.myorg.com against the server at 10.100.64.35. The OK output lists the expected service names; the error output indicates the record is missing. ```text C:\>nslookup -query=ptr _ipps._tcp.pc-printer-discovery.myorg.com. 10.100.64.35 ``` ```text Server: UnKnown Address: 10.100.64.35 Non-authoritative answer: _ipps._tcp.pc-printer-discovery.myorg.com name = reception._ipps._tcp.pc-printer-discovery.myorg.com _ipps._tcp.pc-printer-discovery.myorg.com name = north-building._ipps._tcp.pc-printer-discovery.myorg.com _ipps._tcp.pc-printer-discovery.myorg.com name = south-buiding._ipps._tcp.pc-printer-discovery.myorg.com ``` ```text Server: UnKnown Address: 10.100.64.35 *** UnKnown can't find b._dns-sd._udp.myorg.com: Non-existent domain ``` -------------------------------- ### JSON with Known host Discovery and Cloud Print invite links Source: https://www.papercut.com/help/manuals/mobility-print/setting-up-cloud-print-for-mobility-print/setting-up-cloud-print-on-clients/configure-chrome-app-in-gsuite Use this JSON object when Known host Discovery is enabled. It includes both the MobilityPrintServerHosts and CloudPrintInviteLinks fields at the top level, allowing you to add the server's IP address or hostname details. ```json { "MobilityPrintServerHosts": { "Value":[ ""] }, "CloudPrintInviteLinks": { "Value":[ ""] } } ``` -------------------------------- ### Single server known host configuration Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-known-host Required JSON configuration for the Mobility Print Chrome extension when deploying to a single Mobility Print server. Replace "MobServerIP" with the known host address of your server. Ensure all formatting and parentheses are included exactly as shown. ```json { "MobilityPrintServerHosts": { "Value": ["MobServerIP"] } } ``` -------------------------------- ### Check port 53 usage with netstat -abn Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/discovery-dns Run this command in an elevated command prompt on a Windows Mobility Print server to list applications listening on each port. Ensure no other applications are using ports 53 and 5353, as conflicts can prevent Mobility Print from responding to queries. ```bash netstat -abn ``` -------------------------------- ### Edit Mobility Print service with systemctl Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/troubleshooting-large-scale-import-of-printers-into-papercut-mobility-print-servers-on-mac-or-linux-hosts Open the systemd override editor for the pc-mobility-print service to modify its configuration. ```bash sudo systemctl edit pc-mobility-print ``` -------------------------------- ### Zone definition for 10.160.10.0/22 Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/discover-printers-dns Add this zone definition to the zone file for the subnet 10.160.10.0/22. The source shows an unresolved macro placeholder for the zone body; copy the visible text exactly. ```text zone "0.10.160.10.in-addr.arpa" Unknown macro: { type master; file "/etc/bind/zones/db.0.10.160.10"; } ``` -------------------------------- ### Check mDNS broadcasts with dns-sd -B _ipps._tcp Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/discovery-mdns Run in macOS Terminal to list printers published by Mobility Print via mDNS. Useful for verifying that broadcasts are working. ```bash dns-sd -B _ipps._tcp ``` -------------------------------- ### Mobility Print Chrome extension JSON configuration Source: https://www.papercut.com/help/manuals/mobility-print/setting-up-cloud-print-for-mobility-print/setting-up-cloud-print-on-clients/configure-chrome-app-in-gsuite JSON configuration for the Mobility Print Chrome extension. Use the Known host discovery method and specify the Mobility Print server hostname or IP address. The CloudPrintInviteLinks value should contain the Cloud Print invite link. ```json { "MobilityPrintServerHosts": { "Value":[ ""] }, "CloudPrintInviteLinks": { "Value":[ ""] } } ``` -------------------------------- ### Configure SubnetFilterRule in printer.conf.toml Source: https://www.papercut.com/help/manuals/mobility-print/set-up/configure/advanced-configuration/restrict-printer-access-per-subnet Configure a subnet filter rule in printer.conf.toml. Replace the placeholder printer name and subnet addresses with actual values, and remove the chevron characters. Only one printer name or subnet per rule; use wildcards for multiple printers. ```toml [[SubnetFilterRule]] PrinterName="" Subnets=["", ""] ``` -------------------------------- ### Mobility Print client timeout log for iot-core Source: https://www.papercut.com/help/manuals/mobility-print/troubleshooting/troubleshooting-mobility-print-cloud-print Log output from the Mobility Print client showing a timeout when connecting to the Cloud Print registration address. The broker address is tls://mqtt.notifications.cloud.papercut.com:8883. Check that ports 443 and 8833 are open, and verify network card configuration if the server has multiple NICs. ```plaintext `mobility-print.exe: STDOUT|DEV: Connecting... [ broker=tls:*//`mqtt.notifications.cloud.papercut.com`:8883 ]* ... mobility-print.exe: STDOUT|DEV: Timed out connecting to iot-core. [ broker=tls:*//mqtt.notifications.cloud.papercut.com:8883 ]* ```