This guide will show you how to turn an Orange Pi Zero into a Google Cloud Print server.
Orange Pi Zero Setup
Download Debian Jesse from Armbian.
Download Etcher, use it to write the Armbian image to the SDCard. A 4gb card turned out to be the perfect size.
Power the Orange Pi via micro USB and connect the serial port via a CP2012, or your favorite USB/Serial adapter.
On a Mac (or linux) you can use this screen command to connect to the serial terminal. Use your favorite Windows terminal emulator to connect with the same properties on Windows:
screen /dev/tty.SLAB_USBtoUART 115200 8N1 flow off
The default login is root
and the password is 1234
, you'll be required to change this on login
Once you've logged in and setup a new root password, run nmtui
to setup the wireless network, which will be working out of the box:
nmtui
Enter a connection name, SSID and password. Save, quit and your board should be connected to WiFi.
Update the package list and upgrade to the latest packages with:
apt-get update
apt-get upgrade -y
SDCard Resize
If you need to re-size your SDCard, maybe you copied an image from another size disk, after the initial boot, run:
update-rc.d firstrun defaults
shutdown -r now
And after the restart, you'll have a bigger disk. Don't worry, this won't delete anything.
Printer Driver and CUPS setup
Find a driver for your printer. Google around for linux
+ printer make and model
You can also try to apt-cache search epson
or whatever make of printer you have.
I found my printer drivers in:
apt-get install -y printer-driver-escpr
Install the CUPS print server
apt-get install -y cups cups-client cups-common cups-pdf
Edit the CUPS configuration to listen on the Orange Pi's IP (not just localhost):
/etc/cups/cupsd.conf
Change Listen localhost:631
-> Port 631
and then restart CUPS with service cups restart
This would be a good time to set a static IP or assigned IP for your Orange Pi via your router, so you can always find it by the same IP.
Then, open http://[Orange Pi IP]:631
in a browser on your network.
Add a user for cups administration. This adds the user pi
to the lpadmin
group:
usermod -a -G lpadmin pi
Go and Google Cloud Print Installation
Install the dependencies
apt-get install -y gcc make build-essential libcups2-dev libavahi-client-dev git bzr bison
Install Go
# install gvm
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
# install go 1.4 (required for 1.6)
gvm install go1.4.3
# use go 1.4
gvm use go1.4
# install go 1.6
gvm install go1.6.4
# use 1.6
gvm use go1.6
# check go version
go version
Install Google Cloud Print Connector with (including the ...
)
go get github.com/google/cloud-print-connector/...
This will install the binaries in /root/.gvm/pkgsets/go1.6.4/global/bin/
, which we can add to the system path if so desired.
gcp-connector-util
gcp-cups-connector
Now run ./gcp-connector-util init
and follow the guided prompts.
Start the service with
./gcp-cups-connector --config-filename gcp-cups-connector.config.json --log-to-console
And check https://www.google.com/cloudprint/#printers to see if your printer is available.
Finally edit gcp-cups-connector.config.json
and choose your logging location.
Start on boot
To start the service on boot, use this awesome little script by Vincze Janos Istvan
Save this to some location, like /opt/gcp/startup.sh
. You will probably need to mkdir -p /opt/gcp
first.
#!/bin/bash
BINDIR=/root/.gvm/pkgsets/go1.6.4/global/bin
IFS='
'
ps aux| grep -v grep | grep -q gcp-cups-connector
if [ $? -eq 0 ]
then
echo "Already running"
exit 0
fi
OK=0
while [ $OK -eq 0 ]
do
YEAR=$( date +%Y )
if [ $YEAR -gt 2015 ]
then
echo ok
OK=1
$BINDIR/gcp-cups-connector --config-filename $BINDIR/gcp-cups-connector.config.json
else
echo "Sleep for 1 secs"
sleep 1
fi
done
Add the following line to /etc/rc.local
to run the script on startup:
/opt/gcp/startup.sh &
Links
Documentation for the board is here: http://linux-sunxi.org/Xunlong_Orange_Pi_Zero#Powering_the_board