How to Inspect Print Spooler Services and Active Print Jobs on Android Using ADB dumpsys print

Modern mobile business workflows—such as retail Point of Sale (POS) receipt generation, field logistics label creation, and enterprise PDF document generation—depend on the Android printing framework. When an application dispatches a document using PrintManager, the system delegates layout formatting, PDF rendering, printer discovery, and network transmission to the system Print Spooler process. If a print job fails to reach an IP printer, hangs in the spooling state, or triggers an unexpected PrintDocumentAdapter layout crash, standard application logs rarely reveal the root cause. Using the Android Debug Bridge (ADB), the internal dumpsys print command exposes live print spooler states, active print jobs, registered print services, and printer discovery sessions directly from the Android runtime.

Understanding the Android Print Framework Architecture

The Android print subsystem coordinates printing between three core architectural components:

  • PrintManager: The framework entry point accessed by applications. It manages the print lifecycle, initiates system print dialogues, and coordinates pagination via custom PrintDocumentAdapter callbacks.
  • Print Spooler (com.android.printspooler): A dedicated system application that provides the visual print preview interface, accepts rendered PDF streams, formats pages according to paper dimensions, and holds pending print jobs in local queues.
  • Print Services: Background system or third-party plug-in services implementing android.printservice.PrintService (such as the default Mopria Print Service, HP Print Service Plugin, or enterprise network drivers). These services discover network printers and convert spool files into printer-ready Page Description Languages (PDL) such as PostScript, PCLm, or ESC/POS.

Connecting via ADB and Dumping Print Subsystem State

To inspect the status of the print framework, connect your Android device with USB debugging enabled and execute the diagnostic dump:

adb shell dumpsys print

The output reports the state of PrintManagerService, registered print services, active user sessions, and spooler states. To save the output for systematic analysis:

adb shell dumpsys print > print_service_dump.txt

Auditing Active and Available Print Services

Before an application can transmit a document to a physical or virtual printer, at least one print service must be installed and active. To audit which print service plugins are installed and enabled on the device:

adb shell dumpsys print | grep -A 20 "Installed print services:"

Each entry identifies:

  • Service Component: The service identifier (e.g. org.mopria.printplugin/.MopriaPrintService).
  • Enabled Status: Whether the service is toggled on in system settings.
  • Advanced Options Activity: Custom printer configuration components provided by the manufacturer.

To query disabled print services that may have been accidentally turned off by users:

adb shell dumpsys print | grep -A 10 "Disabled print services:"

Inspecting Pending and In-Flight Print Jobs

When an application sends a document to the spooler, a structured print job record is generated. To inspect the status of active or stuck print jobs in real time:

adb shell dumpsys print | grep -A 25 "Print jobs:"

A typical print job record reveals:

PrintJobInfo{
  id: 1042,
  label: "Invoice_2026.pdf",
  state: STATE_QUEUED,
  appId: 10185,
  printer: PrinterId{service=org.mopria.printplugin, id=ipp://192.168.1.50},
  attributes: PrintAttributes{mediaSize=ISO_A4, colorMode=COLOR, resolution=300x300},
  copies: 1
}

Critical fields to evaluate during troubleshooting:

  • state: Indicates current execution. Common values include STATE_CREATED, STATE_QUEUED, STATE_STARTED, STATE_BLOCKED, STATE_COMPLETED, STATE_FAILED, or STATE_CANCELED. If a job is persistently STATE_BLOCKED, the target printer is out of paper, offline, or experiencing network timeout.
  • attributes: Confirms that paper dimensions (e.g. ISO_A4 vs NA_LETTER) and DPI resolutions match physical printer capabilities.
  • appId: Identifies the Linux UID of the calling application that submitted the job.

Auditing Printer Discovery Sessions and Active Listeners

During the print preview interaction, the system opens a PrinterDiscoverySession to broadcast mDNS / DNS-SD or SNMP packets across local Wi-Fi. If no printers appear in the dialogue:

adb shell dumpsys print | grep -A 15 "Discovery sessions:"

Check whether the active discovery session is properly bound to your network interface. If the session reports isDiscoveryStarted=false or lists zero discovered printers, verify that local Wi-Fi multicast filtering (mDNS snooping) on your router is not dropping broadcast packets.

Troubleshooting Stuck Print Jobs and Spooler Crashes

If a corrupted PDF stream causes the Android Print Spooler to hang or crash repeatedly:

  1. Inspect real-time logcat logs filtered by the Print Spooler tag:
    adb logcat -v time -s PrintSpooler:V PrintManager:I Mopria:V
  2. If the spooler remains frozen with orphaned jobs, force-stop the Print Spooler process:
    adb shell am force-stop com.android.printspooler
  3. Clear transient spooler cache files to purge corrupted print streams:
    adb shell pm clear com.android.printspooler

Utilising dumpsys print empowers developers to validate custom PrintDocumentAdapter implementations, diagnose network printer discovery failures, and maintain reliable mobile printing pipelines across Android devices.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.