Raspberry Pi as a Check-Ins Printer Station
This document outlines the steps I use to set up a Raspberry Pi as a Check-in Printer Station. That is, a "computer" that connects to a Dymo printer and accepts print jobs from Planning Center Check-Ins running on a tablet, phone, or another computer.
This repo also includes a script that modifies the Pi and installs software.
Dymo printers are cheap, but I haven't found a way to connect them directly to an iPad. Since our church uses iPads for check-in, we like to print labels from them without a bulky, expensive PC/Mac sitting in the middle of it.
The Raspberry Pi is an inexpensive alternative to a full computer, but it does take a bit more work to get it all set up correctly.
How it Works
We install the Planning Center Check-Ins app on the Raspberry Pi and set it to start automatically when the Pi boots up. We also install other necessary software and connect the printer with Cups.
Once everything is set up, all your Check-Ins stations can see the Pi as another station and print to it, even though it has no display or keyboard.
Of course, you can hide the Raspberry Pi away under a table or whatever.
What You'll Need
A Planning Center Check-Ins subscription
An iPad or other tablet to run Check-Ins app
A Raspberry Pi 4 with at least 2 GB of RAM.
This will not work on an older Raspberry Pi.
A Dymo printer
I have only tested with the Dymo LabelWriter 450 and 450 Turbo.
Other Dymo printers should work out of the box, but I haven't tested any others.
Further: A printer made by another brand (not Dymo) could probably be made to work with this setup, assuming there is a Linux print driver for it. There is not any Dymo-specific software used, but the setup script only knows how to install Dymo printers. You would need to set up the printer manually or tweak the script.
The General Process
I put together a video showing generally how everything is installed. Be sure to follow the detailed instructions below when doing these steps yourself.
Enable Check-Ins "Universal Printing" here.
On a desktop computer, download Raspbian Buster from here. Note: this is the only version of Raspbian I have tested this with. If you choose a newer version, you're on your own!
Use a tool like Etcher to write the downloaded image to your SD card.
After the image is written to the SD card, open the "boot" partition. On Mac and Windows, the boot partition should appear as a drive in Finder/Explorer. You'll see files already there. If you don't see the boot partition, you may need to remove the SD card and re-insert it for the operating system to see the drive.
Create a new file there called "ssh" or "ssh.txt". You can use a program like TextEdit or Notepad. The file does not need to have anything inside it. Just an empty file with the name "ssh.txt" or "ssh" is fine.
Put the SD card in your Raspberry Pi 4, connect it to your physical network with an ethernet cable, then power it on.
Determine the IP address of your Raspberry Pi. You can either do this from your router, if you can list DHCP leases there, or by using a tool like nmap.
Here is how to search for your Raspberry Pi with nmap:
sudo nmap -p 22 -open 192.168.1.0/24
The last argument tells nmap about your local network. The most typical is
192.168.1.0/24, but if you have another network IP address and range, adjust appropriately. For instance, if your network IP addresses are 10.0.x.y, then you might need to use
10.0.0.0/16. You can use a tool like the Subnet Calculator to help.
The resulting output will look something like this:
Nmap scan report for 192.168.11.9 Host is up (0.89s latency). PORT STATE SERVICE 22/tcp open ssh MAC Address: 80:2A:A8:68:24:53 (Ubiquiti Networks) Nmap scan report for 192.168.11.10 Host is up (1.0s latency). PORT STATE SERVICE 22/tcp open ssh MAC Address: 80:2A:A8:7C:05:4D (Ubiquiti Networks) Nmap scan report for 192.168.11.179 Host is up (0.065s latency). PORT STATE SERVICE 22/tcp open ssh MAC Address: 00:11:24:21:19:FA (Apple) Nmap scan report for 192.168.11.207 Host is up (0.0090s latency). PORT STATE SERVICE 22/tcp open ssh MAC Address: B8:27:EB:EE:C9:A3 (Raspberry Pi Foundation) Nmap done: 256 IP addresses (30 hosts up) scanned in 15.45 seconds
You can see from the output, that only one device on my network responds to the SSH port 22 and has a Mac Address assigned to Raspberry Pi Foundation. This is the Pi I'm looking for!
SSH to the Pi and change the default password. Be sure to substitute the IP address with the one you found in the step above.
Enter the default password:
rapsberryone last time, then enter your new desired password.
Download and run the setup script.
Note: You should still be connected to the Pi. This command will run remotely on the Pi itself.
curl https://raw.githubusercontent.com/seven1m/rpi-check-in-printer/latest/setup.sh -o setup.sh chmod +x setup.sh ./setup.sh
Assuming you made it through the setup process and you were able to print a test label, you can continue to the next step.
DO NOT CONTINUE until you can get a test label to print using the setup script above.
Use VNC to connect to the Pi.
Download and run RealVNC.
Use the IP address you discovered earlier plus
:1to connect to the Pi with RealVNC Viewer. The full address will look like something this:
The VNC password is the one you set earlier.
Set up the Planning Center Check-Ins Software.
You should see Planning Center Check-Ins asking you to set up a new station.
Go through the process to create a new station. Give it a name, and accept the defaults for everything else.
For the station name, I use something like "Welcome Center RPi" so I know where it is and what type of station it is.
You should see this dialog window:
Be sure to select "Remember this decision" and click the "Allow" button.
Point your iPad or other station to the Raspberry Pi:
Visit the stations page in Check-Ins and click to open the settings for your iPad station.
In the "Print Station" drop-down, choose your Raspberry Pi station you just created.
Do a test check-in!
DO NOT CONTACT PLANNING CENTER SUPPORT ABOUT ISSUES WITH THIS SETUP. THEY WILL NOT BE ABLE TO HELP YOU.
Problem: Printing doesn't work!
Here are some troubleshooting steps, starting closest to the hardware:
Make sure the setup script was able to print a test label. If not, you may need to figure out why the command
echo "test" | lpr -P "Dymo" -isn't working.
Check that the Dymo printer is setup via Cups at https://IPADDRESS:631. Print a test page from this UI.
Use VNC to connect to the Pi and visit the Print Setup page in the Check-Ins app. You can get there by pressing Ctrl-2.
Problem: Labels print slow and/or cut-off
Sometimes, labels will print extremely slow and pause mid-way through printing a label.
I have found that some Dymo printers do not work well with my
dymo_lag_fix.rb script. It's not an issue with a particular model, but rather seems to be a random problem. My solution is to swap printers around (often times even the same exact model number) and everything starts working as expected!