A printer paused for yesterday's maintenance is still refusing jobs this morning, and cupsenable is the fix once you have the right destination. This walks through resuming a stopped CUPS printer or class, releasing jobs that were deliberately held, and verifying the result before you move on. Allow about ten minutes. The examples use cupsenable from Ubuntu's cups-client package, version 2.4.7-1.2ubuntu7.14.
You need a shell, a destination name, and permission to administer the CUPS server. This changes printer scheduling state, nothing more: it does not power a printer on, repair a network path, or make a missing device appear. If the CUPS scheduler itself is stopped, fix that service through your normal change process first.
Ask the CUPS server which printers and classes it knows about:
$ lpstat -p -d
printer office_laser is idle. enabled since Mon 22 Sep 2026 09:10:00 BST
system default destination: office_laser
Use the name after printer, or the class name your local lpstat shows. A class is a group of printers, so enabling a class affects that shared destination rather than one device. If you only want the destination names, lpstat -a is quicker.
Checkpoint: write the exact name down before you go further. CUPS destination names ignore case but cannot contain a space, tab, slash or hash character. Do not swap in a guessed default for a name you have not actually verified.
Confirm the CUPS scheduler is running before you try to change printer state:
$ lpstat -r
scheduler is running
If it says the scheduler is not running, stop here. cupsenable talks to the CUPS server, so no amount of retrying enables a printer while that server is down. Starting or restarting the CUPS service needs elevated privileges and can affect every printer on the host, so use your distribution's service procedure and an approved window.
Do not reach for sudo automatically. Some CUPS configurations ask for a password when a change needs one; others let an ordinary account do it. If your account is refused, use the site's approved administrator account rather than typing a password into a script.
Swap in the destination you confirmed in step 1:
$ cupsenable office_laser
A successful command usually prints nothing. Verify the state instead:
$ lpstat -p office_laser
printer office_laser is idle. enabled since Mon 22 Sep 2026 09:18:00 BST
The word to look for is enabled. A printer can be enabled while idle, mid-job, paused by its own hardware, unreachable over the network, or stuck on a separate error. Enabling only lets CUPS send it work; it does not promise the next job will print.
Add --release when the printer was disabled through the matching cupsdisable --hold workflow:
$ cupsenable --release office_laser
$ lpstat -o office_laser
office_laser-42 alice 1024 Mon 22 Sep 2026 09:20:00 BST
--release releases pending jobs for printing, and it is not needed for every ordinary enable. If nobody deliberately held anything, run plain cupsenable office_laser and check the queue before releasing.
Checkpoint: confirm the queue holds the jobs you expect. An empty result from lpstat -o office_laser is normal, not a fault, and a class should not be released until you know which member printers can actually take its jobs.
The command takes one or more destination names, so list each one out loud enough for a review to see exactly what will change:
$ cupsenable office_laser reception_colour
Do not use a shell wildcard in place of destination names. Shell expansion matches filesystem paths, not CUPS destinations, and can hand the command arguments you never intended. If the list comes from another command's output, look at it before running the state change.
Enabling is easy to reverse, but disabling is itself a service-disrupting action. If you enabled the wrong printer and need to stop new jobs while leaving the current one alone:
$ cupsdisable --hold office_laser
--hold holds the remaining jobs, which matters before maintenance because the job in progress can still finish. Once the review or maintenance is done, go back to step 3 and run cupsenable --release office_laser.
Warning: do not reach for -c out of habit. The shared cupsdisable/cupsenable manpage documents it as cancelling every job on the named destination, which is permanent and cannot be undone by re-enabling the printer.
If CUPS reports an unknown destination, compare the spelling against lpstat -p and check you are talking to the right server. Select a remote one with -h:
$ cupsenable -h print-server.example:631 office_laser
Add -E when the connection must be encrypted, and -U ACCOUNT_NAME when the server needs a particular username. Both pick connection and authentication behaviour; neither grants permission by itself. Treat a credential prompt as a security boundary and follow the server's normal access procedure.
If the command succeeds but jobs stay queued, check the queue and the printer's reported state:
$ lpstat -p office_laser
$ lpstat -o office_laser
Look for a separate printer fault, a stopped scheduler, a held job, or a server-side policy, rather than enabling the destination over and over as a substitute for investigating. The local manpage documents the state change this command makes, not the health of the printer or its network path.