Printing on Windows is sometimes troublesome. When it is not working, you won’t have any chance to fix it yourself, debug or configure it more in-depth. This guide will show you a workaround on how to use the Linux CUPS printing client and server on Windows 10 using WSL2. The CUPS printer will be then added as a native Windows printer.
WSL2 is a subsystem on Windows to run Linux systems in an integrated container, like Docker. We’re going to install the default Ubuntu version using Windows Powershell.
Installing WSL2 Ubuntu and CUPS
Open Powershell as administrator and insert following command
wsl --install -d ubuntu
After that, reboot Windows, run the Ubuntu app from the start menu and configure a username and password for your new Ubuntu instance. Run following commands to setup CUPS
sudo apt update sudo apt install cups sudo service cups start
We create a script which will run the cups service at startup
#!/bin/sh service cups start
sudo chmod +x /etc/init-wsl
The following commands will configure our printer on CUPS. In this case we are adding a remote IPP printer which won’t require any additional drivers
sudo lpadmin -p dell_1250c -m everywhere -o printer-is-shared=true -E -v http://192.168.178.2:631/printers/Dell_1250c sudo lpoptions -d dell_1250c
dell_1250cis the name we’re going to define for the printer
everywhereis the printer driver, in this case a generic one for IPP printers
- The URL is the IPP printer URL
lpoptionsdefines our printer as the default one
Note that it is also possible to add a physical printer attached via USB to your WSL2 Linux. An interesting guide on this can be found here.
Now we open the Windows task scheduler and create a new startup task for Windows to run the WSL2 Ubuntu every time the computer starts. A more detailed guide on this can be found here but in short it is
- Left pane click on
Task Scheduler Library
- On the right side right click on free space and choose
- General: Give the task the name
- General: Choose
Run whether user is logged on or notand
Run with highest privileges
- General: Choose
Configure for: Windows 10
- In Trigger tab click on
New > Begin the task: At startup
- In Action tab click on
New > Action: Start a program
- Program/script: wsl
- Arguments: -d ubuntu -u root /etc/init-wsl
- In Conditions tab disable all AC power related options
Adding printer in Windows
To add the new printer go to the system settings and navigate to
Devices > Printers & scanners. Click on
Add new and wait until the link “The printer that i want isn’t listed” appears. Click on this link.
In the new window click on
Add a printer using an IP address or hostname. Add the URL of your local CUPS server with the name of your printer, in this example
Print a test page and your local CUPS server should send the print job to the next destination. In case there’s any issue you can see queued and finished print jobs in the CUPS interface at http://localhost:631.