Sunday, May 26, 2013

Raspberry Pi as Google Cloud Print Connector

The Idea

After many offices are already working with an infrastructure of printers or are in need of special printers, there are possibilities to connect them with a computer that is used as a gateway between printer and  Google Cloud Print. A low priced, energy-saving and small solution is given by installing a Raspberry Pi. It is a one-board-computer equipped with an ARM CPU at 700MHz and 512MB RAM, not bigger than a usual credit card. Therefore the device fits perfectly behind a printer and does not cause as much costs and maintenance effort as a regular PC.


The Realization

First of all you need to set up a Raspberry Pi with the basic Raspbian operating system that starts into a X
Window Desktop Environment. (After there are couples of installation instructions at the internet, this step will be skipped)
Next step is to install additional packages and add the standard user to the system printer group. This is done by executing the following commands in a "Terminal":
pi@raspberrypi:~# sudo apt-get install chromium-browser cups
pi@raspberrypi:~# sudo adduser pi lpadmin
The first command will install the required packages to control and access local connected printers as well as the open source version of the Google Chrome Browser to connect these printers to Google Cloud Print. The second line adds the Raspbian default user to the system group "lpadmin" to grant the rights to administrate all connected printers through cups.
In this case we need to use Chromium because the Google Chrome Browser is not a open-source project and only supports x86-architectures. So far there is no possibility of using the official Google Chrome browser on a Raspberry Pi.

After you have completed these steps you are ready to start chromium and open http://localhost:631. This refers to the web-interface of cups where you can add all local connected printers to the system. After there are couples of "Howtos" at the internet, the step of installing a printer is skipped.


Finally you have to connect to your Google Account through the Chromium to access the above-installed printers through Google Cloud Print. To realize this, you need to show the advanced settings and scroll down to "Google Cloud Print".


After pressing "Add printers" you will be redirected to the Google Cloud Print page and need to authenticate against your Google Account with your username and password. Be aware, that "application-specific" passwords won't work. The Raspberry Pi needs to be connected to the internet to successfully complete this step.


Clicking on "Add printer(s)" will complete the procedure and your printer will show up at https://www.google.com/cloudprint. From now on the Raspberry Pi can run by itself and will add or update the connected printer to Google Cloud Print at start. There is no more need of any human interface devices such as a keyboard, mouse or a monitor.

Optional

For more comfort of configuring the printers remote you can open the cups web-interface to be accessible over your local area network. Furthermore, a SSH-Server can be used to administrate the entire device remotely.

The Advantages

There are other possibilities to connect to Google Cloud Print (e.g. by using the python script by Jason Michalski). It uses a XMPP connection over Google Talk to connect to Cloud Print. After Google plans on reorganizing Google Talk and upgrading to HangOuts this possibility might stop working due to missing updates. After Chromium is published by Google they will update Chromium accordingly to work hand-in-hand with all provided services.

Conclusion

As official reseller of Google Apps for Business we are running a couple of Chromebox and Chromebook devices ourselves as well as using Google Apps for everyday office communication and can use the above-mentioned solution to ensure printer access from every machine. Under the brand "cloudwürdig powered by SOTEC" we are supporting businesses and develop solutions to migrate local services and infrastructure into the cloud.