Printers on Linux

Russell Bateman
January 2026
last update:


How to print from GVim, vim, etc.

In the Vim editor, press :, then type:

:!lp -d Brother_MFC_J1010DW "%"

...where:

  1. : got you the : prompt,
  2. ! got you a command-line shell,
  3. lp is the console command to print,
  4. -d Brother_MFC-J1010DW names the target printer, and
  5. "%" tells Vim to send the whole file; quotes ensure that, if there's spaces or other quotes in the filepath, they're conveyed accurately.

Listing printers...

To get a list of printers by name (to fulfill the requirements above), do this:

# lpstat -a
Brother_MFC_J1010DW accepting requests since Tue 24 Feb 2026 12:00:06 AM MST
Photosmart_5520_series_083C0C accepting requests since Tue 24 Feb 2026 12:00:06 AM MST

How to print from just about anywhere else...

Most applications have offer Print... and a print wizard from their File menu.


Brother MFC-J1010DW, mostly just set-up

Step-by-step. I bought this printer in January, 2026.

  1. Find network information, i.e.: know the wireless network, particularly, the third octet (of, say, 192.168.0.n) so that your printer will be on the same network as the rest of the nodes that want to use it. Also, know the password to the wireless access point you want to use to reach it.
  2. On the printer, press the Setting button (gear icon) to reach Network using the arrow keys. Press OK to select Network.
  3. Network set-up wizard, use the arrow keys to select WLAN (wifi) and press OK. If prompted, "Enable WLAN," select Yes.
  4. Select network by name, the printer will search for available wireless access points (you may have several and/or your neighbors have some). Press OK to choose the one you want to use (for which you have the password from step 1 above).
  5. Enter password, use the arrow keys, the screen display and/or the number pad. There are controls to shift into upper- and back to lowercase as well as to enter spaces and/or special characters. This is tedious and will make you regret you used a whole phrase, but there you are. Press OK to apply the password. The printer will attempt to establish a connection with the wireless access point using the password.
  6. Assuming the connection established...
  7. After the printer is connected to the LAN, likely your Linux, Macintosh or Windows computer will discover it in its own way, usually by trying to print something and being led to find this new printer. I did this on Linux and on Windows. For the latter, the process was a little hinky, but I got it. For the former, the printer showed up because of the Common UNIX Printing System (CUPS) and the printer was magically already there.
  8. At this point, you might need to install drivers for your operating system in order to use this printer's scanner or FAX features. I don't use them, especially not FAX, so you're on your own. Here is a good link: Please note that, while I downloaded all the Linux 64-bit Debian drivers, I never installed them because I found that the printer worked perfectly without going to the trouble.

Canon MX490, mostly just set-up

First, note that this printer was excellent and we used it from February 2019 until December 2025 at which time we could no longer print to it. There was no discernable breakage. We just could not reach it any longer. Though it showed up on the LAN, sending jobs to it was ignored.

Step-by-step. For this example, my printer is a Canon MX490.

  1. Click + Add button.
  2. Choose Network Printer → Find Network Printer → Internet Printing Protocol (ipp).
  3. In Enter device URI, choose example, ipp://cups-server/printer/printer-queue.
  4. Click Forward. (Will search for drivers.)
  5. In Choose Driver, click Select printer from database.
  6. Canon, click Forward.
  7. MX490, click Forward (should see "Canon MX490 series - CUPS+Gutenprint v5.3.4 [en] (recommended)" under Drivers. This is your driver. Click Forward.
  8. For Describe Printer, all should be filled in, but you type in your physical location, "Den"—this is mine.
  9. Click Apply.

You should see Canon-MX490 show up in your Printers - localhost alert (from the Printers icon in the panel.

Still broken, my activity...

root@tirion:/home/russ# systemctl status cups
 cups.service - CUPS Scheduler
     Loaded: loaded (/usr/lib/systemd/system/cups.service; enabled; preset: enabled)
     Active: active (running) since Thu 2026-01-08 00:00:00 MST; 17h ago
TriggeredBy:  cups.socket
              cups.path
       Docs: man:cupsd(8)
   Main PID: 2247397 (cupsd)
     Status: "Scheduler is running..."
      Tasks: 3 (limit: 38210)
     Memory: 58.6M (peak: 177.9M swap: 0B swap peak: 4.0K)
        CPU: 4.946s
     CGroup: /system.slice/cups.service
             ├─2247397 /usr/sbin/cupsd -l
             ├─2247543 /usr/lib/cups/notifier/dbus dbus://
             └─2247544 /usr/lib/cups/notifier/dbus dbus://

Jan 08 00:00:00 tirion systemd[1]: Starting cups.service - CUPS Scheduler...
Jan 08 00:00:00 tirion systemd[1]: Started cups.service - CUPS Scheduler.
Jan 08 16:51:39 tirion hpfax[2872494]: [2872494]: error: Failed to create /var/spool/cups/tmp/.hplip
root@tirion:/home/russ# ls -lad /var/spool/cups/
drwx--x--- 3 root lp 4096 Jan  8 17:38 /var/spool/cups/
root@tirion:/home/russ# ls -lad /var/spool/cups/tmp/
drwxrwx--T 3 root lp 4096 Jan  8 16:51 /var/spool/cups/tmp/
root@tirion:/home/russ# chmod g-rw /var/spool/cups/tmp/
root@tirion:/home/russ# ls -lad /var/spool/cups/tmp/
drwx--x--T 3 root lp 4096 Jan  8 16:51 /var/spool/cups/tmp/
root@tirion:/home/russ# systemctl restart cups
root@tirion:/home/russ# systemctl status cups
 cups.service - CUPS Scheduler
     Loaded: loaded (/usr/lib/systemd/system/cups.service; enabled; preset: enabled)
     Active: active (running) since Thu 2026-01-08 17:50:54 MST; 5s ago
TriggeredBy:  cups.socket
              cups.path
       Docs: man:cupsd(8)
   Main PID: 2900158 (cupsd)
     Status: "Scheduler is running..."
      Tasks: 3 (limit: 38210)
     Memory: 5.8M (peak: 6.4M)
        CPU: 34ms
     CGroup: /system.slice/cups.service
             ├─2900158 /usr/sbin/cupsd -l
             ├─2900247 /usr/lib/cups/notifier/dbus dbus://
             └─2900248 /usr/lib/cups/notifier/dbus dbus://

Jan 08 17:50:54 tirion systemd[1]: Starting cups.service - CUPS Scheduler...
Jan 08 17:50:54 tirion systemd[1]: Started cups.service - CUPS Scheduler.

List of unknown hosts by IPv4...

IP ping? notes
192.168.0.106 x _
192.168.0.111 y _
192.168.0.113 x _
192.168.0.115 x _
192.168.0.118 0 _
192.168.0.119 x _
192.168.0.120 x _
192.168.0.121 x _
192.168.0.125 y _
192.168.0.131 x _

Set-up menu hierarchy

  1. Set-up menu hierarchy
    • Wireless LAN setup
      • Easy setup
      • Manual setup
      • WPS (Push button method)
      • Other setup
        • Cableless setup
    • Device settings
      • LAN settings
        • Confirm LAN settings (WLAN setting list, LAN setting list, Print LAN details)
        • Set up LAN (Wireless LAN, Access point mode)
        • Change LAN (Switch between Wireless LAN/Access Point)
        • Other settings (TCP/IP settings, WSD settings, Bonjour settings, AirPrint settings)
      • Feed settings
      • Printer settings
        • Language selection
        • Reset setting
      • Output settings
        • Prevent abrasion
        • Extended copy amt.
        • Prevent double-feed
      • Maintenance
        • Cleaning
        • Deep cleaning
        • Nozzle check
        • Print head alignment
        • Ink cartridge settings
      • Language selection
    • Maintenance (Direct access to head cleaning/alignment)
    • Language selection
    • Reset setting (All settings, LAN settings, etc.) 
  2. Physical Navigation Controls
    • Setup Button: Enters the main menu.
    • Left/Right Arrows: Move through menu items.
    • OK Button: Selects or confirms a setting.
    • Back Button: Returns to the previous screen.
  3. Key Setup Functions
    • Wireless Setup: Located under Setup → Wireless LAN setup → Other setup → Cableless setup.
    • Print Network Info: Setup → Device settings → LAN settings → Confirm LAN settings → Print LAN details.
    • Change Connection Mode: Setup → Device settings → LAN settings → Change LAN.