In the past we would set up a printer using windows native printer sharing and print to it from CUPS as a smb type share. This caused several problems. Different windows versions have different types of encryption. Each one also has its own settings whether to require authentication or not. Starting the non-DOS based windows (NT4, 2000 and up) windows now include unix printing services for windows. The only DOS based windows that are not supported are 95, 98 and ME. First make sure OpenVPN is already installed on the windows side. This allows us to set up some kind of static IP on the computer even if they are on DHCP. '''Windows LPD Server: Enable Windows support for Unix printing'''. xp or vista: . Open Control Panel --> Add or remove programs --> Add/remove windows components. Scroll down to "Other Network File & Print Services". Highlight that and select "details". Put a check mark in "Print Services for Unix" and OK/Next or whatever. Now that Unix services are installed, you activate them as a service: Open Control Panel --> Administrative Tools --> Services (Local) and find TCP/IP print server. It should be set to "Status= started" and "Start type=Automatic". To change settings you double Lclick the line "TCP/IP print server" and adjust appropriately. Windows 7 and 8: . Go to Control Panel --> Programs and Features --> Turn Windows features on or off --> Print and Document Services --> LPD Print service (enable it). Now check that the service is running: go to Control Panel --> Administrative tools --> LPD Service. It should be set to "Started" and "Automatic". Next you go into the printer settings and add the printer. Just use the generic/text only driver. Make note of what you name the printer as you will need it when you set up CUPS. Try not to use any spaces to make things easier. You do '''not''' need to share the printer if you use this method. In fact if it is only for Control to print, you should not share the printer. On the Linux side, just bring up system-config-printer and set it up as a normal LPD (unix) printer. The only fields you need to fill up are the IP address or hostname, and the printer name. === Note === It is ok to have spaces on the printer name. BUT, when you use system-config-printer (centos/fedora) to COPY the printer, characters after the space would disappear. Just make a note of this so you re enter the characters after copying. If you have a firewall, you have to allow port 515 in. In the windows firewall, just add an exception. For other types of firewall, you are on your own. === Known problem === Sometimes printing to the printer get "stuck" - job is printer queue but can not be deleted. Go to the Services and restart "Print Spooler" don't forget to restart LPD services as well. In some cases solution above would not work. C:\Windows\System32\spool\PRINTERS . And delete all files in this directory. (If you know what you are doing, you can just delete the ones you want). and then restart "print Spooler" Sometimes it takes a while for print job to print. it stays in the windows spooler for a really long time then eventually prints. For some reason some telstra routers cause this problem. Theory is that it may not provide DNS for 192.168 IP's that it assigned and therefore waits for DNS timeout for every print job. If you get into a situation where windows constantly complains (for LPD) that the printer name does not exist, try one of the following in order of severity: 1. delete printer, restart windows, recreate printer, restart windows 1. uninstall any 3rd party firewall 1. run sfc /scannow as administrator 1. remove windows update KB3022345 Last resort is to reinstall windows.