PaperCut Hive and Jamf School

For several years now, my school has taken an anti-managed approach to printing. With a range of Sharp multifunction copiers available around the school, as well as Epson Workforce Pro inkjet printers dotted around in offices, people can just print from Mac or iPad using AirPrint to wherever they fancy. And it generally ‘just works’.

So why change it?

One issue was the need to upgrade all of the Epson inkjets. They certainly have been way more economical than the HP laser printers that they replaced, but that was 7 years ago and they are now becoming rather unreliable.

But they do have one advantage, which was confidentiality: rather than printing to a copier down the corridor, the inkjets generally sit next to the person printing to them, reducing any data breach scenarios where a sensitive safeguarding document ends up muddled up with the Year 3 spelling homework.

What we really need is a proper, managed, ‘follow-me’ print solution, where people could print to a central queue and then beep their fob on any copier to release the print job.

As we don’t have any traditional servers, my interest was piqued by PaperCut Hive, a cloud-based serverless managed print solution that turns each computer on your network into an edge mesh node that magically transports print jobs from your device to the printer. After exploring various options, we got Sharp to set it up for us on our existing Sharp copiers, with the aim that the remaining Epson inkjets would be slowly retired once the remaining stocks of ink are exhausted.

The technology is still rather cutting edge, rather than their more established PaperCut MF offer, so there was a little bit of a process of figuring out how to get it all working in our weird Apple-only, Jamf School setup. But we managed to, so here’s some top tips should you be trying to do something similar!

User accounts

For anyone to print, they must have a PaperCut Hive account. Thankfully, it’s possible to automatically sync with an existing identity provider (ie Google Workspace or Microsoft Entra ID) as well as authenticate using those services too. So this was quite easy to set up.

iPad printing

To be able to print from iPad, you must either first turn on the ‘cloud node’ (which allows users to print from anywhere) or promote some existing computer nodes to ‘super nodes’. We made use of our Mac mini caching servers for this as they already had static IP addresses.

A profile must then be installed on the iPad via their PaperCut Hive iPhone app. Once the user has signed in, they follow instructions in the app and then head to Settings app to get the profile installed. This is a little long-winded, but once it’s done the user can then just choose ‘PaperCut Printer’ in the iPadOS print dialog to send it to PaperCut Hive.

Mac printing

PaperCut seems to have this lovely idea that users will just sign into the PaperCut Hive portal and install the software for their latte-sipping trendy loft office space MacBook Air themselves.

Which doesn’t work so well in a school. First, users don’t have permission to install apps. Second, users log into lots of different Macs and would need to do this every time they visit a new computer. So this wasn’t going to wash.

Thankfully, PaperCut do provide installers and instructions for how to get this setup on Mac using Jamf Pro. We no longer use Jamf Pro so needed to figure out how to get this working with Jamf School. After lots of experimentation, Google searching and Gemini interrogation, as well as a brief chat to PaperCut’s friendly support, I was able to figure out the following:

  • The Mac software has two components — the edge mesh part, which just runs in the background, and then the user software, which connects up the local Mac account to the PaperCut Hive account and makes it all work properly.
  • The enterprise installer for all this is a zip file that has to be run via a bash command. This installs the edge mesh for the computer the first time it runs, but also installs the print software for the currently logged in user. So therefore it has to be run (at least potentially) whenever anyone logs into the computer.

Jamf Pro has the concept of ‘caching’ an installer file that then can be run at a specific moment (i.e. when the user logs in) but unfortunately Jamf School does not. So I instead packaged up the zip file to install into /Library/Application Support/JAMF.

Anyhoo, here’s the script I wrote/vibe coded (yay Gemini!):

#!/bin/bash

# Get the logged-in user to target the correct home directory
CURRENT_USER=$(stat -f%Su /dev/console)
USER_HOME=$(dscl . -read /Users/"$CURRENT_USER" NFSHomeDirectory | awk '{print $2}')

# Define where Zip file lives
ZIP_PATH="/Library/Application Support/JAMF/papercut-hive.zip"
TMP_DIR="/var/tmp/papercut_install"

This figures out who the current user is, what the current user home folder is, defines where the mystical zip file will be found and then specifies a temporary folder.

# Updated path to use the actual user's home directory
PLIST_PATH="$USER_HOME/Library/LaunchAgents/pc-print-client-service.plist"

# Check if the service is already installed for this user
if [ -f "$PLIST_PATH" ]; then
echo "PaperCut Hive is already installed for $CURRENT_USER. Exiting."
exit 0
fi

This checks to see if the PaperCut Hive configuration is installed for that user and then stops the script if it is because clearly this has been run before and everything is hunky dory.

if [ -f "$ZIP_PATH" ]; then
echo "Installer found. Preparing installation..."

mkdir -p "$TMP_DIR"
cp "$ZIP_PATH" "$TMP_DIR/papercut-hive.zip"

cd "$TMP_DIR" || exit
unzip -q -o ./papercut-hive.zip

# The unzip usually creates a directory; ensure we enter it
# Using a wildcard in case the folder name varies slightly
cd hive_installer/ || exit
chmod +x install.sh

echo "Running PaperCut Hive installer..."
# Running the installer
./install.sh xxxxxx yy zz

# Cleanup
rm -rf "$TMP_DIR"
echo "Installation complete."
else
echo "Error: papercut-hive.zip not found at $ZIP_PATH"
exit 1
fi

If that configuration file isn’t there, it then runs the installer scripts from the zip file. With the ‘install.sh’ command, xxxxxx is the system key; yy is the regional data centre code (e.g. au,ca, us,eu,uk); zz is your organisational ID.

From the user’s perspective, they just have to choose ‘PaperCut Printer’ in the print dialog, and then authenticate with their PaperCut Hive credentials in a web browser if this is the first time they’ve tried printing on that machine.

Releasing print jobs

There is an embedded PaperCut Hive app that can be installed on the copiers, which we got Sharp to do for us.

Once this is all working, the user just has to enter their user code (which can be found on the user portal) and then they can release print jobs, as well as scan to email or Google Drive, as well as use the copy functions on the copier.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.