Printing to a CUPS server from Android

My printer, a Brother HL-L2300D monochrome laser printer, doesn't support wireless printing. Instead, it's connected with USB to a Raspberry Pi running CUPS in a common area of our townhouse so my partner and I can use it wirelessly. You can find instructions to set up something similar yourself online, e.g. Printing at home from your Raspberry Pi.

Once I enabled sharing, all of our devices (mostly Linux and Apple devices) found the printer automatically except for my Android phone. I had to add the printer manually:

Adding the printer on Android

  1. In the Settings app on Android, navigate to Printing under Connected devices > Connection preferences.
  2. Select Default Print Service.
  3. In the menu in the top right, click Add printer, then select Add printer by IP address.
  4. Enter the printer URL from the CUPS web UI (described below).

Finding the printer URL

The hostname of the Raspberry Pi hosting the print server is homepi. Because I have a local DNS server, I can find the web UI for CUPS at http://homepi:631.

  1. Navigate to the CUPS web UI.
  2. Select Printers at the top.
  3. Find the printer under Queue Name and click on it. (If the printer isn't there, CUPS could be misconfigured.)
  4. Copy the URL without the http:// prefix. You can use this URL to add the printer on Android. In my case, including a local domain name (e.g. homepi.example.com) didn't work--only the bare hostname or IP address.

Suddenly I was able to print wirelessly from my phone!