CUPS Cloud Print

Found CUPS Cloud Print useful?


CUPS Cloud Print is a Google Cloud Print driver for UNIX-like operating systems ( Linux, Mac OS X , BSDs etc ). It allows any application which prints via CUPS to print to Google Cloud Print directly.


Assuming you have Print-Cloud-Ready printer, Google Cloud Print allows you to print to your printer without installing any printer specific drivers – aside from the obvious advantages of not having to install drivers for every printer you come into contact with, it allows you to use a proprietary printer on platforms you would not normally easily be able to use ( for example, printing from an ARM-based Raspberry Pi to a printer where the manufacturer only provides x86 proprietary drivers ).

Also, because Google Docs ( Google Drive ) presents itself as a printer to Cloud Print, it also means you can ‘print’ directly to Google Docs using CUPS Cloud Print ( some users have leveraged this functionality to scan to Google Docs ).

License and Downloading

CUPS Cloud Print is licensed under the GNU Public License version 3 or above, the source code is freely available as a Github repository.

20160521 Release – 21st May 2016

  • Fix: Now works on Mac OS X 10.11 ( El Capitan )
  • Change: Moved Mac OS X Install dir from /usr/local/share/cloudprint-cups to /Library/cloudprint-cups

20160502 Release – 2nd May 2016

  • New: Use CCD instead of ( now broken ) old legacy format
  • Fix: Add refresh tokens to launchd on Darwin package
  • Fix: Suggest installing texlive-lang-cjk in debian package
  • Fix: Delete /usr/share/cloudprint-cups/.cache on Gentoo ebuild uninstall
  • Change: Upgrade oauth2client to 1.5.2
  • Change: Write temp files to disk on Darwin if ps2pdf not present

20140814.3 Release – 31st May 2015

  • Fix: Now works on Mac OS X 10.10 ( Yosemite )
  • Change: Moved Mac OS X Install dir from /usr/local/share/cloudprint-cups to /usr/share/cloudprint-cups

20140814.2 Release – 13th December 2014

  • Fix: Upgrade script error no longer prevents Mac OS X installation
  • Fix: Strip control chars when sanitising text
  • Fix: Fixed printing from stdin, detect mimetypes from job types
  • Change: Upgraded oauth2client to v1.4.2
  • Change: Stop writing temp files to disk
  • Change: Stop writing base64 encoded files to disk
  • Change: Require 'which' and 'file' packages in rpm ( dummy 'which' package added for OpenSUSE )
  • Change: Require python-six for latest oauth2client version
  • Change: Prevent capabilities prefixed with 'cups', or other ones that could point to binaries being used to populate ppd with potentially arbitrary commands from GCP
  • Change: Dont write temp ppd files in script
  • Change: Backend now only accepts data from stdin, and refuses to read files passed in

20140814 Release – 14th August 2014

  • Fix: Issue #71 on Github, always send use_cdd=false param with every request Git logo

20140702 Release – 2nd July 2014

  • New: Split printer class into seperate Printer and PrinterManager classes Git logo
  • New: OS X package support Git logo
  • New: Added SELinux support to RPM packages Git logo
  • New: Added refresh token cron script Git logo
  • Fix: Use python interpreter when python2 interpreter not available. Git logo
  • Fix: Setup script shows printer names in multiple columns, instead of one column. Git logo
  • Fix: Now PEP8 compliant Git logo
  • Fix: Detect _lp as valid cups group in configure script Git logo
  • Change: Moved testing data and scripts into 'testing' subdirectory Git logo
  • Change: Changed protocol to gcp:// instead of cloudprint:// Git logo

20140308 Release – 8th March 2014

  • Fix: Use shorter URI format to workaround issue on older distros having a short max length on printer URIs Git logo

20140307 Release – 7th March 2014

  • Security: Only log access token to log file in debug mode Git logo
  • New: Support printers with same name in same account Git logo
  • New: Log now pipe delimited and contains timestamp Git logo
  • Fix: Set UseCIEColor when converting postscript file to pdf, fixes printing files generated by Adobe Reader Git logo
  • Fix: Set page name to Untitled when page printed with no name Git logo
  • Fix: Open oauth2 config file in read only mode if access denied to write, fixes running under Mac OS X Git logo
  • Fix: No longer run upgrade script on fresh install Git logo
  • Fix: Fix the log file permissions on creation or upgrade, only adjust owners and permissions if needed to change Git logo
  • Fix: Exclude groups that cant be correct for cups group when discovering CUPS group Git logo
  • Fix: Discover CUPS group by examining CUPS log file ownerships, then PPD directory if logs missing Git logo
  • Change: Sanitised the indentation of python files Git logo
  • Change: Removed upgrade message about location of files changing Git logo
  • Change: Moved common functions into utils class, allows better unit testing Git logo
  • Change: Centralised logging setup into utils script Git logo

20140210 Release – 10th February 2014

  • New: Show better error message if printer ppd not found Git logo
  • Fix: Use python logging facility instead of writing to log files directly, fixes No handlers could be found for logger error Git logo
  • Fix: Upgrade script now faster with multiple printers, now only gets list of PPDs once and filters for each printer Git logo
  • Fix: Show better error if renewing OAUTH2 token fails Git logo
  • Fix: Explicitely define dirs in rpm files list, ensures will be removed correctly on uninstall Git logo
  • Fix: Deb package now deletes old pyc files on uninstall/upgrade Git logo
  • Fix: Config file permissions now fixed to allow updating of access token when printing Git logo
  • Fix: Compile python code on rpm install to ensure old files are removed on uninstall Git logo
  • Fix: Compile python code on Gentoo install to ensure old files are removed on uninstall Git logo
  • Fix: Compile python code on arch install to ensure old files are removed on uninstall Git logo
  • Change: Merged script into backend script Git logo
  • Change: Error out immediately if lpadmin command not in path on upgrade Git logo

20140112 Release – 12th January 2014

  • NEW: When invalid OAuth2 code used, show the error message Git logo
  • NEW: Can now delete associated printers when deleting an account Git logo
  • NEW: Added test script for post-packaging testing Git logo
  • CHANGE: Moved files from /usr/lib/ to /usr/share Git logo

20131013 Release – 13th October 2013

  • CHANGE: Use imagemagick for rotating PDFs instead of pdfjam due to issues with CentOS and Fedora Git logo

20131009 Release – 8th October 2013

  • FIX: Override default for when applications assume wrong default values ( eg duplex ) Git logo
  • FIX: No longer error on adding printers with duplicate capability names, Git logo
  • FIX: Landscape printing should now work correctly on all printers Git logo
  • FIX: Ignore duplicate parameters Git logo
  • FIX: Detect duplex option Git logo
  • FIX: Adding printers with prefix no longer errors Git logo
  • CHANGE: pdfjam dependency now required Git logo
  • CHANGE: List cloud printers script now shows display name instead of printer name Git logo

20130914 Release – 14th September 2013

  • NEW: Use display name if available for generating values for ppd Git logo
  • NEW: Added version param to scripts Git logo
  • NEW: Added test cases and list of capabilities for testing internal name function Git logo
  • FIX: Prevent duplicate options and capabilities being generated Git logo
  • FIX: Post name of capability instead of internal hash, should fix issues with capabilities failing to work correctly Git logo
  • FIX: Fixed displaying of errors from Google side ( eg when print proxy is down ) Git logo
  • FIX: Allow overriding print params per print job Git logo
  • CHANGE: Removed gcp_ prefix for capabilities ( unless conflicts with reserved words ) Git logo

20130718 Release – 18th July 2013

  • NEW: PDF now supplied to CCP via CUPS, increases printing speed. Git logo
  • NEW: Default to A4 paper size in countries that use A4 paper. Git logo
  • FIX: Use utf8 output for ppd, use internal option and capability hashes for names to prevent errors - should fix a lot of errors related to non-ASCII chars in capabilities. Git logo
  • FIX: Removed redundant ppdc dependencies. Git logo
  • FIX: Removed old PPD files, as no longer used. Git logo
  • FIX: Optimise PDF generated for printing. Git logo
  • FIX: Only ask once per account for prefix. Git logo
  • FIX: Fixed final warnings in PPD. Git logo
  • FIX: Custom printer name should now work. Git logo
  • FIX: CUPS Backend etc now use source install by default. Git logo
  • FIX: Add translations into cups ppd. Git logo

20130608 Release – 8th June 2013

  • FIX: Parameters with long names should no longer error Git logo

20130604 Release – 3rd June 2013

  • FIX: Fixed syntax error on adding individual printers. Git logo

20130603 Release – 3rd June 2013

  • NEW: Added script to assist in debugging issues Git logo
  • FIX: Use option name instead of displayname if displayname is missing Git logo
  • CHANGE: On answering no for adding all printers, ask to add individual printers Git logo
  • CHANGE: Ask whether or not to use prefix rather than assuming user knows to enter prefix directly Git logo

20130526 Release – 26th May 2013

  • FIX: Strip out colon chars from capability and options in ppd. Git logo

20130519 Release – 19th May 2013

  • FIX: No longer error on capabilities with missing display name. Git logo

20130510 Release – 10th May 2013

  • Fix: Use lp group instead of trying to discover group name dynamically Git logo
  • Fix: Only update config file permissions when config options changed, not when tokens refreshed. Git logo
  • Fix: Deb package installs cloudprint files with correct permissions. Git logo

20130504 Release – 4th May 2013

  • New: Script to delete user accounts ( ) Git logo
  • New: Capabilities for printer supplied by Google Cloud Print ( eg Colour, Print tray, etc ) now appear as options in dialogs. Git logo
  • Fix: RPM package can now be built as a non-root user. Git logo
  • Change: PPD file now generated dynamically Git logo

20130203 Release – 3rd February 2013

  • Priority Fix: Ensure printing is always sent over HTTPS, fixes an issue where Google has began returning errors on HTTP API requests Git logo
  • New: Extra debug data now logged if JSON decoding fails Git logo
  • New: Added gentoo/freebsd support Git logo
  • Change: Detect CUPS user group automatically rather than assume group name is always lp Git logo

20130101 Release – 1st January 2013

  • New: Python 2.6 now properly supported Git logo
  • New: Began adding py.test unit tests Git logo

20121208 Release – 8th December 2012

  • New: Added FedEx office support Git logo

20121202 Release – 2nd December 2012

  • Fix: Show all printers, including ones marked as dormant Git logo
  • Fix: Issue #16 – Arch package, cupsddk dependency is discontinued. Git logo
  • Fix: Depend on system-config-printer-libs instead of python-cups in RPM Git logo
  • Change: Backwards compatiblity changes for older versions of python Git logo

20120908 Release – 8th September 2012

  • Fix: Issue #13 – Invalid CUPS printer name generated Git logo

20120823 Release – 23rd August 2012

  • Fix: Fixed error when trying to print to printers with an account name containing an ‘@’ Git logo

20120818 Release – 18th August 2012

  • New: Multiple Google user account support, you can now add printers from multiple Google Cloud Print accounts Git logo
  • New: Depreciated Google ClientLogin replaced with OAuth2 implementation – Google Account password no longer stored locally – when upgrading you will need to remove and re-add your Google Account and printers Git logo
  • Fix: No longer blindly overwrite printers when adding a new printer with same name as an existing printer Git logo

20120812 Release – 12th August 2012

  • New: PPD of cloud printers now replaced when upgrading CUPS Cloud Print Git logo
  • New: PPD now has an IEEE 1284 device id Git logo
  • New: Device and options now logged when printing Git logo
  • New: Cloud Print printers now listed as ‘Discovered Network Printers’ when adding printers Git logo
  • New: Added Colour Model option to CUPS PPD, send Colour option to Google when printing to colour printers Git logo
  • Fix: Querying available options no longer hangs Git logo
  • Fix: PDF files should now print correctly Git logo
  • Fix: More Python3 fixes Git logo
  • Fix: Fixed error when installing printer with non ASCII characters Git logo
  • Fix: Check that files exist before attempting to delete them Git logo

20120513 Release – 13th May 2012

  • Security: cloudprint.conf now only accessible by root and cups Git logo
  • New: Added Arch Linux support Git logo
  • Fix: Require python 2.7 Git logo
  • Fix: Log permissions now fixed when recreated by logrotate Git logo
  • Fix: Fixes to dependencies to require ghostscript Git logo
  • Fix: Backend script no longer fails if cannot write to log file Git logo

20120422 Release – 22nd April 2012

  • New: When setting up printers, prompt for an optional prefix for printer names Git logo
  • New: Added debian and redhat support, package build stubs now in repository Git logo
  • Change: Renamed Gentoo ebuild to be consistent with new RPM and Deb packages Git logo

20120123 Release – 23rd January 2012

  • Fix: Require python2 instead of any version of Python Git logo
  • Fix: Only try to convert to PDF if file isnt already a PDF Git logo
  • Fix: Cast to string on joining string as part of request, fixes an issue with some files printing Git logo

20111110 Release – 11th November 2011

  • New: Added utility to list printers Git logo
  • New: Added setup script Git logo
  • New: Added application specific password support Git logo
  • Fix: Print jobs now titled with job name from CUPS instead of hardcoded Git logo
  • Fix: PPD now presents as a colour printer Git logo
  • Fix: Now compatible with BSD install Git logo
  • Fix: No longer send PDF data twice, should half printing time Git logo
  • Fix: Make install should now install all *.py files Git logo
  • Fix: Errors now reporting properly to CUPS Git logo
  • Fix: Check for pstopdf if ps2pdf doesnt exist Git logo

20111011 Release – 11th October 2011

  • Initial Release Git logo

I generally use Gentoo , CentOS and Ubuntu, but I’ve tried to create packages to suite 99% of Linux distributions. All packages are set as noarch ( or the distro’s equivalent ), so should work on any CPU architecture ( x86, x86_64, ARM, MIPS etc ).

If there is a (Free) OS which you require packages for, please comment below and I’ll investigate creating packages for it.

Please select your Operating System for installation instructions:

Ubuntu 12.04+ , Kubuntu 12.04+ , Xubuntu 12.04+ , Mint 13+ etc - PPA Based Installation

Run in a terminal:

sudo add-apt-repository ppa:simon-cadman/niftyrepo
sudo apt-get update
sudo apt-get install cupscloudprint
sudo /usr/share/cloudprint-cups/

Follow the instructions about authorising CUPS Cloud Print to use your Google Account for printing, and you're done.

Debian Squeeze+ , MEPIS 11+ etc - .deb file based installation

If your OS supports PPA repositories, it is preferable to install using PPAs, you will then automatically receive updates when new versions are released.

If you need to install using a deb file, run in a terminal ( as root, or using sudo ):

dpkg -i cupscloudprint_20160502-1_all.deb
apt-get -f install

Follow the instructions about authorising CUPS Cloud Print to use your Google Account for printing, and you're done.

CentOS 6+ , Fedora 19+ , Oracle 6+ , RHEL 6+ , Scientific Linux 6+ etc - Yum Based

Note: RHEL based distributions require the EPEL repository installed ( see here or here for examples of how to install the repository ).

Create a file in /etc/yum.repos.d/niftyrepo.repo with this text inside ( as root, or using sudo ):


Then run in a terminal ( as root, or using sudo ):

yum update
yum install cupscloudprint
Note: Users wit recent versions of Fedora should use 'dnf' instead of yum, and may also need to install the python-cups package manually.

Follow the instructions about authorising CUPS Cloud Print to use your Google Account for printing, and you're done.

OpenSUSE 11.1+ , SUSE EL 11+ etc - Zypper Based

Create a file in /etc/zypp/repos.d/niftyrepo.repo with this text inside ( as root, or using sudo ):


Then run in a terminal ( as root, or using sudo ):

rpm --import
zypper update
zypper install cupscloudprint

Follow the instructions about authorising CUPS Cloud Print to use your Google Account for printing, and you're done.

.rpm file based installation

If your OS supports Yum repositories, it is preferable to install using a Yum repo, you will then automatically receive updates when new versions are released.

Run in a terminal ( as root, or using sudo ):

rpm --import
rpm -i 

Follow the instructions about authorising CUPS Cloud Print to use your Google Account for printing, and you're done.

Gentoo, Sabayon, Funtoo etc - Portage Ebuild

The preferred way to install CUPS Cloud Print on Gentoo is using my layman repository - simply run in a terminal (as root with layman installed):

layman -o -f -a niftyrepo
emerge -va cupscloudprint

Then follow the instructions about authorising CUPS Cloud Print to use your Google Account for printing.

You can alternatively download the latest ebuild manually to a local overlay and emerge as normal.

Arch, Chakra etc - Arch Pacman

Add to /etc/pacman.conf:

Server =
SigLevel = Required TrustAll

Then run in a terminal ( as root, or using sudo ), answering 'Y' when asked to the import PGP key ( 2048R/C5541D9D ):

pacman -Syu cupscloudprint

Follow the instructions about authorising CUPS Cloud Print to use your Google Account for printing, and you’re done.

You can alternatively download the latest arch PKG file and install as normal.

Other (Source install) - Source Install

Run in a terminal ( as root, or using sudo ):

git clone git://
cd CUPS-Cloud-Print/
git checkout tags/20160502
make install

Follow the instructions about authorising CUPS Cloud Print to use your Google Account for printing, and you're done.

When upgrading, you should always run:


Mac OS X 10.7+ - Darwin Based

Download and run the latest package from here, then run in a terminal:

sudo /Library/cloudprint-cups/

Follow the instructions about authorizing CUPS Cloud Print to use your Google Account for printing, and you're done.

FreeBSD, PC-BSD etc - FreeBSD based

CUPS Cloud Print is now in FreeBSD ports! See here for installation instructions.
Instructions for running source install
Run in a terminal ( as root, or using sudo ):
git clone git://
cd CUPS-Cloud-Print/
git checkout tags/20160502
gmake install
Follow the instructions about authorising CUPS Cloud Print to use your Google Account for printing, and you're done. When upgrading, you should always run:

After installing CUPS Cloud Print ( see Installation ), you should first run the setup script, as root ( if you install from source the path will be /usr/local/share/cloudprint-cups ):


This will create a CUPS printer for each Google Cloud Print printer on your account, and ( if it is the first time you have installed CUPS Cloud Print ) prompt you to allow CUPS Cloud Print to print using your account.

If you notice any bugs or would like to request a feature, please create an issue on the project’s Github issues page .

Which platforms can CUPS Cloud Print run on?

The supported operating systems are listed on the nstallation instructions section. It should work on any platform which those operating systems run on ( Raspberry Pi, embedded hardware such as routers, etc ).

I also generally prefer to only support Free operating systems for my software.

How do I remove google accounts from CUPS Cloud Print?

The script will remove accounts from CUPS Cloud Print:

sudo /usr/share/cloudprint-cups/

I've shared a CUPS Cloud Print printer over Samba for a Windows client, which printer driver should I use?

The "Samsung CLP-660 Series PS" printer driver works under Windows 7, but it may not work 100%, as it is unsupported. I believe basic printing does work though.

Google has added new options for my printer, but CUPS is not showing them as options, how to I force CUPS Cloud Print to refresh the printer capabilities?

Running the upgrade script refreshes the available printer options:

sudo /usr/share/cloudprint-cups/

313 thoughts on “CUPS Cloud Print”

  1. I managed to solve that problem. There is no PPA for 16.04.

    Now, I get this
    sudo /usr/share/cloudprint-cups/
    You currently have these accounts configured:
    Add more accounts (Y/N)? n
    Add all Google Cloud Print printers from to CUPS (Y/N)? y
    Use a prefix for names of created printers (Y/N)? n
    Error adding: Dell_C1765nfw (1280, u’server-error-internal-error’)
    Error adding: Canon_MF3110_-_Shed (1280, u’server-error-internal-error’)
    Error adding: Save_to_Google_Docs (1280, u’server-error-internal-error’)
    Added 3 new printers to CUPS

  2. Hi All,

    I’ve just released a new version of CUPS Cloud Print – see here – packages are currently rolling out to repos.

    This should hopefully solve a lot of problems people have been having recently ( newer Ubuntu version support, supports CDD instead of the broken legacy capabilities system etc ).



  3. Hello, I tried to install it on Antergos (Cinnamon) when trying to add printer I get this:

    ERROR: Failed to decode JSON, value was:

    User credentials required

    User credentials required
    Error 403

    Traceback (most recent call last):
    File “/usr/share/cloudprint-cups/”, line 113, in
    printers = printer_manager.getPrinters()
    File “/usr/share/cloudprint-cups/”, line 108, in getPrinters
    responseobj =
    File “/usr/share/cloudprint-cups/”, line 93, in search
    return self.doRequest(‘search?connection_status=ALL&client=webui’)
    File “/usr/share/cloudprint-cups/”, line 86, in doRequest
    raise e
    ValueError: No JSON object could be decoded

    How can I solve it?

  4. Hi there, just trying out cupscloudprint_20160502-1_all.deb in Debian Wheezy, installation instructions go fine. Print jobs complete in CUPS but don’t print and just show up as an Error in the jobs list of the Google Cloud Print management console. Printer is a Canon LBP 5100 connected to a Windows 10 PC. Any clues on what I should do to try and find out what details of the error are? Thanks

  5. hi, i just installed your driver as i got today my new printer, i’m running arch linux and installed the binary pkg from your custom repository, installation and printer setup went well but every time i try to print something the print job stops and i get the error

    “Error response from Cloud Print for type pdf: Unable to analyze print job ticket.” (the actual response is roughly translated from italian)

    am i missing something? it just returns this error even if i try to print plain text or images..

  6. Thanks for this great software.

    I’m installing a FujiXerox Docuprint p265 dw on a home network,
    direct connection to my Fritz! router, shows as
    I executed your .py on my chromebook c720 under crouton xubuntu 14.04,
    sudo /etc/init.d/cups restart

    You currently have these accounts configured:
    Add more accounts (Y/N)? N
    Add all Google Cloud Print printers from to CUPS (Y/N)? Y
    Use a prefix for names of created printers (Y/N)? Y
    Prefix ( e.g. GCP- )? FX-
    Added FX-Save_to_Google_Drive
    Added 1 new printers to CUPS
    Add all Google Cloud Print printers from to CUPS (Y/N)? N
    Not adding printers automatically
    1) Save to Google Drive
    Add printer (1-1, 0 to cancel)?

    Didn’t know how to respond! I haven’t installed anyGoogle Cloud Print printers,
    the goal was to install this one as a GCP printer.
    Any suggestions please?

  7. Follow-up to my earlier issue:

    After adding p265dw in CUPS as (Generic Laserjet- gutenprint)
    to Google Cloud Print from a linux server with Chrome browser -it found the network printers (2) –
    I ran the script again. This gave three options to add in the prompt as above:
    1) same as above
    2) another printer
    3) the P265dw
    I chose 3, declined to add another.

    I now have listed on the chromebook/crouton/xubuntu-14.04:
    FUJI_XEROX_DocuPrint_P265_dw accepting requests since Fri 03 Jun 2016 16:38:22 AEST
    FX-FUJI_XEROX_DocuPrint_P265_dw accepting requests since Fri 03 Jun 2016 16:26:23 AEST
    FX-Save_to_Google_Drive accepting requests since Fri 03 Jun 2016 16:02:50 AEST

    The FX- printers set by the py, the FUJI_ by Google Chrome I guess.
    Is the approach above the recommended one for efficient wireless printing from my chromebook?
    Will the printer be available when I’m not in the crouton shell, but just original chromebook login?

    Thanks Simon. A good result for me.

  8. Thank you!

    I was looking for a solution like this! I installed it without problem and maybe after my spring exams session i will have a look to the source code 😛

  9. HI,

    Would it be possible to package this for Raspbian (Raspberry Pi)?



  10. Hi,

    I met the same problem than mellotanica though job submitted directly from google docs (i.e. not going through cupscloudprint) do work.
    I’m using mint 17.3 x64 xfce.

    All the best

  11. This is the perfect solution for those who want to print out from Banana Pro running armbian with Canon printer as well as Raspberry pi user.
    Because Canon only releases driver for Intel/AMD Linux but ARM core, many people are suffering from difficulties in printing.
    Since recent Canon printer has web service print function with Google Cloud Print, it’s pretty easy to configure using this even from source compiling.
    I also amazed that this solution could perfectly handles Japanese character as well as ascii text and graphics.
    This means, your solution can handle all double-byte character (UTF-8) languages without any trouble. Super!

    Anyway, Thank you so-much. I really appreciate you all!!

  12. powerful and simple to install (ubuntu15.10).
    Cloud Printer appear in the systems printing dialog.

    Thank you

Leave a Reply

Your email address will not be published. Required fields are marked *